2

...挫折。我希望我的游戏只能在横向模式下运行。我已将适当的键/值添加到 Info.plist 文件中,该文件强制设备方向在启动时正确。

我现在正在尝试旋转 OpenGL 坐标空间以匹配设备的坐标空间。我正在尝试使用我在这里找到的代码,但它不起作用。我的测试用例在中心画了一个正方形,包含所有代码后,我什么也没画出来;如果我注释掉第二部分(仅设置 GL_PROJECTION 矩阵模式),坐标系似乎是正确的。但我也希望它旋转。我对如何做到这一点以及正确设置视图笔尖有点困惑。请给点提示好吗?

另外,在未来,我将用另一个 UIView 子类替换 EAGLView;这样做需要什么不同的吗?

谢谢!兰迪

4

1 回答 1

2

您正确设置了 plist。现在确保所有视图控制器都具有以下内容:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return (toInterfaceOrientation==UIInterfaceOrientationLandscapeRight) ? YES : NO;
}

没有它的子视图可能会把事情搞砸。

此外,如果您有 UINavigationController 或类似的东西,您需要对其进行子类化并实现 shouldAutorotateToInterfaceOrientation 因为它本身就很愚蠢,并且会默认为纵向并破坏事物。

然后对于 viewdidload

- (void)viewDidLoad {
    [super viewDidLoad];

    CGRect  rect = [[UIScreen mainScreen] bounds];
    rect.size.height = 320;
    rect.size.width = 480;
    rect.origin.x = 0;
    rect.origin.y = 0;

    glView = [[EAGLView alloc] initWithFrame:rect pixelFormat:GL_RGB565_OES depthFormat:GL_DEPTH_COMPONENT16_OES preserveBackbuffer:NO];
    [self.view addSubview: glView];

    [glView addSubview: minimapView];
     //etc...

}
于 2011-01-26T19:52:41.380 回答