0

如果这个问题看起来很困惑,我提前道歉。我看到的行为对我来说毫无意义。

我有一个帧缓冲区渲染到纹理。我为这个纹理渲染了不同不透明度的红色、绿色、蓝色的实心矩形。然后我将纹理渲染到屏幕(帧缓冲区 0)。贴在纹理上的帧缓冲区是持久的,在每个渲染循环中,我都会在纹理上绘制更多矩形——最终填满屏幕。

我发现如果glColor()在将纹理渲染到屏幕之前没有设置为白色 100% 不透明度,则不会渲染特定颜色的矩形。也就是说,如果glColor(1.f, 0.f, 0.f, 1.f)在渲染纹理之前设置,则只会绘制蓝色矩形。

我不明白为什么当前颜色会对纹理的渲染产生影响(我认为这就像一个 blit)。我尝试了各种texParameter(...)电话无济于事,但我只是猜测。

谢谢。

4

1 回答 1

2

除此之外,glColor() 设置用于顶点的颜色。绘制带纹理的矩形时,每个纹素样本都与顶点颜色相乘。好吧,实际上,如果所有顶点都具有相同的颜色,则图元顶点的线性插值就是顶点颜色。

本教程很好地解释了所有这些的含义:

http://www.falloutsoftware.com/tutorials/gl/gl4.htm

这里唯一奇怪的部分是您声明 glColor(1, 0, 0, 1) 仅导致绘制蓝色矩形。如果 glColor 的参数是红色、绿色、蓝色和 alpha,我希望它只是红色矩形。希望有一个错字或参数顺序不同,例如 red = 0、green = 0、blue = 1 和 alpha = 1。

于 2009-07-01T19:28:09.697 回答