2011-08-30 11 views
5

Tworzę odtwarzacz wideo OpenGL, używając Ffmpeg, a wszystkie moje filmy nie mają mocy 2 (ponieważ są to normalne rozdzielczości wideo). Działa z dobrym fps dzięki mojej karcie nvidia, ale odkryłem, że nie będzie działać na starszych kartach ATI, ponieważ nie obsługują one tekstur o braku mocy dwóch.O ile bardziej wydajne są tekstury power-of-two?

Używam tego tylko na karcie Nvidii, więc nie przejmuję się zbytnio problemem ATI, ale zastanawiałem się, jak bardzo poprawiłbym wydajność, gdyby texturzy byli power-of-2 ? Czy warto je wypychać?

Ponadto, jeśli warto, jak mam je wypchnąć do najbliższej większej potęgi?

Odpowiedz

3

Podczas pisania odtwarzacza wideo należy zaktualizować teksturę za pomocą glTexSubImage2D(). Ta funkcja umożliwia dostarczanie obrazów o rozmiarach równomiernie rozmieszczonych, które zostaną umieszczone w docelowej fakturze. Aby najpierw zainicjować teksturę, należy wywołać glTexImage() ze wskaźnikiem danych o wartości NULL, a następnie wypełnić dane.

Wzrost wydajności czystej mocy 2 tekstur silnie zależy od użytego sprzętu, ale w skrajnych przypadkach może on wynosić nawet 300%.

+0

Okay, używam już glTexSubImage2D() tak jak mówisz, ale kiedy inicjuję teksturę za pomocą glTexImage2D(), powinienem utworzyć ją jako potęgę dwóch, a następnie uporządkować wywołania glTexCoord2f(), aby pokazać tylko część "wideo" "tekstury dla maksymalnej wydajności? –

+0

W dużej mierze zależy to od twojej implementacji OpenGL (przeczytaj GPU). Wszystkie najnowsze procesory graficzne mają tylko bardzo mały hit wydajności dla NPO2 – datenwolf

Powiązane problemy