Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl es opengl 1.1 renderbuffer生成只执行960px而不是1136px宽度_Opengl Es_Iphone 5 - Fatal编程技术网

Opengl es opengl 1.1 renderbuffer生成只执行960px而不是1136px宽度

Opengl es opengl 1.1 renderbuffer生成只执行960px而不是1136px宽度,opengl-es,iphone-5,Opengl Es,Iphone 5,我目前正在将我的iPhone游戏移植到iPhone 5的分辨率。我包括了默认值-568h@2x.png及 [[UIscreen mainScreen] bounds].size; 给了我iPhone 5的分辨率(320x568px)。但是我在OpenglES 1.1中创建的renderBuffer只能获得旧的iPhone分辨率(640x960px)。创建渲染缓冲区的方式如下所示: glGenFramebuffersOES(1, &viewFramebuffer); glGenRende

我目前正在将我的iPhone游戏移植到iPhone 5的分辨率。我包括了默认值-568h@2x.png及

[[UIscreen mainScreen] bounds].size;
给了我iPhone 5的分辨率(320x568px)。但是我在OpenglES 1.1中创建的renderBuffer只能获得旧的iPhone分辨率(640x960px)。创建渲染缓冲区的方式如下所示:

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

GLint frameBufferWidth, frameBufferHeight;
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &frameBufferWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &frameBufferHeight);
当我在iPhone5上运行游戏时,游戏只覆盖屏幕的前960个像素,并且被压缩


有人知道我如何创建一个适合iPhone 5屏幕大小的渲染缓冲区吗?

我找到了解决方案。这不是opengl的问题。将Xcode升级到v4.5后,未在应用程序主窗口的interface builder中设置大小选项。将选项设置为“Retina 3.5全屏”修复了问题(通过这样做,主视图将自动缩放到iPhone屏幕的3.5或4英寸)

这篇文章帮助了我:

实际上,如果您想得到通用的解决方案,您应该更改CaeAglayer类参数。在我的一个老项目中,我也遇到了同样的问题。但若你们改变iPhone 5的XIB文件的分辨率,iPhone 4会拉伸图像

- (id) initWithCoder:(NSCoder*)coder {
if ((self = [super initWithCoder:coder])) {
    CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;

    eaglLayer.opaque = TRUE;
    eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:FALSE], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
因此,我们需要改变决议:

    if ([[UIScreen mainScreen] bounds].size.height == 568) {
        eaglLayer.bounds = CGRectMake(eaglLayer.bounds.origin.x, eaglLayer.bounds.origin.y, 320, 568);
        eaglLayer.position = CGPointMake(160, 284);
    }
在那之后,这个代码

GLint frameBufferWidth, frameBufferHeight;
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &frameBufferWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &frameBufferHeight);

获得正确的高度。

您是否在模拟度量部分设置了大小选项?因为这似乎只会影响interface builder中显示的大小,而不会影响设备上实际运行的内容。我可以请您为Main Window和EAGLView显示属性的屏幕截图吗?我无法使其正常工作。谢谢