【问题标题】:iPhone, rotated + EAGLView, rotated =iPhone,旋转 + EAGLView,旋转 =
【发布时间】:2009-12-02 02:03:28
【问题描述】:

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

我现在正在尝试旋转 OpenGL 坐标空间以匹配设备的坐标空间。我正在尝试使用我找到的代码here,但它不起作用。我的测试用例在中心绘制了一个正方形,并且包含 all 的代码,我看不到任何绘制;如果我注释掉第二部分(仅设置 GL_PROJECTION 矩阵模式),坐标系 确实 似乎是正确的。但我也希望它旋转。我对如何做到这一点以及正确设置视图笔尖有点困惑。请给点建议?

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

谢谢! 兰迪

【问题讨论】:

    标签: iphone opengl rotation eaglview


    【解决方案1】:

    您的 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...
    
    }
    

    【讨论】:

    • 我应该停止为我所做的一切咨询 SO。我在带有 xcode 的文档中的注释中找到了相同的答案(搜索“Landscape”,打开“Launching your App in Landscape...”),但忽略了它并改为 SO。 ;) 谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 2011-01-12
    • 2011-01-08
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    相关资源
    最近更新 更多