OpenGL ES 2.0에서, 당신은 분명히 모델 행렬을 설정하는View/Model/Projection 행렬을 OpenGL ES 2.0의 버텍스 쉐이더에 전달하려면 어떻게해야합니까?
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
더 이상 할 수 없지만 GLSL spec는 버텍스 쉐이더에서 그들을 액세스하는 방법을 알려줍니다 이후,이 행렬은 여전히 어떻게 든 내장되어 생각 .
//
// Matrix state. p. 31, 32, 37, 39, 40.
//
uniform mat4 gl_ModelViewMatrix;
uniform mat4 gl_ProjectionMatrix;
uniform mat4 gl_ModelViewProjectionMatrix;
어떻게 이러한 값을 내 쉐이더로 전달합니까? 어떻게 든 glUniformMatrix4fv
을 사용합니까?
OpenGL ES 2.0 Programming Guide의 소스 코드는 쉐이더 부분에 도움이되었지만 모든 예제는 매트릭스 변환을 그대로두고 꼭지점이 -1.0과 1.0 사이인지 확인합니다.
UPDATE : 유일한 답은 아래에 링크 된 코드에서 수행으로 glGetUniformLocation
및 glUniformMatrix4fv
를 사용하여, 사용자 정의 모델/뷰/투영 행렬을 정의하는 것입니다, 그래서 분명히 OpenGL ES Shader Language는 하지 지원 gl_ModelViewMatrix
같은 미리 정의 된 항목을 수행 . OpenGL Shader Builder 은을 지원하기 때문에 혼란 스러웠습니다.하지만 OpenGL ES가 아닌 일반 OpenGL입니다.
고정 기능 파이프 라인을 사용하고 싶지 않습니다. 원하는 경우 OpenGL ES 1.1을 계속 사용할 수는 있지만 꼭지점 및 조각 쉐이더를 실험하려고합니다. –
죄송합니다. 도움이 될 수 없습니다. Apple에서 업데이트 된 샘플 코드를 찾을 수도 있습니다. 이 샘플 코드가 도움이 될지 모르겠습니다. http://mgrundmann.com/2009/06/24/simple-opengl-es-20-iphone-example/ – Mark
링크를 제공해 주셔서 감사합니다! 그는 모델과 투영 행렬 (즉, 자신의 이름을 정의한 다음 glUniform을 사용하여 값을 업데이트)에 대한 자체 셰이더 변수를 정의하여 내장 된 값을 사용하지 않고이 문제를 해결합니다. 아마도 OpenGL ES 2.0의 iPhone 버전에는 내장되어 있지 않을 수도 있습니다. 어쨌든, 이것으로 해결할 수있는 몇 가지 코드를 작성할 수 있습니다. –