我正在尝试将几何着色器移植回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要求的?
答案 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实现不支持顶点中的纹理访问 着色器。