(Mac OS X、Cocoa、C/C++、OpenGL,在数学上有些挑战。)
Project 是一款实时 (30fps) 扑克游戏,具有 2D 视图。使用 glOrtho 为正交投影设置 OpenGL 视图;相机总是直视卡片/桌子。迄今为止,它本质上是一个 2D 图像合成引擎。
我的扑克牌是预先构建的纹理(带有 alpha),因此渲染:
glBegin(GL_TRIANGLE_STRIP);
glTexCoord2f(0.0, 0.0);
glVertex3d(startDraw_X, startDraw_Y, 0.0);
glTexCoord2f(1.0, 0.0);
glVertex3d(endDraw_X, startDraw_Y, 0.0);
glTexCoord2f(0.0, 1.0);
glVertex3d(startDraw_X, endDraw_Y, 0.0);
glTexCoord2f(1.0, 1.0);
glVertex3d (endDraw_X, endDraw_Y, 0.0);
glEnd();
这很好用,并提供 1:1 像素映射,以获得高图像质量。
问题:我如何(便宜、快速地)使用 OpenGL“翻转”或扭曲我的卡片?旋转部分并不难,但我在透视方面遇到了麻烦。
具体来说,我想到了 iPhone 应用程序(例如音乐)中 UIViews 的水平翻转动作。UIView 将通过水平收缩来翻转,呈现出透视的外观(视图的“后”坐标将垂直收缩。)
感谢您提供任何帮助或提示。