Iphone 在OpenGL ES中,如何将屏幕坐标转换为世界坐标?
这是一个2D游戏,所以只有一个x轴和y轴。游戏在iPhone上处于横向模式。我希望能够设置渲染纹理位置的屏幕x和y坐标。如果您正在进行2D游戏,您可以设置投影和模型视图矩阵,这样您就根本不需要转换:Iphone 在OpenGL ES中,如何将屏幕坐标转换为世界坐标?,iphone,opengl-es,Iphone,Opengl Es,这是一个2D游戏,所以只有一个x轴和y轴。游戏在iPhone上处于横向模式。我希望能够设置渲染纹理位置的屏幕x和y坐标。如果您正在进行2D游戏,您可以设置投影和模型视图矩阵,这样您就根本不需要转换: // This goes in your init code somewhere // Set up 480x320 orthographic projection glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrthof(-240.0f, 24
// This goes in your init code somewhere
// Set up 480x320 orthographic projection
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(-240.0f, 240.0f, -160.0f, 160.0f, -1.0f, 1.0f);
// Rotate into landscape mode
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(-90.0f, 0.0f, 1.0f, 0.0f);
这使得世界坐标(-240,-160)映射到屏幕的左上角(在横向模式下为左下角),(240160)映射到右下角(横向模式下为右上角),等等。由于iPhone的屏幕是480x320,因此您不需要通过设置矩阵在世界坐标和屏幕坐标之间进行转换
当然,如果您希望能够移动相机,则需要通过相机的位置进行偏移。如果您正在进行2D游戏,则可以设置投影和模型视图矩阵,以便您根本不需要转换:
// This goes in your init code somewhere
// Set up 480x320 orthographic projection
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(-240.0f, 240.0f, -160.0f, 160.0f, -1.0f, 1.0f);
// Rotate into landscape mode
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(-90.0f, 0.0f, 1.0f, 0.0f);
这使得世界坐标(-240,-160)映射到屏幕的左上角(在横向模式下为左下角),(240160)映射到右下角(横向模式下为右上角),等等。由于iPhone的屏幕是480x320,因此您不需要通过设置矩阵在世界坐标和屏幕坐标之间进行转换
当然,如果您想移动相机,则需要通过相机的位置进行偏移。谢谢。我刚刚注意到,在iPhone的OpenGL ES中没有2D方法。你知道等价语句是什么吗?gluOrtho2D()只是glOrtho()的一个包装,所以我用它代替了它。谢谢。我刚刚注意到,在iPhone的OpenGL ES中没有2D方法。你知道等价语句是什么吗?gluOrtho2D()只是glOrtho()的包装器,所以我用它代替了它。