我正在使用引擎(http://b2dengine.com/)来实现我的游戏创意,这已经在进行中。现在很长一段时间,我对这个文本呈现问题感到困惑。如何覆盖opengl中的纹理颜色?
我有纹理地图集,其中包含所有支持/需要的字符在一个单一的PNG图像。字符映射由Font
类定义。 一切工作正常,字符呈现正确,准确。事情是,我也需要改变文本颜色的能力。 这听起来,我敢打赌这很简单,但我不能让它工作。
我正在使用这个gl混合函数来获得所需的效果。
GL.instance.glBlendFunc(GL.instance.GL_SRC_ALPHA, GL.instance.GL_ONE_MINUS_SRC_ALPHA);
在大多数情况下,只要颜色有点暗,就可以工作。但是当它变成白色时,我可以看到文物。如果需要,我可以提供截图。 也为了这个工作,纹理中的“文本”必须是白色的。
我使用opengl 1.1(是的,我知道它的旧,但我只是没有为着色器做好准备)。
所以总之,我的问题是:如何渲染纹理并完全替换颜色?只保留Alpha通道。 例如如果它的黑色和80%透明PNG,当我渲染我想要它在屏幕上80%的透明度绿色。
我不知道这个帖子是什么版本GL的作者使用但是glTexEnv现在已被弃用。请阅读:http://www.opengl.org/wiki/Common_Mistakes:_Deprecated#glTexEnvi。并特别注意这一行:“同时请记住,glTexEnvi在片段着色器是绑定的。“ –
@MichaelIV,我同意它已被弃用,但OP明确表示他使用的是非常老的opengl(1.1) – Tim
啊是啊,我没有看到它。对他太糟糕了;) –