| 
 | 
 
使用盖莫游戏引擎绘制立方体 
这不是正式测试的demo例子 
其存在的必要是为物理引擎Demo做准备的O(∩_∩)O~ 
 
//! 2010.03.03 
///////////////////////////////////////////////////// 
/// 盖莫游戏引擎的立方体绘制 
/////////////////////////////////////////////////////   
//! 测试立方体绘制函数,矩阵,输入输出 
//! 按键f1,f2,f3旋转立方体 
#include <GEngine/Gaimo.hpp> 
using namespace std; 
 
Matrix4f mat;   
 
//! 处理鼠标响应 
void MouseCheck(core::Input* input);    
 
int main(int argc, char **argv) 
{ 
    //! 初始化引擎设备并得到设备指针 
    core: evice* device = core::InitDevice("盖莫引擎立方体测试"); 
    //! 得到引擎场景指针 
    core::RefPtr<core::SceneManager> scenemanager = device->GetSceneManager(); 
    //! 得到引擎资源指针 
    core::ResourceManager* resourcemanager = device->GetResourceManager(); 
 
    //! 获取lua指针 
    LuaPlus: uaStateOwner *lua = device->GetLuaStateOwner(); 
    
    //! 得到logo图形和其纹理 
    core::RefPtr<core::Image>   logo = resourcemanager->GetImage("logo","..\\image//logo.jpg"); 
    core::RefPtr<core::Texture> logotexture = resourcemanager->GetTexture("logo",logo); 
    logotexture->Bind(); 
    
    //! 获取全局摄像机 
    core::RefPtr<core::Camera> camera = scenemanager->GetGlobalCamera(Vector3f(30,30,30), 
                                                                      Vector3f(0,0,0), 
                                                                      Vector3f(0,1,0)); 
    camera->SetViewport(0,0,640,480);   
    camera->SetPerspective(50.0f,640.0f/480.0f,0.1f,1000.0f);                                                                   
    glClearDepth(1.0f);                                             
    glDepthFunc(GL_LEQUAL);                                        
    glEnable(GL_DEPTH_TEST); 
    glEnable(GL_CULL_FACE);    
    glShadeModel(GL_SMOOTH);                                     
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);    
 
    float sides[] = {16,16,16}; 
    float pos[] = {0,0,0}; 
   
    BEGIN_LOOP(device) 
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);             
       glLoadIdentity(); 
       core::Render::SetClearColor(core::Color::Blue); 
       camera->SetPerspective(45.0f,640.0f/480.0f,0.1f,1000.0f); 
       camera->Render();   
       MouseCheck(device->GetInput());                
       core::Render::RenderCube((int)logotexture->GetTextureId(),pos,mat.ptr(),sides); 
    END_LOOP(device) 
    
    device->Close(); 
    device->Drop(); 
 
    return 0; 
} 
 
//! 处理鼠标响应 
void MouseCheck(core::Input* input) 
{ 
    if(input->IsPressedKey(KEY_F1)) 
    { 
        mat*=mat.Rotate((rand()%200)/900.0f,1,0,0);                      
    } 
    else if(input->IsPressedKey(KEY_F2)) 
    { 
        mat*=mat.Rotate((rand()%200)/900.0f,0,1,0);             
    } 
    else if(input->IsPressedKey(KEY_F3)) 
    { 
        mat*=mat.Rotate((rand()%200)/900.0f,0,0,1);            
    }   
} 
 
显示如下: 
 
 
  
  |   
 
 
 
 |