2016-07-28 6 views
-2

저는 OpenGL의 초보자입니다. 저는 버텍스 쉐이더를 작성하고 쉐이더 컴파일과 같은 다른 일을합니다.왜 glGetAttribLocation이 두 개의 다른 속성에 대해 동일한 값을 반환합니까?

GLuint PositionID = glGetAttribLocation(SProgram, "vPosition"); 
GLuint ColorID = glGetAttribLocation(SProgram, "vColor"); 

cout << "vPosition location: " << PositionID << endl << "vColor location: " << ColorID << endl; 

그리고 결과는 꽤 흥미로웠다,이 같은 사항 : 난 C++에서이 코드를 작성 후

in vec4 vPosition; 
in vec4 vColor; 

out vec4 Color; 

void main(void){ 
    gl_Position = vPosition; 
    Color = vColor; 
} 

:

버텍스 쉐이더는

vPosition location: 4294967295 
vColor location: 4294967295 

이유 무엇인가 그?

+1

http://stackoverflow.com/questions/29170900/glgetattriblocation-returns-large-and-unusable-value를 참조하십시오. 이것이 중복으로 표시 될만큼 충분히 가깝지 않은지 확실하지 않지만 기본적으로 같은 대답입니다. –

답변

5

실제로 반환 유형 glGetAttribLocationGLuint이 아니고 GLint (서명 됨)입니다.

그래서 4294967295 실제로는 -1입니다. 이는 어딘가에서 문제가 발생했음을 의미합니다. 원인은 많은 수 :

  • 프로그램이 잘못되었거나 잘못 속성이
  • 속성 명을 사용하지
  • 연결 잘못되었습니다

우리가 추측 할 수 있기 때문에 원인을 알 어렵다 당신의 코드가 있지만 문제는 다른 곳에서 발생합니다.

관련 문제