2011-09-26 4 views
0

내 GLSL 쉐이더에서 비 사각형 행렬을 사용하려하지만 컴파일 할 때 구문 오류가 발생합니다. 사용GLSL 쉐이더에서 비 - 정방 행렬을 지원하기 위해 필요한 것은 무엇입니까?

내 쉐이더 코드 :

uniform mat4 my_mat; 

는 잘 컴파일합니다. 나는 그것을 변경하는 경우

는하지만 :

uniform mat4x3 my_mat; 

난 내가 얻을 내 GL_VERSION 및 GL_SHADING_LANGUAGE_VERSION를 인쇄 할 경우

ERROR: 0:5: 'mat4x3' : syntax error syntax error 

내가

uniform mat4x4 my_mat; 

에 대한 유사한 오류가 얻을 : GL_VERSION : 2.1 NVIDIA-1.6.36 GL_SHADING_LANGUAGE _VERSION : 1.20

OpenGL을 Mac OS X 10.6 MacBook Pro에서 컴파일하고 실행하고 있습니다. this NVidia document 및 기타에 따르면, GLSL 1.20 및 GL 2.1은 비 - 정방 행렬 및이 구문의 지원을 포함해야합니다. 또 다른 캐치가 있습니까? 또는 구문 오류가 발생하는 이유를 해결하는 또 다른 방법은 무엇입니까? 내 쉐이더 코드의 맨 위에

#version 120 

을 배치하면

답변

1

는 문제가 사라집니다. the same document listed in the question에 따르면 버전 컴파일러 옵션이없는 쉐이더 소스는 "이전과 같이"컴파일되어 컴파일되지 않습니다.

+2

정확히 그렇게해야합니다. 버전 스펙이 없으면 쉐이더는 1.10으로 컴파일됩니다. 나는 당신이 질문을하기 전에 이것을 시험해 보는 것이 좋은 생각이었을 것입니다. 질문을 한 후 분명히 몇 분만에 시도했기 때문입니다. 그러나 이제는 자의식이있는 대답으로 좋은 질문을 얻었습니다. –

+2

'# version'이 없으면'#version 110'처럼 컴파일해야합니다.'# version'은 선택 사항이었던 마지막 버전이었습니다. –

관련 문제