• <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等多種語言 程序猿

            以前早就看過了如何使用opengl繪制3ds靜態對象的材料
            現在總把這個加入到引擎里面了
            具體代碼如下:

             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 int main(int argc, char *argv[])
            13 {   
            14     Device *device = InitDevice("蓋莫引擎天空盒測試");
            15     device->SetClearColor(core::Color(80,90,255));
            16    
            17     //! 獲取場景管理器 
            18     RefPtr<SceneManager> scenemanager = SceneManager::GetSceneManager(); 
            19                                                                  
            20     //! 獲取資源管理器 
            21     ResourceManager* resourcemanager = device->GetResourceManager();
            22     //! 獲取天空圖片資源
            23     //! 獲取天空圖形指針 
            24     skyimage[0= resourcemanager->GetImage("sky_front","..\\image//sky//front.jpg");
            25     skyimage[1= resourcemanager->GetImage("sky_back","..\\image//sky//back.jpg");
            26     skyimage[2= resourcemanager->GetImage("sky_left","..\\image//sky//left.jpg");
            27     skyimage[3= resourcemanager->GetImage("sky_right","..\\image//sky//right.jpg");
            28     skyimage[4= resourcemanager->GetImage("sky_top","..\\image//sky//top.bmp");
            29   
            30     skytexture[0= resourcemanager->GetTexture("sky_front",skyimage[0]);
            31     skytexture[1= resourcemanager->GetTexture("sky_back",skyimage[1]);        
            32     skytexture[2= resourcemanager->GetTexture("sky_left",skyimage[2]);
            33     skytexture[3= resourcemanager->GetTexture("sky_right",skyimage[3]);   
            34     skytexture[4= resourcemanager->GetTexture("sky_top",skyimage[4]); 
            35     //! 獲取天空盒指針
            36     RefPtr<SceneNode> skybox = scenemanager->GetSkyBox(NULL,skytexture[0],skytexture[1],skytexture[2],skytexture[3],skytexture[4],500,500,600);  
            37     
            38     //! 設置地形數據
            39     terrainimage[0= resourcemanager->GetImage("terrain_image","..\\terrain//terrain.bmp");
            40     terrainimage[1= resourcemanager->GetImage("terrain_detail","..\\terrain//detail.bmp");
            41     terraintexture[0= resourcemanager->GetTexture("terrain_texture1",terrainimage[0]);
            42     terraintexture[1= resourcemanager->GetTexture("terrain_texture2",terrainimage[1]);
            43     RefPtr<Terrain>  terrain = scenemanager->GetTerrain(NULL,"..\\terrain//terrain.raw",1024,terraintexture[0],terraintexture[1]); 
            44   
            45     int height = terrain->GetHeight(440,370);
            46     height += 20;
            47     //! 獲取新的攝像機并設置為活動攝像機
            48     RefPtr<Camera> camera = scenemanager->CreateCamera("mycamera", Vector3f(10,height,10),
            49                                                                    Vector3f(440,height - 40,370),
            50                                                                    Vector3f(0,1,0));
            51     //! 設置當前活動攝像機 
            52     scenemanager->SetActiveCamera(camera);
            53     camera->SetViewport(0,0,640,480);  
            54     
            55     //! 霧設置
            56     RefPtr<Fog> fog = scenemanager->GetFog();
            57     fog->SetColor(core::Color(0.5f,0.5f,0.1f));
            58     fog->SetDensity(0.001f);
            59     fog->SetQuality(0.003f);
            60     fog->SetBound(0.5f,1000.0f);
            61     fog->Render();
            62     
            63     RefPtr<Model3D> model = scenemanager->GetStaticModel("3dsmodel");
            64     model->Load("digger.3ds");
            65     //model->SetScale(Vector3f(125,125,125));
            66     model->SetTranslate(Vector3f(512,terrain->GetHeight(512,512),512));
            67     
            68     BEGIN_LOOP(device);
            69         camera->SetPerspective(45,640.0f/480.0f,6.0f,1000);
            70         camera->Render();
            71         skybox->Render();
            72         model->Render();
            73         static float angle = 0.0f;      
            74         skybox->SetRotate(core::AXIS_Z,angle);
            75         terrain->Render();
            76         angle+=0.000001;
            77         if(angle>360)
            78            angle-=360;
            79     END_LOOP(device);
            80     
            81     device->Close();
            82     device->Drop();
            83     
            84     system("PAUSE");
            85     return EXIT_SUCCESS;
            86 }
            87 
            88 
            這里設計的操作靜態模型的相關主要函數有
            加載模型,模型平移旋轉縮放處理
            具體的貼圖如下:

            只是模型的顏色不太對,看來需要調整下其rbg次序
            再換一個人物模型:
            代碼:
             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 int main(int argc, char *argv[])
            13 {   
            14     Device *device = InitDevice("蓋莫引擎天空盒測試");
            15     device->SetClearColor(core::Color(80,90,255));
            16    
            17     //! 獲取場景管理器 
            18     RefPtr<SceneManager> scenemanager = SceneManager::GetSceneManager(); 
            19                                                                  
            20     //! 獲取資源管理器 
            21     ResourceManager* resourcemanager = device->GetResourceManager();
            22     //! 獲取天空圖片資源
            23     //! 獲取天空圖形指針 
            24     skyimage[0= resourcemanager->GetImage("sky_front","..\\image//sky//front.jpg");
            25     skyimage[1= resourcemanager->GetImage("sky_back","..\\image//sky//back.jpg");
            26     skyimage[2= resourcemanager->GetImage("sky_left","..\\image//sky//left.jpg");
            27     skyimage[3= resourcemanager->GetImage("sky_right","..\\image//sky//right.jpg");
            28     skyimage[4= resourcemanager->GetImage("sky_top","..\\image//sky//top.bmp");
            29   
            30     skytexture[0= resourcemanager->GetTexture("sky_front",skyimage[0]);
            31     skytexture[1= resourcemanager->GetTexture("sky_back",skyimage[1]);        
            32     skytexture[2= resourcemanager->GetTexture("sky_left",skyimage[2]);
            33     skytexture[3= resourcemanager->GetTexture("sky_right",skyimage[3]);   
            34     skytexture[4= resourcemanager->GetTexture("sky_top",skyimage[4]); 
            35     //! 獲取天空盒指針
            36     RefPtr<SceneNode> skybox = scenemanager->GetSkyBox(NULL,skytexture[0],skytexture[1],skytexture[2],skytexture[3],skytexture[4],500,500,600);  
            37     
            38     //! 設置地形數據
            39     terrainimage[0= resourcemanager->GetImage("terrain_image","..\\terrain//terrain.bmp");
            40     terrainimage[1= resourcemanager->GetImage("terrain_detail","..\\terrain//detail.bmp");
            41     terraintexture[0= resourcemanager->GetTexture("terrain_texture1",terrainimage[0]);
            42     terraintexture[1= resourcemanager->GetTexture("terrain_texture2",terrainimage[1]);
            43     RefPtr<Terrain>  terrain = scenemanager->GetTerrain(NULL,"..\\terrain//terrain.raw",1024,terraintexture[0],terraintexture[1]); 
            44   
            45     int height = terrain->GetHeight(440,370);
            46     height += 40;
            47     //! 獲取新的攝像機并設置為活動攝像機
            48     RefPtr<Camera> camera = scenemanager->CreateCamera("mycamera", Vector3f(10,height,10),
            49                                                                    Vector3f(440,height - 30,370),
            50                                                                    Vector3f(0,1,0));
            51     //! 設置當前活動攝像機 
            52     scenemanager->SetActiveCamera(camera);
            53     camera->SetViewport(0,0,640,480);  
            54     
            55     //! 霧設置
            56     RefPtr<Fog> fog = scenemanager->GetFog();
            57     fog->SetColor(core::Color(0.3f,0.5f,0.2f));
            58     fog->SetDensity(0.0012f);
            59     fog->SetQuality(0.004f);
            60     fog->SetBound(0.2f,1000.0f);
            61     fog->Render();
            62     
            63     RefPtr<Model3D> model = scenemanager->GetStaticModel("3dsmodel");
            64     model->Load("model.3ds");
            65     model->SetScale(Vector3f(125,125,125));
            66     model->SetTranslate(Vector3f(510,terrain->GetHeight(512,512),512));
            67     
            68     BEGIN_LOOP(device);
            69         camera->SetPerspective(45,640.0f/480.0f,6.0f,1000);
            70         camera->Render();
            71         skybox->Render();
            72         model->Render();
            73         static float angle = 0.0f;      
            74         skybox->SetRotate(core::AXIS_Z,angle);
            75         terrain->Render();
            76         angle+=0.000003;
            77         if(angle>360)
            78            angle-=360;
            79     END_LOOP(device);
            80     
            81     device->Close();
            82     device->Drop();
            83     
            84     system("PAUSE");
            85     return EXIT_SUCCESS;
            86 }
            87 
            88 

            貼圖:

            需要注意的是由于模型大小不一致故需要調整模型大小
             
            posted on 2010-02-09 17:27 ccsdu2009 閱讀(1194) 評論(0)  編輯 收藏 引用
             
            日本福利片国产午夜久久| 2020国产成人久久精品| 波多野结衣久久一区二区| 国产精品午夜久久| 久久99国产精品二区不卡| 国产欧美久久一区二区| 99久久人妻无码精品系列蜜桃| 久久精品亚洲一区二区三区浴池| 精品人妻伦九区久久AAA片69| 日产精品久久久久久久| av色综合久久天堂av色综合在| 久久精品国产男包| 久久精品国产亚洲av麻豆小说| 久久人妻少妇嫩草AV无码专区| 久久精品国产99久久久| 久久久久久狠狠丁香| 久久精品国产清自在天天线| 久久综合狠狠综合久久97色| 久久综合五月丁香久久激情| 久久精品成人欧美大片| 久久精品无码专区免费东京热| 青青草原综合久久| 久久久久国产精品三级网| 久久精品无码一区二区WWW| 久久亚洲精精品中文字幕| 久久精品一区二区三区不卡| 狠狠色丁香婷婷综合久久来来去| 偷窥少妇久久久久久久久| 精品国际久久久久999波多野| 国产成人久久精品二区三区| 久久久久精品国产亚洲AV无码| 五月丁香综合激情六月久久| 天天爽天天爽天天片a久久网| 亚洲欧洲中文日韩久久AV乱码| 久久精品天天中文字幕人妻| 国产女人aaa级久久久级| 伊人久久精品无码av一区| 91久久精品国产成人久久| 中文字幕人妻色偷偷久久| 国产一区二区精品久久岳| 无码人妻精品一区二区三区久久 |