我正在学习并将一些非常古老的固定功能OpenGL(在桌面上)翻译成现代的OpenGL(iOS)。我已经翻译了所有的顶点,颜色和纹理,但我被困在这两行以及如何将它们融入现代建筑中:
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE_EXT, 2.0f);
我相信第二种只是将RGB缩放2并将它们钳制[0,1]。但我不确定究竟是什么意思,是否会在着色器中并指向顶点颜色和纹理颜色?
我不确定第一个人做了什么。
我如何以及在何处进行翻译,或达到类似的效果。
答案 0 :(得分:0)
该行
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE)
启用“组合”由照明计算的碎片颜色或顶点阶段的任何颜色与纹素颜色。它是旧的替换/调制/贴花模式的一种更好的形式。应该有一两个后续行
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB|GL_COMBINE_ALPHA, ...
指定实际操作,以及替换/调制可包括点积或插值。
红皮书(OpenGL编程指南)包括纹理组合器的一部分,至少可以达到第6版。
你是对的,第二个只是将RGB倍增。
这两个都是纹理操作,因此将在片段着色器中实现。
希望这有帮助。