(Mac OS X,Cocoa,C/C++,OpenGL,有点数学挑战)在OpenGL中玩扑克牌“3D”旋转 - 透视?
项目是一个实时(30fps)扑克游戏,具有2D视图。 OpenGL视图设置为使用glOrtho的正投影;相机总是直视卡片/桌子。迄今为止,它基本上是一个2D图像合成引擎。
我打牌是预先构建的纹理(阿尔法),正是如此呈现:
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“翻转”或扭曲我的卡?旋转部分并不难,但我在透视方面遇到了麻烦。
具体来说,我记得UIViews在iPhone应用程序(例如音乐)中的水平翻转动作。 UIView将出现翻转水平收缩,外观透视(视图的“后”坐标将垂直收缩。)
感谢您的任何帮助或提示。
+1。您可以在您的正射空间的tex tex coords中创建一个假视角扭曲,或者您可以利用已经存在的GL的力量并将其制作为3D。那么这个观点甚至会看起来不错! :) – 2010-08-19 03:50:54
感谢您的帮助球员。通过使用glFrustrum,你的意思是我应该专门为这张一张牌抽签做这件事,然后重新设置为glOrtho以获得其他所有的抽奖? – SirRatty 2010-08-19 04:36:23
考虑到其余的绘图显然非常2D,它可能不会有太大的差别。既然你正在设置和调用'glFrustum'作为它的一部分,我可能会在整个过程中使用它。 – 2010-08-19 04:47:17