在进行纹理映射操作之前设置GL颜色有什么作用?

Ben*_*tto 3 opengl texture-mapping

我正在看一本书中的一些示例代码,它通过重复将场景(在不同的偏移处)渲染到屏幕外纹理来创建抖动的抗锯齿效果,然后使用该纹理在主视图中重复绘制四边形,并设置一些混合内容.

为了"正确"累积颜色,代码设置颜色如下:

glColor4f(f, f, f, 1);
Run Code Online (Sandbox Code Playgroud)

其中f是1.0/number_of_samples,然后绑定屏幕外纹理并渲染它.

由于纹理带有自己的颜色和alpha数据,因此提前设置整体"颜色"的效果(数学和直观)是什么?

谢谢.

Mat*_*gro 5

默认纹理环境是GL_MODULATE,这意味着顶点颜色(使用glColor设置)与纹理颜色相乘.

所以,在数学上,它确实:

fragmentColor = texColor / numberOfSamples (alpha = 1.0)
Run Code Online (Sandbox Code Playgroud)

希望能够解释它.