• <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 閱讀(1512) 評論(0)  編輯 收藏 引用
             
            中文无码久久精品| 久久久国产一区二区三区| 久久精品免费全国观看国产| 一本久久综合亚洲鲁鲁五月天| 亚洲精品乱码久久久久66| 久久婷婷五月综合97色一本一本| 99国产精品久久久久久久成人热| 久久久久国产亚洲AV麻豆| 国产成人精品综合久久久久| 99久久99久久精品国产片| 99精品久久精品一区二区| 国产伊人久久| 国产精品久久久福利| 久久久久久久久久久久久久| 97精品伊人久久久大香线蕉| 欧美一区二区三区久久综合| 久久综合五月丁香久久激情| 久久91综合国产91久久精品| 亚洲午夜久久久影院伊人| 香蕉久久AⅤ一区二区三区| 久久精品一区二区三区不卡| 无码国产69精品久久久久网站| 国产成人综合久久精品红| 国产亚洲精久久久久久无码AV| 久久精品亚洲精品国产色婷| 波多野结衣久久精品| 久久福利片| 欧美久久亚洲精品| 国产精品日韩深夜福利久久| avtt天堂网久久精品| 久久99精品久久久久婷婷| 色婷婷综合久久久中文字幕| 亚洲精品无码久久一线| 无码日韩人妻精品久久蜜桃| 波多野结衣久久精品| 久久天天躁狠狠躁夜夜不卡| 久久久久久久久久久久久久| 麻豆亚洲AV永久无码精品久久| 久久久久久久精品成人热色戒| 老男人久久青草av高清| 亚洲综合日韩久久成人AV|