OpenGL ES 1.1에 심각한 문제가 있으며 수천 번 훑어 봤지만 솔루션을 찾을 수 없습니다. 여기서 비슷한 문제를 발견하지 못했습니다. 너희들이 나를 도울 수 있기를.코드는 코드 예제와 거의 동일하지만 표시되지 않습니다.
71squared.com (이 코드는 here입니다)에서 튜토리얼 2를보고 동일한 페이지에서 코드 예제를 다운로드했습니다. 잘 돌아갑니다.
그런 다음 프로젝트에 적용하기 위해 자체 코드를 작성하려고했습니다. 어쨌든 OpenGL 호출에 관해서는 예제와 같은 코드를 사용하는 것에주의를 기울였습니다.
문제는 다음과 같습니다. 내 텍스처가 표시되지 않지만 glClear()를 호출하면 화면의 색상이 영향을받습니다. 문제는 해당 인스턴스의 모든 iVars가 올바르게 계산되므로 UIView 하위 클래스 (glClear()가 표시됨) 나 텍스처를로드하는 코드로 인해 발생할 수 없습니다. 또한 텍스쳐 좌표와 정점까지도 정상적인 값을 가지며 코드 예제와 동일합니다. 문제는 OpenGL을 사용하여 만든 약간의 실수로 인해 야합니다.
이 내 OpenGL을 모두 호출 할 수 있습니다 :
는 초기화 :
CGRect rect = [[UIScreen mainScreen] bounds];
// Set up OpenGL projection matrix
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(0, rect.size.width, 0, rect.size.height, -1, 1);
glMatrixMode(GL_MODELVIEW);
glViewport(0, 0, rect.size.width, rect.size.height);
// Initialize OpenGL states
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_DEPTH_TEST);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND_SRC);
glEnableClientState(GL_VERTEX_ARRAY);
를 텍스처 그리기 :
(t는 그래픽을 그리는 방법에 대한 정보를 포함하는 구조체에 대한 포인터입니다.)
glPushMatrix();
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
glTranslatef(t->posX, t->posY, 0.0f);
glRotatef(-(t->rotation), 0.0f, 0.0f, 1.0f);
glColor4f(t->filter[0], t->filter[1], t->filter[2], t->filter[3]);
glBindTexture(GL_TEXTURE_2D, _texture.name);
glEnable(GL_BLEND);
glVertexPointer(2, GL_FLOAT, 0, vertices);
glTexCoordPointer(2, GL_FLOAT, 0, _texCoords);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glPopMatrix();
여기가 문제의 원인이라고 생각합니다. 프레임 버퍼를 만드는 코드를보고 싶으면 그 코드를 보여줄 수 있습니다. 그것은 다시 예에서와 거의 같습니다.
나는 전체 코드를 한 번에 1000 번이나 밟았 기 때문에 솔루션을 찾기가 절실히 필요하지만 코드 예제와 다른 부분에서 코드 조각을 찾을 수 없습니다.
미리 감사드립니다. Dominik
답장을 보내 주셔서 감사합니다. 나는 그것을 몰랐다. 나는 다만 그것을 시험해 보았다. 그리고 이것이 문제를 야기하지 않는 것으로 보인다. 어쨌든 고맙습니다. –