• <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等多種語言 程序猿
            本例子是使用蓋莫游戲引擎+ode做的第三簡單demo
            這是對關節合頁的測試代碼:
              1 //! 2010.03.05
              2 /////////////////////////////////////////////////////
              3 /// 蓋莫游戲引擎蓋莫引擎物理場景測試3
              4 /////////////////////////////////////////////////////  
              5 #include <GEngine/Gaimo.hpp>
              6 using namespace std;
              7 
              8 //! 盒子大小和質量 
              9 #define SIDE (8.0f)     
             10 #define MASS (1.0) 
             11 //! 盒子紋理
             12 int  cubeid = 0;  
             13 
             14 core::PhysicsEngine<dWorldID,dSpaceID,dJointGroupID,dBodyID,dGeomID> engine;
             15 core::PhysicsBody<dBodyID,dGeomID,1> object[2];
             16 dJointID hinge;
             17 const std::string name[] = {"b1","b2"};
             18  
             19 //! 初始化物理場景
             20 void Init(); 
             21 //! 物理場景更新
             22 void PhysicsLoop();  
             23 
             24 int main(int argc, char **argv)
             25 {   
             26     Init();
             27     
             28     //! 初始化引擎設備并得到設備指針
             29     core::Device* device = core::InitDevice("蓋莫引擎物理場景測試3");
             30     //! 得到引擎場景指針
             31     core::RefPtr<core::SceneManager> scenemanager = device->GetSceneManager();
             32     //! 得到引擎資源指針
             33     core::ResourceManager* resourcemanager = device->GetResourceManager();
             34    
             35     //! 得到logo圖形和其紋理
             36     core::RefPtr<core::Image>   box = resourcemanager->GetImage("box","..\\image/logo.jpg");
             37     core::RefPtr<core::Texture> boxtexture = resourcemanager->GetTexture("logo",box);
             38     boxtexture->Bind();
             39     cubeid = boxtexture->GetTextureId();
             40    
             41     //! 獲取全局攝像機
             42     core::RefPtr<core::Camera> camera = scenemanager->GetGlobalCamera(Vector3f(30,30,30),
             43                                                                       Vector3f(0,0,0),
             44                                                                       Vector3f(0,1,0));
             45     camera->SetViewport(0,0,640,480);  
             46     camera->SetPerspective(50.0f,640.0f/480.0f,0.1f,1000.0f);                                                                  
             47     glClearDepth(1.0f);                                                                                
             48     glEnable(GL_DEPTH_TEST);
             49     glShadeModel(GL_SMOOTH);                                    
             50     glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);   
             51 
             52     BEGIN_LOOP(device)
             53        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);            
             54        glLoadIdentity();
             55        core::Render::SetClearColor(core::Color::Blue);
             56        camera->SetPerspective(45.0f,640.0f/480.0f,0.1f,1000.0f);
             57        camera->Render();  
             58        PhysicsLoop(); 
             59     END_LOOP(device)
             60    
             61     device->Close();
             62     device->Drop();
             63 
             64     return 0;
             65 }
             66 
             67 //! 初始化物理場景
             68 void Init()
             69 {
             70       //! 設置調整盒子質量 
             71       dMass m;
             72       dMassSetBox(&m,1,SIDE,SIDE,SIDE);
             73       dMassAdjust(&m,MASS);
             74       //! 從軸和角度獲取四元數 
             75       dQuaternion q;
             76       dQFromAxisAndAngle(q,1,1,0,0.25*M_PI);
             77       //! 設置盒子1物理參數 
             78       object[0].body = engine.GetBody(name[0],Vector3f(0.5*SIDE,0.5*SIDE,1)); 
             79       dBodySetMass (object[0].body,&m);
             80       dBodySetQuaternion (object[0].body,q);
             81       //! 設置盒子2物理參數 
             82       object[1].body = engine.GetBody(name[1],Vector3f(-0.5*SIDE,-0.5*SIDE,1));
             83       dBodySetMass (object[1].body,&m);
             84       dBodySetQuaternion(object[1].body,q);
             85       //! 生成合頁關節并設置參數 
             86       hinge = dJointCreateHinge(engine.GetWorld(),0);
             87       dJointAttach (hinge,object[0].body,object[1].body);
             88       dJointSetHingeAnchor(hinge,0,0,1);
             89       dJointSetHingeAxis(hinge,1,-1,1.41421356);       
             90 }
             91 
             92 //! 物理場景更新
             93 void PhysicsLoop()
             94 {   
             95     //! 角阻尼常量   
             96     const dReal kd = -0.3
             97  
             98     static dReal a=0;
             99     const dReal *= dBodyGetAngularVel(object[0].body);
            100     dBodyAddTorque (object[0].body,kd*w[0],kd*w[1]+0.15*cos(a),kd*w[2]+0.15*sin(a));
            101     dWorldStep(engine.GetWorld(),0.05);
            102     a += 0.01;
            103  
            104     dReal sides1[3= {SIDE,SIDE,SIDE};
            105     dReal sides2[3= {SIDE,SIDE,SIDE*0.8f};
            106     const dReal *pos,*mat;
            107     pos = dBodyGetPosition(object[0].body);
            108     mat = dBodyGetRotation(object[0].body);
            109     core::Render::RenderCube(cubeid,(float*)pos,(float*)mat,(float*)sides1);                 
            110     pos = dBodyGetPosition(object[1].body);
            111     mat = dBodyGetRotation(object[1].body);
            112     core::Render::RenderCube(cubeid,(float*)pos,(float*)mat,(float*)sides2);          
            113 }

            貼圖為:
            1.

            2.
            posted on 2010-03-05 11:28 ccsdu2009 閱讀(264) 評論(0)  編輯 收藏 引用 所屬分類: Game引擎
             
            国产欧美一区二区久久| 97久久久精品综合88久久| 人妻无码精品久久亚瑟影视| 日产久久强奸免费的看| 欧美黑人激情性久久| 久久久精品人妻一区二区三区四| 91精品国产91久久久久久蜜臀| 久久久久国产成人精品亚洲午夜| 中文字幕久久波多野结衣av| 国产精品热久久毛片| 无码AV波多野结衣久久| 久久久网中文字幕| 久久久久亚洲AV无码永不| 伊人色综合久久天天网| 国产精品99久久久久久宅男| 日本久久久久亚洲中字幕| 亚洲日韩欧美一区久久久久我| 99久久99久久久精品齐齐| 久久人人添人人爽添人人片牛牛| 国内精品久久久久国产盗摄| 精品久久久久久久| 精品熟女少妇a∨免费久久| 亚洲欧美久久久久9999| 久久久久国产成人精品亚洲午夜| av午夜福利一片免费看久久 | 久久久久人妻一区二区三区vr | 久久天天躁夜夜躁狠狠| 99久久国产综合精品网成人影院| 久久婷婷国产综合精品| 国产69精品久久久久久人妻精品| 久久伊人色| 狠狠色丁香久久婷婷综合图片| 国产精品女同一区二区久久| 久久综合综合久久97色| 久久精品国产亚洲综合色| 91久久婷婷国产综合精品青草| 久久久久亚洲av无码专区导航| 久久久久亚洲Av无码专| 99久久er这里只有精品18| 久久精品人人做人人爽97| 久久91精品国产91久久小草|