2012-11-28 118 views
2

我正在嘗試將幾何着色器移回到OpenGL 2.1(GLSL 1.2)頂點着色器中。 已取代所有的代碼編譯器抱怨後,它給了我另一個錯誤:允許頂點着色器(GLSL 1.2)中的紋理訪問?

Too many vertex shader texture samplers

所以我詢問GL的最大允許,這是我得到的:

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0 GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB: 0

這可能意味着,在頂點着色器中不允許使用紋理。

這只是我的硬件/驅動程序的限制,或者它被OpenGL2.1/GLSL1.2要求?

回答

5

已經成功地使用於OpenGL 2.1的硬件頂點紋理,我可以證實,這是一個單純的硬件/驅動程序的限制。如果OpenGL 2.1/GLSL 1.20首先完全不允許頂點紋理的可能性,那麼這些常量就沒有多大意義。

編輯:作爲上述的更客觀證據,(對應於的OpenGL 2.0)的OpenGL Shading Language 1.10 Specification說,在部分8.7紋理查找函數

Texture lookup functions are available to both vertex and fragment shaders.

而且OpenGL 2.0 Specification本身說,在部分2.15.4頂點着色器 - 着色器執行

Vertex shaders have the ability to do a lookup into a texture map, if supported by the GL implementation. The maximum number of texture image units available to a vertex shader is MAX_VERTEX_TEXTURE_IMAGE_UNITS ; a maximum number of zero indicates that the GL implemenation does not support texture accesses in vertex shaders.

+0

'那些常量沒有多大意義.. 。我使用GLEW,因此無法判斷它們是否來自OpenGL的更高版本,在那裏它們會有意義。但是,如果您可以確認在GLSL1.2頂點着色器中使用了紋理,那麼它顯然是一個驅動程序問題。 – Nobody

+0

@沒有人好的,用規範證明更新答案。 –

+0

+1謝謝你的努力。我必須承認,我太懶惰了,不能研究規範(或者我沒有足夠的時間這樣做)。 – Nobody