Состояние GL для привязок - это одно имя текстуры на цель (т.е. 1D / 2D / 3D / куб). Так что при звонке
glBindTexture(GL_TEXTURE_2D, my2dTex)
glBindTexture(GL_TEXTURE_1D, my1dTex)
GL запомнит обе настройки.
Теперь ответ о том, какой из GL будет использовать , зависит от того, включен ли у вас шейдер.
Если шейдер включен, GL будет использовать все, что говорит шейдер. (основано на sampler1d / sampler2d ...).
Если шейдер не включен, то сначала он зависит от того, какой вызов glEnable был сделан.
glEnable(GL_TEXTURE_2D)
glEnable(GL_TEXTURE_1D)
Если включены оба , в спецификации есть правило статического приоритета (3.8.15 Применение текстур в спецификации GL 1.5).
Cube > 3D > 2D > 1D
Так что в вашем случае, если обе ваши текстурные цели включены, будет использоваться 2D.
В качестве примечания отметим, что шейдеру не важно , включена ли цель текстуры ...
Изменить, чтобы добавить:
А для людей, которые действительно хотят получить подробности, у вас всегда есть текстура, привязанная к каждой цели * каждой единице. Имя 0 (по умолчанию для состояния привязки) соответствует серии объектов текстуры, по одному на цель. glBindTexture(GL_TEXTURE_2D, 0)
и glBindTexture(GL_TEXTURE_1D, 0)
оба связывают текстуру, но не одну и ту же ...
Это исторический документ, заданный для соответствия поведению GL 1.0, где текстурные объекты еще не существовали. Я не уверен, что с этим устарел GL3.0.