Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
这不是正式测试的demo例子
其存在的必要是为物理引擎Demo做准备的O(∩_∩)O~
 1 //! 2010.03.03
 2 /////////////////////////////////////////////////////
 3 /// 盖莫游戏引擎的立方体绘制 
 4 /////////////////////////////////////////////////////  
 5 //! 测试立方体绘制函数,矩阵,输入输出 
 6 //! 按键f1,f2,f3旋转立方体 
 7 #include <GEngine/Gaimo.hpp>
 8 using namespace std; 
 9 
10 Matrix4f mat;  
11 
12 //! 处理鼠标响应 
13 void MouseCheck(core::Input* input);    
14  
15 int main(int argc, char **argv)
16 {
17     //! 初始化引擎设备并得到设备指针 
18     core::Device* device = core::InitDevice("盖莫引擎立方体测试"); 
19     //! 得到引擎场景指针 
20     core::RefPtr<core::SceneManager> scenemanager = device->GetSceneManager(); 
21     //! 得到引擎资源指针 
22     core::ResourceManager* resourcemanager = device->GetResourceManager();
23  
24     //! 获取lua指针
25     LuaPlus::LuaStateOwner *lua = device->GetLuaStateOwner();
26     
27     //! 得到logo图形和其纹理 
28     core::RefPtr<core::Image>   logo = resourcemanager->GetImage("logo","..\\image//logo.jpg");
29     core::RefPtr<core::Texture> logotexture = resourcemanager->GetTexture("logo",logo); 
30     logotexture->Bind();
31    
32     //! 获取全局摄像机
33     core::RefPtr<core::Camera> camera = scenemanager->GetGlobalCamera(Vector3f(30,30,30),
34                                                                       Vector3f(0,0,0),
35                                                                       Vector3f(0,1,0));
36     camera->SetViewport(0,0,640,480);  
37     camera->SetPerspective(50.0f,640.0f/480.0f,0.1f,1000.0f);                                                                  
38     glClearDepth(1.0f);                                            
39     glDepthFunc(GL_LEQUAL);                                        
40     glEnable(GL_DEPTH_TEST);
41     glEnable(GL_CULL_FACE);    
42     glShadeModel(GL_SMOOTH);                                    
43     glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);    
44  
45     float sides[] = {16,16,16};
46     float pos[] = {0,0,0};
47   
48     BEGIN_LOOP(device)
49        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);            
50        glLoadIdentity();
51        camera->SetPerspective(45.0f,640.0f/480.0f,0.1f,1000.0f); 
52        camera->Render();  
53        MouseCheck(device->GetInput());               
54        core::Render::RenderCube((int)logotexture->GetTextureId(),pos,mat.ptr(),sides);
55     END_LOOP(device)
56    
57     device->Close();
58     device->Drop();
59  
60     return 0;
61 }
62 
63 //! 处理鼠标响应 
64 void MouseCheck(core::Input* input)
65 {
66     if(input->IsPressedKey(KEY_F1))
67     {
68         mat*=mat.Rotate((rand()%200)/900.0f,1,0,0);                     
69     }
70     else if(input->IsPressedKey(KEY_F2))
71     {
72         mat*=mat.Rotate((rand()%200)/900.0f,0,1,0);            
73     }
74     else if(input->IsPressedKey(KEY_F3))
75     {
76         mat*=mat.Rotate((rand()%200)/900.0f,0,0,1);           
77     }  
78 
显示结果如图:

2.

其实这里的按键消息响应应该采用插槽
posted on 2010-03-03 15:09 ccsdu2009 阅读(1102) 评论(2)  编辑 收藏 引用 所属分类: Game引擎
Comments
  • # re: 使用盖莫游戏引擎绘制立方体
    陈梓瀚(vczh)
    Posted @ 2010-03-03 15:13
    core::Render::RenderCube的意义不大,游戏的模型几乎全部都是读进来的,很少有用代码写的。  回复  更多评论   
  • # re: 使用盖莫游戏引擎绘制立方体
    ccsdu2009
    Posted @ 2010-03-03 15:47
    @陈梓瀚(vczh)
    其存在的必要是为物理引擎Demo做准备的
    函数和这个例子一样都是暂时的
      回复  更多评论   

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理