我目前遇到OpenGL ES渲染緩衝區的問題,其背景和寬度都設置爲15.是否有任何方法將它們設置爲320的寬度和480? 我的項目是在Apple的EAGLView類和ES1Renderer上構建的,但我已將它從應用程序代理移到控制器。我也將CADisplayLink移到它外面(我用這個時間戳更新我的遊戲邏輯)設置渲染緩衝區寬度和高度(Open GL ES)
任何幫助將不勝感激。
我的glview添加到窗口如下:
CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
[window addSubview:gameController.glview];
[window makeKeyAndVisible];
我合成控制器和其內的glview。 EAGLView和Renderer是未經修改的。
渲染器初始化:
// Get the layer
CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;
eaglLayer.opaque = TRUE;
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:FALSE], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
renderer = [[ES1Renderer alloc] init];
渲染 「從層調整」 方法
- (BOOL)resizeFromLayer:(CAEAGLLayer *)layer
{
// Allocate color buffer backing based on the current layer size
glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer);
[context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:layer];
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
NSLog(@"Backing Width:%i and Height: %i", backingWidth, backingHeight);
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;
}
無論出於何種原因,該數值爲layer.bounds的CGRect是: -Origin:(50,1650)|大小:w:30,h:1675 – 2010-05-27 01:51:28
感謝您讓我走上正確的道路。我明白了。 – 2010-05-27 02:07:45