7

我刚刚开始学习OpenGL。在我看过的所有教程中,他们演示了使用片段着色器设置视图中所有对象的颜色。我还没有发现如何在其中一个对象上使用片段着色器,为不同的对象赋予不同的颜色。你是怎样做的?

为了提供问题的背景,我在 2d 中绘制了一个带有房屋和道路的简单场景。我发现了如何使用固定的图形管道设置我的每个对象(房子的主体、窗户等)的颜色,我只是不明白如何使用片段着色器设置颜色。

任何澄清将不胜感激,包括如果我误解了某些东西,请更正。

4

2 回答 2

4

在使用glDrawArrays或绘制对象之前glDrawElements,将颜色作为变量传递给着色器。

http://www.opengl.org/sdk/docs/man/xhtml/glUniform.xml

示例 GLSL 片段着色器:

uniform vec4 u_color;

void main(void)
{
     gl_FragColor = u_color;
 }

我会扩展这个答案,但我很懒惰。希望它有所帮助。网上有很多教程,随便搜一下glsl、glUniform4f等。

于 2012-11-06T04:43:41.737 回答
4

为了提供问题的背景,我在 2d 中绘制了一个带有房屋和道路的简单场景。我发现了如何使用固定的图形管道设置我的每个对象(房子的主体、窗户等)的颜色,我只是不明白如何使用片段着色器设置颜色。

正如 RobertRouhani 所说,使颜色统一并为每个对象更改它。


如何将片段着色器仅应用于 OpenGL 中的一个对象?

在使用不同的着色器后,您可以简单地使用glUseProgram和渲染调用更改着色器程序。

看到这个:https ://gamedev.stackexchange.com/questions/22216/using-multiple-shaders

于 2012-11-06T04:44:40.067 回答