Вопрос glTexImage2D - PullRequest
       24

Вопрос glTexImage2D

1 голос
/ 17 июля 2011

Если я использую вызов glTexImage2D для создания текстуры с буфером, подобным этому:

glTexImage2D(GL_TEXTURE_2D /* target*/,
             0 /* level */,
             GL_RGBA /* internal format */,
             width /* w */,
             height /* h */,
             0 /* border */,
             GL_RGBA /* format (RGBA 4)*/,
             GL_UNSIGNED_BYTE /* type */,
             buffer /* pixel buffer */);

Могу ли я изменить буфер и ожидать, что текстура изменится вместе с ним?

Или текстура завершена после вызова?

Ответы [ 2 ]

6 голосов
/ 17 июля 2011

Нет, OpenGL создаст собственную копию текстуры, поэтому вы не сможете изменить ее, не копируя ее туда-сюда (но это также означает, что вы можете повторно использовать или освободить буфер.

2 голосов
/ 17 июля 2011

Если вы хотите изменить часть текстуры, вы часто будете использовать glTexSubImage2D. Обратите внимание, что эта функция ожидает, что новые данные будут смежными; так что, если вы изменили только маленький квадрат в середине вашей текстуры, это не лучшая идея, чтобы сделать изменения в вашем исходном буфере, потому что тогда вам придется отправить все пиксели для строк, которые вы изменили только затронутых столбцов.

...