我试图用着色器模仿 OpenGL glTexEnv 的行为。这是一个相当复杂的功能,但应该是可行的。唯一的问题是该函数的工作方式因纹理基础内部格式而异。如何从纹理中获取该信息?纹理基础内部格式由 glTexImage2D 函数给出,所以我必须将它保存到某个变量并根据绑定纹理将其传递给着色器,或者我可以通过 OpenGL 以某种方式获得它吗?
问问题
923 次
2 回答
0
不,纹理基础内部格式不能直接用于着色器。如果您不想自己存储它,您可以随时询问 GL 它的值以将其传递给您的着色器。
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &outFormat)`
于 2009-10-21T20:45:04.460 回答
0
似乎纹理混合值不是内置制服的一部分。
http://www.opengl.org/sdk/libs/OpenSceneGraph/glsl_quickref.pdf
通常有两种方法可以模仿 FFP 行为:
- 一个大着色器,将值传递给着色器......
- 例如,根据需要动态地为每个行为和内部格式创建着色器。
我更喜欢第二种方式,因为它不会产生一个又大又慢的全能着色器。取而代之的是,您会得到小的特定着色器。
另外:这个常见问题被称为“组合着色器爆炸”问题。
于 2009-07-21T10:10:04.870 回答