Разница между glTexSubImage и функцией glTexImage в OpenGL - PullRequest
12 голосов
/ 09 марта 2010

В чем разница между двумя функциями? Есть разница в производительности?

Спасибо ..

Ответы [ 2 ]

20 голосов
/ 09 марта 2010

Вы создаете текстуру, используя glTexImage, а затем обновляете ее содержимое с помощью glTexSubImage. Когда вы обновляете текстуру, вы можете обновить всю текстуру или просто ее прямоугольник.

Гораздо эффективнее создать одну текстуру и обновить ее, чем создавать и повторно удалять ее, поэтому в этом смысле, если у вас есть текстура, которую вы хотите обновить, всегда используйте glTexSubImage (после первоначального создания) .

Для обновления текстуры могут применяться другие методы. Например, см. Эту статью о потоковой передаче текстуры для получения дополнительной информации.

(Первоначально в этом посте предлагалось использовать glMapBuffer для обновления текстур - см. Обсуждение ниже.)

1 голос
/ 09 марта 2010

Функции gl с «sub» в названии не ограничены степенями измерения 2. Как указывает gavinb, вам нужно использовать вариант non-sub один раз, чтобы задать общие размеры, но я не согласен, что повторный вызов non-sub варианта выполняется медленнее, чем использование «sub» для обновлений - графический процессор все еще можно перезаписать существующую текстуру на месте, если вы используете тот же идентификатор текстуры.

...