将 OpenGL FFP 转换为 PP

Translate OpenGL FFP to PP

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

我不确定第一个是做什么的。

如何以及在哪里翻译这些,或者达到类似的效果。

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE)

启用 "combining" 片段颜色通过光照或顶点阶段的任何东西计算出的纹素颜色。它是旧 replace/modulate/decal 模式的一种更高级的形式。后面应该有一两行

glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB|GL_COMBINE_ALPHA, ...

指定实际操作,以及 replace/modulate 可能包括点积或插值。

红皮书(OpenGL Programming Guide)至少在第 6 版之前都有关于纹理组合器的部分。

你是对的,第二个只是 RGB 的倍数。

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

希望对您有所帮助。