Apple에서 제공하는 EAGLView 예제를 기반으로하는 3D 프로젝트가 있습니다. EAGLContext는 OpenGLES에서 작동하지 않습니다. 1 iphone os
내가 컨텍스트 (나는 생각한다)와 매우 이상한 버그를 가지고, 내 컨텍스트를 사용하여 만들 수 있습니다 :[컨텍스트 renderbufferStorage : GL_RENDERBUFFER_OES fromDrawable : (CAEAGLLayer *) self.layer]
3D보기가 작동하고 레이아웃 하위보기에서 내 frameBuffer가 다시 만들기를 파괴합니다. 그러나 어떤 경우에는 프레임 버퍼가 생성되지 않습니다. 그것은 직장이나하지 왜 이해가 안
- (BOOL)createFramebuffer
{
NSLog(@"[EAGLVIEW] create framebuffer");
glGenFramebuffersOES(1, &viewFramebuffer);
glGenRenderbuffersOES(1, &viewRenderbuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
//////// HERE, some time the context is 0 /////////
[context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer*)self.layer];
//////////////////////
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, viewRenderbuffer);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
// On génère le tampon de profondeur -- bah oui, on fait de la 3D
glGenRenderbuffersOES(1, &depthRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
// On paramètre le tampon :
// - avec les dimensions que l'on veut
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, backingWidth, backingHeight);
//glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_RGB8_OES, backingWidth, backingHeight);
// - avec la profondeur que l'on veut
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);
if(glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES) {
NSLog(@"failed to make complete framebuffer object %x", glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES));
return NO;
}
return YES;
}
: 나는 상황 "창조"에서하게 문제를 찾을 수있는 디버거를 검색 할 수 있습니다. 이 버그가 생겼을 때 강제로 layoutSubview를 실행하도록 iPhone을 돌리면 작동합니다. 매우 이상합니다.
두 번째로 컨텍스트를 만들지 않은 이유는 무엇이며 나중에 완료됩니다.