• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Cpper
            C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿

            剛改造了以前做的蓋莫游戲引擎渲染md2的代碼.
            對于md2模型來說
            一個模型由若干動畫組成
            一個動畫由若干幀構成
            每個動畫都有自己的名字
            具體渲染的時候是對幀做插值的
            具體測試例子如下:

              1 #include <cstdlib>
              2 #include <iostream>
              3 #include <GEngine/Main.hpp>
              4 
              5 using namespace std;
              6 using namespace core; 
              7 core::RefPtr<core::Image>   skyimage[5];
              8 core::RefPtr<core::Texture> skytexture[5];
              9 core::RefPtr<core::Image>   terrainimage[2];
             10 core::RefPtr<core::Texture> terraintexture[2];
             11  
             12  
             13 int main(int argc, char *argv[])
             14 {   
             15     Device *device = InitDevice("蓋莫引擎md2模型測試");
             16     device->SetClearColor(core::Color(80,90,255));
             17    
             18     //! 獲取場景管理器 
             19     RefPtr<SceneManager> scenemanager = SceneManager::GetSceneManager(); 
             20                                                                  
             21     //! 獲取資源管理器 
             22     ResourceManager* resourcemanager = device->GetResourceManager();
             23     //! 獲取天空圖片資源
             24     //! 獲取天空圖形指針 
             25     skyimage[0= resourcemanager->GetImage("sky_front","..\\image//sky//front.jpg");
             26     skyimage[1= resourcemanager->GetImage("sky_back","..\\image//sky//back.jpg");
             27     skyimage[2= resourcemanager->GetImage("sky_left","..\\image//sky//left.jpg");
             28     skyimage[3= resourcemanager->GetImage("sky_right","..\\image//sky//right.jpg");
             29     skyimage[4= resourcemanager->GetImage("sky_top","..\\image//sky//top.bmp");
             30   
             31     skytexture[0= resourcemanager->GetTexture("sky_front",skyimage[0]);
             32     skytexture[1= resourcemanager->GetTexture("sky_back",skyimage[1]);        
             33     skytexture[2= resourcemanager->GetTexture("sky_left",skyimage[2]);
             34     skytexture[3= resourcemanager->GetTexture("sky_right",skyimage[3]);   
             35     skytexture[4= resourcemanager->GetTexture("sky_top",skyimage[4]); 
             36     //! 獲取天空盒指針
             37     RefPtr<SceneNode> skybox = scenemanager->GetSkyBox(NULL,skytexture[0],skytexture[1],skytexture[2],skytexture[3],skytexture[4],500,500,600);  
             38     
             39     //! 設置地形數據
             40     terrainimage[0= resourcemanager->GetImage("terrain_image","..\\terrain//terrain.bmp");
             41     terrainimage[1= resourcemanager->GetImage("terrain_detail","..\\terrain//detail.bmp");
             42     terraintexture[0= resourcemanager->GetTexture("terrain_texture1",terrainimage[0]);
             43     terraintexture[1= resourcemanager->GetTexture("terrain_texture2",terrainimage[1]);
             44     RefPtr<Terrain>  terrain = scenemanager->GetTerrain(NULL,"..\\terrain//terrain.raw",1024,terraintexture[0],terraintexture[1]); 
             45   
             46     int height = terrain->GetHeight(440,370);
             47     height += 40;
             48     //! 獲取新的攝像機并設置為活動攝像機
             49     RefPtr<Camera> camera = scenemanager->CreateCamera("mycamera", Vector3f(10,height,10),
             50                                                                    Vector3f(512,height - 30,512),
             51                                                                    Vector3f(0,1,0));
             52     //! 設置當前活動攝像機 
             53     scenemanager->SetActiveCamera(camera);
             54     camera->SetViewport(0,0,640,480);  
             55     
             56     //! 霧設置
             57     RefPtr<Fog> fog = scenemanager->GetFog();
             58     fog->SetColor(core::Color(0.3f,0.5f,0.2f));
             59     fog->SetDensity(0.0012f);
             60     fog->SetQuality(0.004f);
             61     fog->SetBound(0.2f,1000.0f);
             62     fog->Render();
             63     
             64     RefPtr<ActiveModel3D> model = scenemanager->GetActiveModel("md2model");
             65     model->Load("..\\model\\hobgoblin.md2");
             66     RefPtr<Image>   md2image = resourcemanager->GetImage("md2image","..\\model//hobgoblin.bmp");
             67     RefPtr<Texture> md2texture = resourcemanager->GetTexture("md2texture",md2image);
             68     model->LoadTexture(md2texture);
             69     model->SetTranslate(Vector3f(180,10+terrain->GetHeight(112,512),180));
             70    
             71     std::vector<AnimationFrame> frames; 
             72     model->GetFrameList(frames);
             73  
             74     BEGIN_LOOP(device);
             75         camera->SetPerspective(45,640.0f/480.0f,6.0f,1000);
             76         camera->Render();
             77         skybox->Render();
             78         terrain->Render();
             79         model->Render();
             80         static int begin_frame = 0;
             81         static int end_frame = begin_frame+1;;
             82         static float t = 0.0f;
             83         t+=0.02;
             84         if(t>1)
             85         {
             86            t = 0
             87            end_frame++;
             88            begin_frame++;
             89         }
             90         if(begin_frame == frames.back().frame_end)
             91            end_frame = begin_frame = 0;
             92         model->SetCurrentFrame(begin_frame,end_frame,t);        
             93         
             94         static float angle = 0.0f;      
             95         skybox->SetRotate(core::AXIS_Z,angle);
             96         
             97         angle+=0.000003;
             98         if(angle>360)
             99            angle-=360;
            100     END_LOOP(device);
            101     
            102     device->Close();
            103     device->Drop();
            104     
            105     system("PAUSE");
            106     return EXIT_SUCCESS;
            107 }
            108 
            109 
            貼圖如下:這里的模型是源于opengl游戲開發一書
            再來一個Opengl3d游戲開發中士兵的模型例子如下(當然我拿走了他的槍):

            我會先讓引擎具備常見的功能
            之后我就會考慮加入引擎自己的亮點和消除引擎存在的Bug
            當然了各類編輯器的設計也是遲早的了
            再來一個機器人的md2模型
            posted on 2010-02-10 11:34 ccsdu2009 閱讀(1511) 評論(0)  編輯 收藏 引用
             
            国产精品九九久久精品女同亚洲欧美日韩综合区 | 一本一道久久a久久精品综合| 色综合久久综合网观看| 激情综合色综合久久综合| 日韩中文久久| 韩国免费A级毛片久久| 国产精品狼人久久久久影院 | 亚洲伊人久久成综合人影院| 77777亚洲午夜久久多喷| 久久亚洲高清观看| 久久亚洲AV成人无码| 久久久久国产一级毛片高清版| 综合久久精品色| 久久精品视频免费| 免费无码国产欧美久久18| 青青青伊人色综合久久| 久久久久久国产精品美女| 99久久人人爽亚洲精品美女| 久久久久亚洲精品无码蜜桃| 亚洲欧洲久久久精品| 国产精品日韩欧美久久综合| 精品国产乱码久久久久久郑州公司 | 久久超碰97人人做人人爱| 久久国内免费视频| 久久人人爽人人澡人人高潮AV| 久久精品国产精品亚洲精品| 午夜精品久久久久久毛片| 伊人 久久 精品| 亚洲午夜福利精品久久| 久久久久久久综合综合狠狠| 国产午夜精品理论片久久| 久久精品国产精品青草| 久久精品国产半推半就| 精品人妻久久久久久888| 99久久国产综合精品女同图片| 无码八A片人妻少妇久久| 欧美激情精品久久久久久久| 亚洲精品NV久久久久久久久久| 久久亚洲国产精品123区| 国产精品成人99久久久久 | 久久无码AV中文出轨人妻|