подвержен ошибкам. Это всего лишь объяснение ОП по поводу этих явно противоречивых предложений.

аюсь понять текстуры, текстурные блоки и сэмплеры в OpenGL 4.5. Я прилагаю картину того, что я пытаюсь выяснить. Я думаю, что в моем примере все правильно, но я не очень уверен насчет 1D Sampler на правой стороне с вопросительным знаком.

Итак, я знаю, что OpenGL предлагает несколько текстурных блоков / точек привязки, где текстуры и семплеры могут быть связаны, чтобы они работали вместе.

Каждая из этих точек привязки может поддерживать одну из целей текстур (в моем случае я привязываю целиGL_TEXTURE_2D а такжеGL_TEXTURE_1D до обязательной точки0, и другойGL_TEXTURE_2D до обязательной точки1).

Кроме того, сэмплеры могут быть привязаны к этим точкам привязки практически таким же образом (я привязал 2D-сэмплер к точке привязки0 на картинке).

Функции для выполнения этих операций:glBindTextureUnit а такжеglBindSampler.

Моей первоначальной мыслью было связать 1D-сэмплер с точкой привязки 0, и на шейдерной земле выполнить сопоставление на основе точки привязки и типа сэмплера:

layout (binding = 0) uniform sampler1D tex1D;
layout (binding = 0) uniform sampler2D tex2D;

Цитирую источник:

Каждый текстурный блок изображения поддерживает привязки ко всем целям.Таким образом, 2D-текстура и текстура массива могут быть связаны с одним и тем же блоком изображения.или разные 2D текстуры могут быть связаны в двух разных единицах изображения, не влияя друг на друга. Итак, какая текстура используется при рендеринге? В GLSL это зависит от типа сэмплера, который использует эту единицу изображения текстуры.

но я нашел следующее утверждение:

[..] звучит подозрительно, будто вы можете использовать одну и ту же текстурную единицу изображения для разных сэмплеров, если они имеют разные типы текстур. Не делай это. Спецификация явно запрещает это; если два разных сэмплера GLSL имеют разные типы текстур, но связаны с одним и тем же модулем изображения текстуры, то рендеринг не удастся.Дайте каждому сэмплеру различную текстуру изображения.

Итак, мой вопрос заключается в том, какова цель связывания разных целевых текстур с одной и той же точкой привязки, если в конечном итогеОдин Сэмплер будет привязан к этой точке привязки, заставляя вас выбирать?

Информация, которую я цитирую:https://www.khronos.org/opengl/wiki/Texture#Texture_image_units

Ответы на вопрос(1)

Ваш ответ на вопрос