OpenGL ES 2.0에서 OpenGL ES 3.0으로 작은 iPad 응용 프로그램을 마이그레이션하는 중입니다.GLKit OpenGL ES 3.0을 사용한 멀티 샘플링
self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; // Or 2
self.drawableDepthFormat = GLKViewDrawableDepthFormatNone;
self.drawableColorFormat = GLKViewDrawableColorFormatRGBA8888;
self.drawableMultisample = GLKViewDrawableMultisample4X;
self.drawableStencilFormat = GLKViewDrawableStencilFormatNone;
self.enableSetNeedsDisplay = YES;
// ... gl code following
내 -drawRect
방법은 다음과 같습니다 :
glClearColor(1, 1, 1, 1);
glClear(GL_COLOR_BUFFER_BIT);
[_currentProgram use]; // Use program
glUniformMatrix4fv([_currentProgram getUniformLocation:@"modelViewProjectionMatrix"], 1, 0, modelViewProjectionMatrix.m);
// ...
if (isES3) {
glBindVertexArray(vertexArray);
}
else {
glBindVertexArrayOES(vertexArray);
}
glDrawArrays(GL_TRIANGLE_STRIP, 0, verticiesLength);
I를 내가 사용하는 유일한 GLKit 기능은 비록 앱, 나는 내 모든 드로잉을 처리 할 수 GLKView
의 서브 클래스를 사용 아직 OpenGL ES 3.0 지원 장치가 없으므로 iOS 시뮬레이터에서 OpenGL ES 3.0 테스트가 모두 수행됩니다. OpenGL ES 2.0 테스트는 장치 및 시뮬레이터에서 수행됩니다.
예상대로 ES2
에서 화면은 시작시 즉시 흰색으로 지워집니다 (-drawRect
은 아직 호출되지 않고 아직 그려지 않음). 그러나 스왑을 ES3
으로 만들면 컨텍스트가 성공적으로 생성되고 아무런 gl
호출도 실패하지만 아직 화면이 검은 색 화면으로 표시됩니다. 무엇이 잘못되었는지에 대한 낚시를하면서 멀티 샘플링을 제거하기로 결정했습니다.
self.drawableMultisample = GLKViewDrawableMultisampleNone;
그리고 효과가있었습니다. iOS 시뮬레이터 (iPad, iPad Retina 및 iPad Retina (64 비트))에서 OpenGL ES 3.0을 사용하여 멀티 샘플링하는 GLKit
에 대한 알려진 문제점이 있습니까? 내 노트북에는 다중 샘플링에 대처할 수있는 충분한 여유 공간이 있습니다.
에뮬레이터에서 실행중인 iOS 버전은 무엇입니까? iOS 7.0.4와 함께 실제 iPad 미니 망막 하드웨어에서 동일한 동작 (멀티 샘플링이 활성화 된 경우 검은 화면)을 관찰하고 있습니다. 이것이 iOS의 최신 개정판에서 수정 된 버그인지 궁금합니다. – jkingyens
다른 사람이이 문제를 선택했기 때문에 기쁩니다! 나는 그것이 7.1 (.0)이라고 생각한다. 나는 Xcode를 업데이트 한 이후로 7.1.1에 대한 문제가 여전히 존재 함을 재확인하지 못했습니다. – Ephemera