将OpenGL FFP转换为PP

时间:2015-03-03 18:34:57

标签: ios opengl opengl-es

我正在学习并将一些非常古老的固定功能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]。但我不确定究竟是什么意思,是否会在着色器中并指向顶点颜色和纹理颜色?

我不确定第一个人做了什么。

我如何以及在何处进行翻译,或达到类似的效果。

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倍增。

这两个都是纹理操作,因此将在片段着色器中实现。

希望这有帮助。