作者: dr_watson
目前dr_watson为Cocoachina读者带来的原创优秀教学《游戏是这样写成的》系列文章已经发表了四篇,给广大iPhone开发者在游戏开发方面以极大的帮助。今天给读者们带来第五篇:MD2模型显示,相信会让广大iPhone游戏开发者学习到更多iPhone 3D游戏开发的知识。
《游戏是这样写成的》iPhone游戏开发系列教学,作者:dr_watson,优秀iPhone游戏CubicMan开发者。
第一篇: 建立 OpenGL ES 项目
第二篇: 混合 C/C++/Obj-C 的应用
第三篇: 简单的游戏框架
第四篇: 缩放和混色
cocoachina.com专稿,如需转载请提前联系。


Seven同学在论坛讨论怎样显示MD2,正好我以前在PSP上有个MD2的类,我把它移植了过来,给大家参考一下或拿来玩玩。
在Wrapper里,我也加了两个新功能,一个是Enable2D,一个是Enable3D,方便我们混合2D/3D。
-
void Enable2D()
-
{
-
int width = SCREEN_WIDTH;
-
int height = SCREEN_HEIGHT;
-
-
glViewport (0, 0, width, height);
-
-
glMatrixMode (GL_PROJECTION);
-
glLoadIdentity ();
-
glOrthof(0, (float)width, 0, (float)height, 0, 100);
-
glMatrixMode (GL_MODELVIEW);
-
glLoadIdentity();
-
-
glEnable (GL_BLEND);
-
glEnable (GL_TEXTURE_2D);
-
glDisable (GL_CULL_FACE);
-
glDisable (GL_DEPTH_TEST);
-
glDisable (GL_LIGHTING);
-
//glDisableClientState (GL_NORMAL_ARRAY);
-
-
}
-
-
-
void Enable3D()
-
{
-
int width = SCREEN_WIDTH;
-
int height = SCREEN_HEIGHT;
-
float aspect = (float)width/(float)height;
-
-
glViewport (0, 0, width, height);
-
glScissor (0, 0, width, height);
-
-
//glMatrixMode (GL_MODELVIEW);
-
//glLoadIdentity ();
-
-
glMatrixMode (GL_PROJECTION);
-
glLoadIdentity ();
-
InitPerspective (60.f, aspect, 0.1f, 1000.f);
-
-
glMatrixMode (GL_MODELVIEW);
-
glLoadIdentity ();
-
-
-
glEnable (GL_CULL_FACE);
-
//glDisable (GL_BLEND);
-
glEnable (GL_DEPTH_TEST);
-
//glEnable (GL_LIGHTING);
-
//glEnableClientState (GL_NORMAL_ARRAY);
-
-
//glEnable(GL_NORMALIZE);
-
}
因为我们没有用lighting, 我把Normal Array暂时弄走了。
这个例子,每隔8秒会换到另一个动作。人的模型是732面,枪是102面。