Iphone 如何在OpenGL中更改画布大小?glClearColor只是在画一个小盒子
当我运行下面的opengl命令时,它只将ipad屏幕的左下部分涂成红色 glClearColor(255.0f、0.0f、0.0f、0.0f) 如何使整个屏幕被涂成红色Iphone 如何在OpenGL中更改画布大小?glClearColor只是在画一个小盒子,iphone,ipad,opengl-es,Iphone,Ipad,Opengl Es,当我运行下面的opengl命令时,它只将ipad屏幕的左下部分涂成红色 glClearColor(255.0f、0.0f、0.0f、0.0f) 如何使整个屏幕被涂成红色 谢谢 不起作用?您可能没有将帧缓冲区设置为正确的大小。如果您使用的是iPhone4,最常见的错误是使用报告的视图尺寸,这与早期型号相同,即使iPhone4的分辨率是以前的两倍 下面是我在我的应用程序中如何做到这一点的(重要提示:这对我来说都是黑魔法,所以请不要让我解释): 我在iPad上使用为iPhone制作的示例代码 代码中
谢谢 不起作用?您可能没有将帧缓冲区设置为正确的大小。如果您使用的是iPhone4,最常见的错误是使用报告的视图尺寸,这与早期型号相同,即使iPhone4的分辨率是以前的两倍 下面是我在我的应用程序中如何做到这一点的(重要提示:这对我来说都是黑魔法,所以请不要让我解释): 我在iPad上使用为iPhone制作的示例代码 代码中的窗口大小是否可能硬编码为较小的iPhone屏幕尺寸 编辑:
这看起来像是相同的xcode问题(不是OpenGL),原因是:
(一) UIWindow的大小调整可以通过使用Interface Builder将.xib文件手动转换为iPad版本来实现。 这在已知问题->Xcode部分中提到。
这对我有好处 (二) 为自己省去很多麻烦,只需在xcode中创建一个新的iPad OGLES应用程序,一切都将为您设置并工作,将您的文件从旧xcode项目拖到新项目中,使用正确的应用程序更新xib,并完成。我今天不得不开始一个全新的项目,这样做只是为了得到MF!!FS#$*!代码签名开始工作
glViewport更改图像的大小,但不更改使用glClearColor着色的内容。@joe-Marcelo的代码是生成与视图的背景层大小相同的帧缓冲区的标准实现。如果您的代码与此不同,则可能是您的问题的根源。如果相同,请确保在创建帧缓冲区之前,承载OpenGL ES内容的UIView已正确调整大小以适合整个显示。他的代码甚至不会编译,因为vWidth和VHHeight未定义。@joe:抱歉,这是一个较大应用程序的代码片段(显然)。vWidth和vHeight只是类中声明的变量。@joe-是的,它们可能定义为
GLint vWidth;闪烁的微光代码>其他地方。你应该在你自己的代码中有类似的东西来设置背衬的宽度和高度,特别是如果你是基于苹果的OpenGL ES模板的话。
- (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;
}