Должен ли glEnable (GL_TEXTURE_2D) применяться на единицу текстуры - PullRequest
9 голосов
/ 28 октября 2010

В OpenGL я всегда понимал, что glEnable(GL_TEXTURE_1D), glEnable(GL_TEXTURE_2D) и / или glEnable(GL_TEXTURE_3D) (и соответствующий glDisable) является параметром на единицу текстуры.

Недавно я пытался подтвердить это, но не нашел какой-либо четкой документации, подтверждающей тот или иной вопрос по этому вопросу.

Проще говоря, и в коде, если я буду делать это

glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
... bind etc ... 

glActiveTexture(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);
... bind etc ...

или это

glEnable(GL_TEXTURE_2D);

glActiveTexture(GL_TEXTURE0);
... bind etc ...

glActiveTexture(GL_TEXTURE1);
.... bind etc ...

Я надеялся найти некоторую ясность.

Ответы [ 3 ]

8 голосов
/ 28 октября 2010

Это на единицу текстуры.

Из спецификации GL1.5, 3.8.15:

Каждая единица текстуры включена и привязана к объектам текстуры независимо от других единиц текстуры

7 голосов
/ 28 октября 2010

Это действительно на единицу текстуры.Самой последней документацией, в которой я обнаружил упоминание об этом явным образом, была спецификация Open GL 2.1 (обновление 2006 года) здесь

В разделе 3.8.16: Применение текстуры

Это, вероятно, упоминается где-то в новых спецификациях, но они были сильно реорганизованы.Вы можете посмотреть все спецификации версий Open GL на веб-сайте opengl org (я хотел опубликовать ссылку, но я не могу опубликовать более одной).

1 голос
/ 29 августа 2013

Если вы используете GLSL шейдеры в OpenGL, вызов glEnable(GL_TEXTURE) не влияет.

Кроме того, если вы собираетесь перейти к профилю ядра OpenGL 3.x, имейте в виду, что glEnable(GL_TEXTURE)устарела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...