我目前遇到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