Обновление текстуры в OpenGL с помощью glTexImage2D - PullRequest
14 голосов
/ 26 марта 2012

Являются ли glTexImage2D и glTexSubImage2D единственными способами передачи буфера пикселей в текстуру?

В настоящее время я использую в настройке функцию glTexImage2D передавая в качестве буфера значение null, а затем в цикле рендеринга я вызываю glTexSubImage2D с новыми данными буфера на каждой итерации.

Но зная, что текстура не изменит никакого свойстватакие как размеры, есть ли более эффективный способ передачи фактических данных пикселей в текстуру рендеринга?

1 Ответ

27 голосов
/ 06 ноября 2012

В современных OpenGL есть 4 различных способа обновления 2D текстур:

  1. glTexImage2D - самый медленный, воссоздает внутренние структуры данных.

  2. glTexSubImage2D - немного быстрее, но не может изменить параметры (размер, формат пикселя) изображения.

  3. Визуализация в текстуру с FBO - обновление текстуры полностью на GPU, очень быстро. Обратитесь к этому ответу для получения более подробной информации: https://stackoverflow.com/a/10702468/1065190

  4. Pixel Buffer Object PBO - для быстрой загрузки из CPU в GPU, не поддерживается (пока) в OpenGL ES.

...