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

Nob*_*ody 2 textures glsl

我试图将几何着色器移植回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所要求的?

Chr*_*ica 5

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

编辑:作为上述的更客观证明,OpenGL着色语言1.10规范(对应于OpenGL 2.0)在第8.7节" 纹理查找函数"中说:

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

OpenGL的2.0规范本身说,在第2.15.4顶点着色器-着色器执行:

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