यदि ओपनजीएल दृश्य में दो धागे एक बार में ड्रॉ करने का प्रयास कर रहे हैं तो मैंने ओपनजीएल कॉल के साथ इसमें भाग लिया है। हालांकि, यह आपके जैसा काम नहीं कर रहा है।
क्या आपने इस कॉल से पहले अपना प्रदर्शन संदर्भ और फ्रेमबफर शुरू किया है? उदाहरण के लिए, मेरी UIView उपवर्ग कि ओपन ड्राइंग करता है, मैं अपने initWithCoder में निम्नलिखित फोन: विधि:
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
if (!context || ![EAGLContext setCurrentContext:context] || ![self createFramebuffer])
{
[self release];
return nil;
}
createFramebuffer विधि निम्नलिखित की तरह दिखता है:
- (BOOL)createFramebuffer
{
glGenFramebuffersOES(1, &viewFramebuffer);
glGenRenderbuffersOES(1, &viewRenderbuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[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);
if (USE_DEPTH_BUFFER) {
glGenRenderbuffersOES(1, &depthRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, backingWidth, backingHeight);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);
}
if(glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES)
{
return NO;
}
return YES;
}
यह वह जगह है काफी बॉयलरप्लेट कोड , जैसा कि एक्सकोड में ओपनजीएल ईएस एप्लीकेशन टेम्पलेट द्वारा उत्पन्न किया गया है। शायद GlMatrixMode() को कॉल करने से पहले चीजों को प्रारंभ नहीं करके, आपको एक क्रैश हो रहा है।
इसके अलावा, आप एप्लिकेशन में ओपनजीएल ड्राइंग क्यों कर रहे हैंडिफिनिश लॉन्चिंग :? क्या आपके यूआईपीप्लिकेशन डिलीगेट की तुलना में ओपनजीएल कॉल के लिए नियंत्रक को देखने या देखने के लिए एक और उपयुक्त जगह नहीं होगी?
ऐसा इसलिए हो सकता है क्योंकि ऐप्पल का डेमो एप्लिकेशन, क्रैश लैंडिंग इस तरह से करता है। – xyz