• <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模型來說
            一個(gè)模型由若干動畫組成
            一個(gè)動畫由若干幀構(gòu)成
            每個(gè)動畫都有自己的名字
            具體渲染的時(shí)候是對幀做插值的
            具體測試?yán)尤缦?

              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     //! 設(shè)置地形數(shù)據(jù)
             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     //! 獲取新的攝像機(jī)并設(shè)置為活動攝像機(jī)
             49     RefPtr<Camera> camera = scenemanager->CreateCamera("mycamera", Vector3f(10,height,10),
             50                                                                    Vector3f(512,height - 30,512),
             51                                                                    Vector3f(0,1,0));
             52     //! 設(shè)置當(dāng)前活動攝像機(jī) 
             53     scenemanager->SetActiveCamera(camera);
             54     camera->SetViewport(0,0,640,480);  
             55     
             56     //! 霧設(shè)置
             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游戲開發(fā)一書
            再來一個(gè)Opengl3d游戲開發(fā)中士兵的模型例子如下(當(dāng)然我拿走了他的槍):

            我會先讓引擎具備常見的功能
            之后我就會考慮加入引擎自己的亮點(diǎn)和消除引擎存在的Bug
            當(dāng)然了各類編輯器的設(shè)計(jì)也是遲早的了
            再來一個(gè)機(jī)器人的md2模型
            posted on 2010-02-10 11:34 ccsdu2009 閱讀(1511) 評論(0)  編輯 收藏 引用
             
            久久人妻少妇嫩草AV蜜桃| 久久噜噜久久久精品66| 久久亚洲日韩看片无码| 久久本道久久综合伊人| 精品久久香蕉国产线看观看亚洲| 久久久亚洲欧洲日产国码是AV | 偷偷做久久久久网站| 欧美日韩成人精品久久久免费看| 久久成人永久免费播放| 亚洲综合久久综合激情久久 | 91精品国产乱码久久久久久| 精品久久久无码人妻中文字幕| 久久男人AV资源网站| 久久99精品久久久久久不卡| 国产精品美女久久久久av爽| 国产成人精品久久一区二区三区av| 久久精品免费一区二区三区| 国产成人精品久久亚洲| 99久久精品国产一区二区| 久久激情五月丁香伊人| 亚洲精品成人网久久久久久| 国内精品久久国产| 久久精品国产久精国产果冻传媒 | 粉嫩小泬无遮挡久久久久久| 国产V综合V亚洲欧美久久| 久久综合久久综合九色| 久久99久久无码毛片一区二区| 无码任你躁久久久久久老妇| 一本一本久久A久久综合精品 | 日产久久强奸免费的看| 无码国内精品久久综合88| 青草国产精品久久久久久| 国产精品久久亚洲不卡动漫| 久久免费观看视频| 久久精品亚洲一区二区三区浴池| 91精品国产高清久久久久久io| 久久精品国产福利国产琪琪| 久久人人爽人人爽人人片AV东京热 | 一级做a爱片久久毛片| 国产成人精品综合久久久| 久久国语露脸国产精品电影|