Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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 ES 1+;iOS 8=层边界混乱?_Opengl Es_Ios8_Xcode6_Layer_Bounds - Fatal编程技术网

Opengl es OpenGL ES 1+;iOS 8=层边界混乱?

Opengl es OpenGL ES 1+;iOS 8=层边界混乱?,opengl-es,ios8,xcode6,layer,bounds,Opengl Es,Ios8,Xcode6,Layer,Bounds,由于我安装了Xcode 6.0.1,我的OpenGL ES 1层在任何模拟设备(以及真实硬件:带iOS 8的iPhone 4S)上都显示不正确——层的大小和位置都不正确 更改glViewport参数没有任何区别。我可以把它评论出来,它看起来也一样 部分解决方案: 我已经选中并取消选中了“使用自动布局”框,以便Xcode将我的窗口更新到新的版本要求。现在iPhone4S上的一切看起来都很好,但其他设备上的窗口大小仍然很混乱 有人将OpenGL ES 1代码更新到新设备上了吗?我注意到,[[UISc

由于我安装了Xcode 6.0.1,我的OpenGL ES 1层在任何模拟设备(以及真实硬件:带iOS 8的iPhone 4S)上都显示不正确——层的大小和位置都不正确

更改
glViewport
参数没有任何区别。我可以把它评论出来,它看起来也一样

部分解决方案:

我已经选中并取消选中了“使用自动布局”框,以便Xcode将我的窗口更新到新的版本要求。现在iPhone4S上的一切看起来都很好,但其他设备上的窗口大小仍然很混乱


有人将OpenGL ES 1代码更新到新设备上了吗?

我注意到,
[[UIScreen mainScreen]边界]这一事实,成功地正确显示了渲染缓冲区。大小取决于iOS 8,并以编程方式对视图进行编码。因此,我的代表如下所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *) {

CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;

screenHeight = screenSize.height;
screenWidth = screenSize.width;

window = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight)];
window.bounds = CGRectMake(0, 0, screenWidth, screenHeight);

MainViewController = [[UIViewController alloc] init];

glView = [[EAGLView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight)];
glView.bounds = CGRectMake(0, 0, screenWidth, screenHeight);

MainViewController.view = glView;

window.rootViewController = MainViewController;
[window makeKeyAndVisible];

[glView setupGame];
[glView startAnimation];

return YES;

}
CGRect screenBounds = [[UIScreen mainScreen] bounds];
float scale = [UIScreen mainScreen].scale;
float width = screenBounds.size.width;
float height = screenBounds.size.height;

NSLog(@"scale: %f, width: %f, height: %f", scale, width, height);

float w = width > height ? width : height;

if (scale == 2.0f && w == 568.0f) { ...

我的OpenGL ES 1应用程序也有类似的问题。 以下代码始终在纵向模式下返回renderbuffer大小(shouldAutorotate为否,因此在我的应用程序中禁用autorotate):

但是现在(Xcode 6.0.1,iOS8)这个大小取决于设备的方向。所以我得到了错误的渲染缓冲大小


“使用自动布局”勾选+取消勾选对我没有帮助。

一个可能的解决方法是获取尺寸(宽度和高度),并根据哪个尺寸更大来决定实际宽度,如下所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *) {

CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;

screenHeight = screenSize.height;
screenWidth = screenSize.width;

window = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight)];
window.bounds = CGRectMake(0, 0, screenWidth, screenHeight);

MainViewController = [[UIViewController alloc] init];

glView = [[EAGLView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight)];
glView.bounds = CGRectMake(0, 0, screenWidth, screenHeight);

MainViewController.view = glView;

window.rootViewController = MainViewController;
[window makeKeyAndVisible];

[glView setupGame];
[glView startAnimation];

return YES;

}
CGRect screenBounds = [[UIScreen mainScreen] bounds];
float scale = [UIScreen mainScreen].scale;
float width = screenBounds.size.width;
float height = screenBounds.size.height;

NSLog(@"scale: %f, width: %f, height: %f", scale, width, height);

float w = width > height ? width : height;

if (scale == 2.0f && w == 568.0f) { ...

我使用相同的代码。在我的情况下,iPhone 4和5在两个方向上看起来都不错,但在6和6加上,如果我以横向模式启动我的应用程序,它会变得一团糟(要报告一个bug吗?)。也许可以尝试在纵向启动你的应用程序,并在加载时输入代码以在需要时旋转它?我只在iPad Mini Retina上进行了测试。刚刚向苹果发送了一个请求。现在等待官方的答复。。。