我正在开发引擎 (http://b2dengine.com/) 来实现我的游戏创意,该创意已经在进行中。现在很长一段时间我都被文本渲染的这个问题所困扰。
我的纹理图集在单个 png 图像中包含所有支持/需要的字符。字符映射由Font
类定义。一切正常,字符被正确和准确地渲染。事情是我还需要改变文本颜色的能力。这听起来,我敢打赌它很简单,但我不能让它工作。
我正在使用这个 gl 混合功能来获得所需的效果。
GL.instance.glBlendFunc(GL.instance.GL_SRC_ALPHA, GL.instance.GL_ONE_MINUS_SRC_ALPHA);
在大多数情况下,只要颜色有点暗,它就可以工作。但是当它设置为白色时,我可以看到伪影。如果需要,我可以提供屏幕截图。同样要使其正常工作,纹理中的“文本”必须是白色的。
我正在使用 opengl 1.1(是的,我知道它很旧,但我还没有准备好使用着色器)。
所以简而言之,我的问题是:如何渲染纹理并完全替换颜色?仅保留 Alpha 通道。例如,如果它在 png 中是黑色且 80% 透明,当我渲染时,我希望它在屏幕上以 80% 的透明度呈现绿色。