如何编写通用的GLSL着色器来着色对象

时间:2011-01-13 15:48:26

标签: opengl glsl shader

我在OpenGL中有几个对象,我想标记所选对象。我的想法是使用GLSL着色器添加所选颜色。 如何在片段着色器中获取像素的“原始”颜色? 我可以在纹理中看到颜色,但是当有多个纹理时?

2 个答案:

答案 0 :(得分:0)

如果您打算使用特定着色器渲染所选对象,则必须创建一个与对象的常规渲染(光照,纹理,...)具有相同行为的着色器。这意味着您必须自己计算像素的颜色。

如果您想要渲染所有对象,然后添加选择,则无法从片段着色器中检索帧缓冲区像素的颜色(您需要从帧缓冲区创建纹理并使用它,但是它超出了范围,我认为。)

答案 1 :(得分:0)

选项A)您可以为当前的漫反射颜色/纹理添加颜色,并将该片段着色器仅应用于选定的颜色/纹理:           color = ...           gl_FragColor = mix(color,selectioncolor,0.5);

选项B)您渲染到帧缓冲区,并对该对象进行后处理以添加颜色

选项取决于您更改着色器和识别对象的能力。