2009-07-01 153 views
0

如果这个问题看起来很混乱,我很抱歉。我所看到的行为对我来说毫无意义。OpenGL/OpenGL ES中的帧缓冲区,纹理和glColor行为

我有一个Framebuffer渲染到纹理。我渲染红色,绿色,蓝色不同的不透明度的实心矩形到这个纹理。然后我将纹理渲染到屏幕(Framebuffer 0)。附加到纹理的Framebuffer是持久的,并且在每个渲染循环中,我会为纹理绘制更多的矩形 - 最终填充屏幕。

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

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

谢谢。

+0

我觉得函数glColor()在OpenGL ES中不可用 – 2010-07-17 09:42:16

回答

2

其中,glColor()设置用于顶点的颜色。绘制纹理矩形时,每个纹理元素样本都会被顶点颜色叠加。实际上,如果所有顶点具有相同的颜色,那么原始顶点的线性交互作用就是顶点颜色。

本教程介绍了这一切的含义相当不错:

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

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