当前位置:  开发笔记 > 编程语言 > 正文

OpenGL ES视图:如何将其定位到景观?

如何解决《OpenGLES视图:如何将其定位到景观?》经验,为你挑选了2个好方法。

寻找关于定位OpenGL ES应用程序的线索,我发现的大多数信息可以追溯到2008年,其中大部分都是指SDK的早期版本.显然,在过去的日子里,在GL的情况下,建议不要旋转视图,而是将旋转应用为GL变换.目前的SDK仍然如此吗?简单地旋转窗口会简单得多:所有触摸事件都与旋转同步.

换句话说:如何在横向模式下设置OpenGL视图?



1> Steph Thirio..:

(我将用我找到的解决方案回答我自己的问题.我会很乐意考虑其他答案.)

在CAEAGLLayer文档中,Apple声明(有点笨拙)你应该在GL本身内进行旋转:"在纵向显示上绘制横向内容时,你应该自己旋转内容而不是使用CAEAGLLayer变换来旋转它." 他们没有解释原因,但我已经在多个地方读过关于性能明显下降的信息.

幸运的是,我只用了几行就解决了这个问题.这适用于横向右侧,主页按钮位于右侧.

glPushMatrix();
  glRotatef(90, 0.0, 0.0, 1.0);
  glTranslatef(0.0f, -320.0f, 0.0f );

  // *** ALL RENDERING GOES HERE ***

glPopMatrix();

如果您的目标是iPad,请将-320替换为-768.

我还转换了来自UITouches的坐标:

int touchx = touch.y;
int touchy = viewWidth - touch.x;



2> Wonil..:

也许,它现在已经改变了.如果您查看最新的OpenGL ES编程指南,您可以找到以下句子:

"在iOS 4.2及更高版本中,渲染缓冲区的Core Animation旋转性能得到了显着改善,现在是在横向和纵向模式之间旋转内容的首选方法.为了获得最佳性能,请确保渲染缓冲区的高度和宽度均为倍数的倍数. 32像素."

就像这样:

[eaglLayer setAffineTransform:CGAffineTransformMakeRotation( -90 * M_PI  / 180)];

但是,CAEAGLLayer类参考提到"在纵向显示上绘制横向内容时,您应该自己旋转内容,而不是使用CAEAGLLayer变换来旋转它." 也许,文档还没有更新.上次更新时间是2008-05-19.

只是和我一样参加这个问答的FYI.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有