图片:
图片:
Seven 同學在論譠討論怎樣顯示MD2, 正好我以前在PSP 上有個MD2的類,我把它移植了過來,給大家參考一下或拿來玩玩。
(
补充说明:md2动画是在3d max里做的,需要导入到opengl中。opengl可以调用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面。
附件:

(497 K) 下载次数:784
阅读(409) | 评论(0) | 转发(0) |