opengl - OpenGL 场景顶部的反色文本

标签 opengl text colors fonts

我有一个字体纹理,我用它来在我的 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/

相关文章:

xml - SVG 文本自动换行

matlab - bar3 颜色取决于 zdata

c++ - IIS 7 启动时 glfwInit 失败

c++ - visual studio 中的多线程 opengl 应用程序

opengl - 如何在 OpenGL 中绘制锯齿状像素化线

iPhone - 如何为图像着色?

ios - 如何防止单元格在另一个单元格中镜像按钮按下操作?

html - 在 windows 下,WebGL 使用 DirectX 运行时或 OpenGL 运行时?

c++ - getline 并用 cout 打印

javascript - 在字符串中查找类型的最后一个字符