如何在OpenGL中更改画布大小? glClearColor只绘制一个小盒子

时间:2011-01-17 16:55:50

标签: iphone ipad opengl-es

当我运行以下open gl命令时,它只会将ipad屏幕的左下部分涂成红色。

glClearColor(255.0f,0.0f,0.0f,0.0f);

alt text

如何制作,让整个画面变成红色?

谢谢!

3 个答案:

答案 0 :(得分:2)

您可能没有将帧缓冲区设置为正确的大小。如果您使用的是iPhone 4,最常见的错误是使用报告的视图尺寸,这与之前的型号相同,即使iPhone 4的分辨率是其两倍。

以下是我在我的应用程序中的操作方式(重要提示:这对我来说都是黑魔法,所以请带上一粒盐,请不要让我解释):

- (BOOL)resizeFromLayer:(CAEAGLLayer *)layer {
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer);
    [context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:layer];
    glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &vWidth);
    glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &vHeight);

    glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderBuffer);
    glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, vWidth, vHeight);

    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;
}

答案 1 :(得分:1)

glViewport()不起作用吗?

答案 2 :(得分:0)

  

我使用为iPhone制作的示例代码在iPad上

代码中的窗口大小是否可能硬编码为较小的iPhone屏幕尺寸?

修改
这个idevgames forum post看起来像xcode问题(不是OpenGL),原因是:

  1. 从xcode中的iPhone项目开始
  2. .xib文件中的设置不正确
  3. 两种解决方案,我都没有测试过:
    1)

      

    UIWindow调整大小可以通过使用Interface Builder手动将.xib文件转换为iPad版本来实现。   在iOS 4.0 Release Notes已知问题 - > Xcode部分中提到了这一点   这对我有用。

    2)

      

    为自己省去很多麻烦,只需在xcode中创建一个新的iPad OGLES应用程序,一切都已经设置好并为您工作,将您的旧xcode项目中的文件拖到新的xcode项目中,用正确的xib更新xib app delate和你的完成。我今天必须开始一个全新的项目并且只是为了获得MF# !! FS#$ *!代码签名工作。