2

我想知道 glBlendFunc 是如何工作的。例如,我有 2 个 gl 纹理,其中 alpha 在 tex1 上,我想在我的最终图像中使用 alpha。颜色在 tex1 上的地方,我想要 tex2 的颜色。

4

4 回答 4

1

glBlendFunc 仅适用于最终颜色片段如何与帧缓冲区混合。我认为你想要的是多重纹理,通过使用 glTexEnv 混合纹理阶段来组合两个纹理,或者使用片段着色器来组合两个纹理。

于 2008-10-09T13:45:40.733 回答
1

抱歉,不能通过简单的混合来做到这一点。例如,我们曾经使用 frament 着色器来做同样的事情。

于 2008-10-09T14:23:30.187 回答
1

支持着色器。如果您可以使用着色器,则可以更轻松地对数据执行您想要的操作,而不是使用神秘的混合功能。

于 2008-10-10T22:36:18.900 回答
0

可悲的是,这是针对 iPhone 上的 openGL ES 的,所以没有着色器,但要点是。我的问题是问题的一个非常简化的版本,我需要对定义的纹理的一部分应用简单的颜色(包括 alpha)。正如 Lee 所指出的,纹理混合是为了让 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,在它是白色的地方(因为我必须让它),它成为颜色的颜色点的指针。

于 2008-10-12T18:12:41.833 回答