Может ли GLSL выводить две / несколько текстур одновременно? - PullRequest
7 голосов
/ 13 ноября 2010

Я могу заставить шейдер читать две текстуры, но для вывода кажется, что есть только gl_FragColor.Есть ли способ визуализации двух разных текстур из одного шейдера?Я использую обработку и библиотеку GLGraphics, кстати.

Ответы [ 3 ]

4 голосов
/ 13 ноября 2010

Да, вы можете записать в gl_FragData, который является массивом выходных данных (размер зависит от вашей реализации). Или в более новых версиях GL и gl_FragColor, и gl_FragData устарели, и вы объявляете свои собственные переменные out для фрагментирующего шейдера, в который нужно записывать. Объявите несколько таких out переменных для нескольких выходных буферов.

0 голосов
/ 21 августа 2013

Да.Мы можем.НО Обратите внимание, что gl_FragData больше не поддерживается в GLSL 4.0.Укажите местоположение следующим образом:

glBindFragDataLocation(programHandle, 0, "FragColor");

.....

Надеюсь, вы сможете прочитать книгу поваренной книги по шейдингу на языке glsl 4.0.

0 голосов
/ 13 ноября 2010

Я не знаю, если это именно то, что вы пытаетесь сделать, но с объектами кадрового буфера (FBO) вы можете рисовать в несколько цветовых буферов одновременно.шейдер, тем не менее, все равно будет выглядеть так, как будто вы пишете один фрагмент.То есть шейдер не знает, сколько вложений у FBO.

...