2011-12-23 4 views
1

최신 버전의 GLSL은 기본 내장 속성 및 유니폼의 양을 줄입니다. gl_Colorgl_ModelViewMatrix은 GLES 2.0에 없습니다.GLSL의 속성 재정의

이 이름을 재정의하고 셰이더에서 다시 정의하여 다른 변수 유형으로 다시 정의 할 수 있습니까? 초기 GLSL 버전에서 작동 할 때 유니폼을 직접 설정하면 자신의 gl_ModelViewMatrix을 유니폼으로 선언하겠습니까? 초기 GLSL gl_Color에서

는 클라이언트가 glColor() 또는 glColorPointer()라는 경우에 따라 버텍스 당 또는 전체를 호출 할 수 있습니다 - 당신은 효과에 있도록 한 번 유니폼을 속성이되는 설정할 수 있습니까? 아니면이 모호성을 처리하는 방법?

답변

2

당신이 그들을 무시할 수 없습니다 (이 퀘스트에서 모두가 함께 목표의 범위에 걸쳐 작동 쉐이더를 만드는 것입니다로드시에 스크립트를 발견-대체 간단한) 당신은 할 수 없습니다 변수 이름 앞에 "gl _"을 붙이십시오. 빌드 인 타입/변수를 변경하는 것은 불가능합니다.

+2

와 쉐이더를 앞에 추가,하지만 난 ': 예를 들어, 당신은 귀하의 의견 색상을 정의 할 수 있습니다 이게 옳은지 확실해. –

+0

OpenGL-3 코어 및 GLSL 1.40 표준에는 사용자 정의 변수의 이름 앞에 'gl_'접두어를 붙이지 않아야한다는 내용이 명시되어 있습니다. 일단 전 처리기 속임수를 사용하여 분명히 "재 도입"할 수 있습니다. – datenwolf

+0

@datenwolf 예, 내 계획이었습니다. 비록 gl_Color로 조금 붙어 있습니다. – Will

1

여러 버전의 GLSL을 쉽게 지원하려면 매크로를 사용하는 것이 가장 좋습니다. 불행하게도 난 서류를 찾을 수 없습니다 GLSL의 이전 버전에서 실행되는 다음

#ifndef color 
in vec4 color; 
#endif 

, 당신은 #define color gl_Color