Как написать универсальный шейдер GLSL для раскрашивания объекта - PullRequest
0 голосов
/ 13 января 2011

У меня есть несколько объектов в OpenGL, и я хочу отметить выбранный объект.Моя идея заключалась в том, чтобы использовать шейдер GLSL для добавления выбранного цвета.Как я могу получить «оригинальный» цвет пикселя в фрагментном шейдере?Я мог бы посмотреть цвет текстуры, но когда есть более одной текстуры?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2014

Вариант A) вы можете добавить цвет к текущему диффузному цвету / текстуре и применить этот фрагментный шейдер только к выбранному: цвет = ... gl_FragColor = mix (color, selectioncolor, 0.5);

Вариант Б) вы визуализируете в кадровый буфер и постобработаете объект, чтобы добавить цвет

Параметры зависят от вашей способности изменить шейдер и идентифицировать объект.

0 голосов
/ 13 января 2011

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

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

...