• <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)  編輯 收藏 引用
             
            免费一级欧美大片久久网| 人妻无码αv中文字幕久久琪琪布 人妻无码精品久久亚瑟影视 | 久久精品国产免费| 91久久精品无码一区二区毛片| 久久青草国产精品一区| 99久久国产综合精品网成人影院| 久久伊人色| 久久国产精品成人片免费| 久久精品国产亚洲AV不卡| 亚洲人成伊人成综合网久久久| 久久久九九有精品国产| 精品国产日韩久久亚洲| 欧美一区二区精品久久| 77777亚洲午夜久久多喷| 久久se精品一区精品二区| 波多野结衣AV无码久久一区| 91精品观看91久久久久久| 99久久国产精品免费一区二区| 伊人久久免费视频| 久久久久久亚洲AV无码专区| 性高湖久久久久久久久AAAAA| 亚洲一区二区三区日本久久九| 久久久精品人妻一区二区三区蜜桃| 久久www免费人成看国产片| 久久香蕉国产线看观看精品yw| 女同久久| 亚洲欧美另类日本久久国产真实乱对白| 亚洲国产精品久久久久网站| 亚洲国产精品无码久久| 久久久久久精品成人免费图片| 精品久久久久久无码人妻蜜桃| 99久久免费国产精品热| 亚洲国产精品18久久久久久| 伊人久久久AV老熟妇色| 亚洲午夜久久久| 伊人久久成人成综合网222| 日本精品久久久久久久久免费| 精品久久久久久久久久久久久久久| 精品无码久久久久久久久久| 99精品久久久久久久婷婷| 久久激情五月丁香伊人|