Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5406463
  • 博文数量: 763
  • 博客积分: 12108
  • 博客等级: 上将
  • 技术积分: 15717
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-28 21:21
个人简介

业精于勤,荒于嬉

文章分类

全部博文(763)

文章存档

2018年(6)

2017年(15)

2016年(2)

2015年(31)

2014年(14)

2013年(87)

2012年(75)

2011年(94)

2010年(190)

2009年(38)

2008年(183)

2007年(28)

分类: C/C++

2010-01-03 18:55:56

图片:
图片:
Seven 同學在論譠討論怎樣顯示MD2, 正好我以前在PSP 上有個MD2的類,我把它移植了過來,給大家參考一下或拿來玩玩。

补充说明:md2动画是在3d max里做的,需要导入到opengl中。opengl可以调用md2格式的动画)

在Wrapper 里,我也加了兩個新功能,一個是 Enable2D(),一個是 Enable3D(),方便我們混合2D/3D。

复制代码

  1. void Enable2D()
  2. {
  3.     int width = SCREEN_WIDTH;
  4.     int height = SCREEN_HEIGHT;
  5.     
  6.     glViewport      (0, 0, width, height);
  7.     
  8.     glMatrixMode    (GL_PROJECTION);
  9.     glLoadIdentity  ();
  10.     glOrthof(0, (float)width, 0, (float)height, 0, 100);
  11.     glMatrixMode    (GL_MODELVIEW);
  12.     glLoadIdentity();
  13.     
  14.     glEnable                (GL_BLEND);
  15.     glEnable                (GL_TEXTURE_2D);
  16.     glDisable                (GL_CULL_FACE);
  17.     glDisable                (GL_DEPTH_TEST);
  18.     glDisable                (GL_LIGHTING);
  19.     //glDisableClientState    (GL_NORMAL_ARRAY);
  20.     
  21. }


  22. void Enable3D()
  23. {    
  24.     int width = SCREEN_WIDTH;
  25.     int height = SCREEN_HEIGHT;
  26.     float aspect = (float)width/(float)height;
  27.     
  28.     glViewport          (0, 0, width, height);
  29.     glScissor           (0, 0, width, height);
  30.     
  31.     //glMatrixMode        (GL_MODELVIEW);
  32.     //glLoadIdentity      ();
  33.     
  34.     glMatrixMode        (GL_PROJECTION);
  35.     glLoadIdentity      ();
  36.     InitPerspective     (60.f, aspect, 0.1f, 1000.f);
  37.     
  38.     glMatrixMode        (GL_MODELVIEW);
  39.     glLoadIdentity      ();
  40.     
  41.     
  42.     glEnable           (GL_CULL_FACE);
  43.     //glDisable            (GL_BLEND);
  44.     glEnable            (GL_DEPTH_TEST);
  45.     //glEnable            (GL_LIGHTING);
  46.     //glEnableClientState (GL_NORMAL_ARRAY);
  47.     
  48.     //glEnable(GL_NORMALIZE);    
  49. }


因為我們沒有用lighting,我把Normal Array 暫時弄走了。

這個例子,每格8秒會換到另一個動作。人的模型是732 面,槍是102面。
附件: (497 K) 下载次数:784
阅读(1539) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~