2012-11-01 3 views
0

저는 LWJGL을 통해 OpenGL을 배우므로 LWJGL wiki에 대한 자습서를 실행하고 있습니다. 구체적으로는 this one입니다.LWJGL glVertexAttribPointer 인덱스 전환

GL20.glVertexAttribPointer(1, 4, GL11.GL_FLOAT, false, Vertex.sizeInBytes, 
    // Put the colors in attribute list 1 
GL20.glVertexAttribPointer(0, 4, GL11.GL_FLOAT, false, Vertex.sizeInBytes, 
    Vertex.elementBytes * 4); 
:

내 문제는 내가 두 정점 포인터를 전환 할 필요가 속성, 함수에 대한 함수 호출을 요구, 그 코드를 복제했다는 사실에도 불구하고 (그래서 코드는 다음과 같은 것이있다

위치 인덱스가 1이고 컬러 인덱스가 0이되도록 전환하면 예상대로 좋은 그라디언트 렌더가됩니다. 그러나 인덱스를 전환하여 실행하면 (이되어야 함) :

Confusing insanity

잠시 동안이 렌더링을 연구하고 나면 위치와 색상 데이터가 전환되어 인덱스 번호를 완전히 전환해도 문제가 완전히 해결되지만 분명히 모든 것을 올바르게 수행했다고 확신합니다. 코드에 어떤 문제가 있습니까? 왜이 자식이 그런 나쁜 놈 이니?

답변

1

그런 속성 ID를 하드 코딩해서는 안되며, 올바른 쉐이더 속성에 링크되기를 바랍니다.

쉐이더 변수를 ID 번호에 매핑 할 수 있도록 glBindAttribLocation (glLinkProgram 이전) 또는 glGetAttribLocation을 사용해야합니다.

+0

오 마이 맙소사. 모든 것이 이제는 의미가 있습니다. 튜토리얼에서 언급되지 않은 이유는 무엇입니까? – SirYancy