OpenGL 在单色上混合颜色

Posted

技术标签:

【中文标题】OpenGL 在单色上混合颜色【英文标题】:OpenGL Blending Color over Monochrome 【发布时间】:2011-04-30 23:46:48 【问题描述】:

我想设置一个混合(最好不使用着色器)来生成以下内容。

我有一个黑色/白色纹理四边形和一个纯色四边形(例如红色)。我希望混合显示所有白色像素所在的颜色(红色),否则显示黑色。

这可能吗?代码是什么样的?

【问题讨论】:

我不确定如何使用 OpenGL 来做到这一点,但是在两个纹理上使用按位与会导致这个结果。 我想说“使用模板缓冲区”,但遗憾的是不能给出任何细节,因为我实际上并没有使用 OpenGL 教程之外的模板。 【参考方案1】:

这通常不是通过混合来完成的,但您可以尝试 glBlendFunc(GL_SRC_COLOR, GL_ZERO); 在文本顶部绘制红色四边形。

但是,这只有在帧缓冲区中没有其他内容时才有效。

【讨论】:

由于 FBO 和着色器的可用性:将每一层渲染成它自己的纹理,然后以所需的方式组合纹理(使用 GL_MODULATE 模式进行多重纹理,或使用适当的片段着色器)。从技术上讲,您正在实现 Photoshop 中的图层。如果不使用层,这种组合会有点麻烦。

以上是关于OpenGL 在单色上混合颜色的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL 四 - 002OpenGL 图形渲染之颜色混合

OpenGL ES之混合的概念和使用

◮OpenGL-混合

在 Java OpenGL 中渲染彩虹幽灵不会混合颜色

◮OpenGL-混合

OpenGL Alpha混合错误的颜色