GLSL纹理映射和着色在同一着色器中

时间:2012-10-05 16:34:07

标签: opengl glsl

我想编写一个可以进行纹理贴图和顶点着色的GLSL Fragment Shader。是否可以在一个着色器中同时执行这两个操作?

目前,我可以这样做:

gl_FragColor = texture2D(tex, gl_TexCoord[0].st);

这会导致绘制纹理顶点,但不会绘制颜色顶点。 (看起来像这样:http://www.tiikoni.com/tis/view/?id=124eb69

我也可以这样做:

gl_FragColor = gl_Color;

这会导致绘制彩色顶点但不会绘制纹理顶点。 (看起来像这样:http://www.tiikoni.com/tis/view/?id=5bcd838

如果我这样做:

gl_FragColor = texture2D(tex, gl_TexCoord[0].st) * gl_Color;(看起来像第一个代码段)

只绘制了纹理顶点...这是我的问题。

1 个答案:

答案 0 :(得分:1)

  

我希望看到的是在最后一段代码片段中显示的纹理和非纹理顶点。

你不应该期待那样。

没有“纹理顶点”或“非纹理顶点”这样的东西。无论颜色是什么,只有颜色。这就是着色器的重点:使用任意代码来计算你想要的颜色。

您通过将纹理提取的结果与每顶点插值颜色相乘来计算颜色。结果将是两种颜色的组合。即,它们的产物。因此,结果颜色看起来有点像原始纹理。