OpenGL纹理基础内部格式为着色器

时间:2009-07-21 07:20:28

标签: opengl shader

我试图用着色器模仿OpenGL glTexEnv的行为。这是相当复杂的功能,但应该是可行的。唯一的问题是该功能的工作方式不同,具体取决于纹理基础内部格式。如何从纹理中获取信息?纹理基本内部格式是用glTexImage2D函数给出的,所以我必须将它保存到某个变量并根据绑定纹理将其传递给具有一些统一的着色器,或者我可以用OpenGL以某种方式获取它吗?

2 个答案:

答案 0 :(得分:0)

纹理混合值似乎不是内置制服的一部分。

http://www.opengl.org/sdk/libs/OpenSceneGraph/glsl_quickref.pdf

通常有两种模仿FFP行为的方法:

  1. 一个大的着色器,将值传递给着色器......
  2. 为每个行为和内部格式创建着色器,例如,根据需要动态创建。
  3. 我更喜欢第二种方式,因为它不会导致一个大而慢的全局着色器。 而不是那样,你得到小的特定着色器。

    此外:这个常见问题被称为“组合着色器爆炸”问题。

答案 1 :(得分:0)

不,纹理基础内部格式不能直接用于着色器。如果您不想自己存储它,您可以随时询问GL其值以将其传递给着色器。

glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &outFormat)`