我有一个字体纹理,我用它来在我的 OpenGL 场景上绘制文本。 问题是场景的颜色变化太大,以至于我使用的任何纯色都很难看清。是否可以用反转颜色绘制我的字体纹理?
调用 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
只会用纯色绘制它,调用 glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);
会把它倒过来绘制,但会忽略纹理的 alpha 值,因此您只会看到倒置的矩形而不是字母。
我需要的是等同于
glBlendFunc(GL_SRC_ALPHA * GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA);
这可以不使用着色器以某种方式实现吗?
最佳答案
继戴夫的评论之后:
我没有使用 GL_ALPHA 纹理,而是生成了一个 GL_RGBA 纹理,其中每个像素都相等: (alpha, alpha, alpha, 0xff)(这是灰度图像而不是亮度图像)。 然后我使用这个纹理:
glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_COLOR);
结果是:(1 - dest_color) x "src_alpha"+ dest_color x (1 - "src_alpha")
这正是我所需要的。
关于opengl - OpenGL 场景顶部的反色文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3885247/