将应用程序升级到iPhone4:如何通过触摸获得低分辨率屏幕值

将应用程序升级到iPhone4:如何通过触摸获得低分辨率屏幕值,iphone,cocoa-touch,opengl-es,Iphone,Cocoa Touch,Opengl Es,我目前正在用iPhone4测试OpenGL ES应用程序。我最初是在iPhone3G和3G模拟器上开发该应用程序的,使用project作为起点,而不是苹果的,我不明白这一点。我现在明白这可能是个错误 当我尝试在iPhone4上玩游戏时,触摸事件提供了高分辨率输出(即x从0-639,y从0-959),而不是我的游戏需要的低分辨率触摸点(即x:0-319,y:0-479)。我看过几个苹果的例子项目,比如GLPaint,这似乎只提供了低分辨率的接触点,但我看不出这个项目和我的有什么区别 任何人都可以给

我目前正在用iPhone4测试OpenGL ES应用程序。我最初是在iPhone3G和3G模拟器上开发该应用程序的,使用project作为起点,而不是苹果的,我不明白这一点。我现在明白这可能是个错误

当我尝试在iPhone4上玩游戏时,触摸事件提供了高分辨率输出(即x从0-639,y从0-959),而不是我的游戏需要的低分辨率触摸点(即x:0-319,y:0-479)。我看过几个苹果的例子项目,比如GLPaint,这似乎只提供了低分辨率的接触点,但我看不出这个项目和我的有什么区别


任何人都可以给予任何帮助将不胜感激,这是一个项目,这是在几天内到期!(我知道,我怎么能不在iPhone4甚至模拟器上测试它!但是,你活,你学…

除非你特别将
CaeAglayer的比例因子设置为2.0,否则OpenGL ES将在iPhone4上以低分辨率模式工作。)

重要提示:由CaeAglayer对象支持的视图不应实现自定义
drawRect:
方法。实现
drawRect:
方法会导致系统更改视图的默认比例因子,使其与屏幕的比例因子匹配。如果图形代码不希望出现这种行为,则应用程序内容将无法正确呈现


这符合你的情况吗?

正如每次我在SO上发布内容时所发生的那样,我很快就找到了答案,因此我将发布它,以防像我这样神经质和令人担忧的人遇到这个问题

我将触摸信息从我的GLView传递到我定义的GLViewController,这是处理触摸信息。它通过向UITouch对象发送以下消息获得一个触摸点,从而为每次触摸创建一个CGPoint:

CGPoint touchPoint = [touch locationInView:self.view];
问题似乎是GLViewController获取的是UIView对象中触摸的位置,而不是该对象的GLView子类。因此,假设glView是GLViewController的glView类型的属性,如果将代码更改为

CGPoint touchPoint = [touch locationInView:self.glView];
一切正常。愚蠢的错误,嗯,但这都是很好的学习


我希望其他有这个问题的人能从我的疯狂恐慌中获益…:-)

没有,但是谢谢你提供的信息!我已经解决了这个问题——我会在上面贴一个帖子,概述解决方案。