我想知道glBlendFunc是如何工作的。例如,我有2个gl纹理,其中alpha在tex1上,我希望在我的最终图像中有alpha。如果颜色在tex1上,我希望tex2的颜色为。
答案 0 :(得分:1)
glBlendFunc仅适用于最终颜色片段如何与帧缓冲区混合。我认为你想要的是多纹理,通过使用glTexEnv混合纹理阶段来组合两个纹理,或者使用片段着色器来组合两个纹理。
答案 1 :(得分:1)
抱歉,简单混合无法做到这一点。例如,我们习惯使用frament着色器做同样的事情。
答案 2 :(得分:1)
借调着色器。如果您可以使用着色器,则可以更轻松地使用数据执行您想要的操作,而不是使用晦涩的混合函数。
答案 3 :(得分:0)
可悲的是,这是针对iPhone上的openGL ES,所以没有着色器,而是采取了点。我的问题是一个非常简化的问题版本,我需要将一个简单的颜色(包括alpha)应用到定义纹理的一部分。正如李指出的那样,纹理混合是为了让alpha显示在帧缓冲区上。解决方案是坚持艺术家将纹理的“动作位”设为白色,然后为我渲染的顶点指定颜色。这样的事情。
glTexCoordPointer( 2, GL_FLOAT, 0, sprite->GetTexBuffer() );
glVertexPointer( 3, GL_FLOAT, 0, sprite->GetVertexBuffer() );
glColorPointer( 4, GL_FLOAT, 0, sprite->GetColorBuffer() );
glDrawArrays( GL_TRIANGLES, 0, 6 ); // Draw 2 triangles
即使它有纹理,颜色也意味着它会增加纹理的颜色,所以它是alpha,它仍然是alpha,而它是白色的(因为我必须制作它),它就变成了颜色该点的颜色指针。