允许顶点着色器(GLSL 1.2)中的纹理访问?

时间:2012-11-28 09:52:55

标签: glsl textures

我正在尝试将几何着色器移植回OpenGL 2.1(GLSL 1.2)顶点着色器。 在替换了编译器抱怨的所有代码之后,它给了我另一个错误:

  

顶点着色器纹理采样器太多

所以我查询了GL允许的最大值,这就是我得到的:

  

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:0   GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:0

这可能意味着顶点着色器中不允许纹理。

这只是我的硬件/驱动程序的限制,还是OpenGL2.1 / GLSL1.2要求的?

1 个答案:

答案 0 :(得分:5)

在OpenGL 2.1硬件上成功使用顶点纹理后,我可以确认这仅仅是硬件/驱动程序限制。如果OpenGL 2.1 / GLSL 1.20首先完全不允许顶点纹理的可能性,那么这些常数就没有多大意义。

编辑:作为上述内容的更客观证据,OpenGL Shading Language 1.10 Specification(对应于OpenGL 2.0)在 8.7纹理查找函数部分中说明:

  

纹理查找函数可用于顶点和片段   着色器。

OpenGL 2.0 Specification本身在 2.15.4顶点着色器 - 着色器执行部分中说明了:

  

顶点着色器能够查找纹理贴图,如果   GL实施支持。纹理的最大数量   顶点着色器可用的图像单位是   MAX_VERTEX_TEXTURE_IMAGE_UNITS;最大数量为零表示   GL实现不支持顶点中的纹理访问   着色器。