Простое отображение текстуры на объект в фрагментном шейдере GLSL - PullRequest
1 голос
/ 11 декабря 2011

У меня проблема с отображением текстуры во фрагментном шейдере. У меня есть текстура того же размера, что и у окна (я использую часть сцены, отрисованную в предыдущем проходе, но я использую кирпичную текстуру в примере ниже), и мне нужно отобразить ее как в 2D. Это как-то возможно? Я пробовал разные способы, но ничего не получалось.

Подскажите, пожалуйста, как должен выглядеть фрагментный шейдер? Пожалуйста, любые советы будут полезны. Спасибо!

tepaot with plain mapping

1 Ответ

3 голосов
/ 11 декабря 2011

У меня есть текстура того же размера, что и у окна (…), и мне нужно отобразить ее как в 2D.

Так что, если я вас правильно понимаю, то вы хотите использовать ранее сгенерированную текстуру, как если бы это был какой-то "слой", где пиксели текстуры отображаются 1: 1 для пикселей области просмотра, а текстура имеет тот же размер, что и окно просмотра?

Если это так, то это очень просто (в версии GLSL 1.30). Есть функция texelFetch, которая принимает индекс пикселя в качестве координаты (в отличие от texture, который принимает значение в диапазоне [0; 1]). Встроенная переменная gl_FragCoord дает координаты окна текущего обработанного фрагмента. Таким образом, используя координаты в gl_FragCoord для texelFetch, вы получите желаемый результат.

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