YamateDD

iPhone开发 web开发

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Seven 同學在論譠討論怎樣顯示MD2, 正好我以前在PSP 上有個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面。

posted on 2012-02-03 15:02  YamateDD  阅读(215)  评论(0编辑  收藏  举报