2012-11-28 7 views
2

geometry 쉐이더를 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 Shading Language 1.10 Specification은 (는 OpenGL 2.0에 대응) 섹션에서 말한다 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

@Nobody Ok, 사양 증명으로 답변을 업데이트했습니다. –

+0

+1 노력에 감사드립니다. 필자는 사양을 들여다보기에는 너무 게을 렀다는 것을 인정해야한다 (또는 그렇게 할 충분한 시간이 없었다). – Nobody

관련 문제