• <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)  編輯 收藏 引用
             
            亚洲国产精品综合久久一线| 欧美亚洲国产精品久久| 精品国产青草久久久久福利| 一本色道久久综合| 久久ww精品w免费人成| jizzjizz国产精品久久| 18岁日韩内射颜射午夜久久成人| 久久九色综合九色99伊人| 一本综合久久国产二区| 99久久精品费精品国产一区二区| 国内精品伊人久久久久网站| 亚洲va久久久久| 久久国产乱子伦精品免费强| 欧美一级久久久久久久大| av午夜福利一片免费看久久| 久久久久女教师免费一区| 久久婷婷五月综合国产尤物app| 精品久久久久久久中文字幕 | 精品人妻伦一二三区久久| 中文字幕无码免费久久| 久久99精品九九九久久婷婷| 久久精品蜜芽亚洲国产AV| 久久青青草原精品国产软件| 精品国产乱码久久久久久1区2区 | 久久福利片| 中文精品久久久久人妻不卡| 亚洲精品久久久www| 国产精品成人无码久久久久久 | 人妻少妇久久中文字幕一区二区| 99久久精品国产一区二区三区 | 久久只有这里有精品4| 国产国产成人久久精品| 国产精品美女久久久m| 久久婷婷成人综合色综合| 一本久久a久久精品亚洲| 热久久视久久精品18| 精品国产日韩久久亚洲| 一本久久a久久精品综合香蕉| 亚洲欧美另类日本久久国产真实乱对白| 99热成人精品热久久669| 久久精品国产只有精品2020|