| 
 | 
 
/*!========================================================================== 
 * 
 *  盖莫游戏引擎(GaiMo Game Engine) 
 * 
 *  版权所有 (C) 2009-2009 成都盖莫软件技术工作室 保留所有权利 
 *  Copyright (C) 成都盖莫软件技术工作室.  All Rights Reserved. 
 * 
 *  了解更多情况,请访问 http://www.gaimo.net 
 ****************************************************************************/ 
//! 本例子主要测试盖莫游戏引擎的线程渲染和绘制基本2d几何对象  
//! 2010.04.08  
#include <GEngine/Gaimo.hpp> 
 
using namespace core;  
using namespace ZThread; 
 
Color color1(0.0f,0.5f,0.5f),color2(0.0f,1.0f,0.0f); 
Color color3(1.0f,0.0f,0.0f),color4(1.0f,0.0f,1.0f); 
Color color5(1.0f,1.0f,0.0f),color6(0.0f,1.0f,1.0f); 
 
RefPtr<Device>      device; 
RefPtr<VideoDriver> videodriver; 
  
void  Render(bool flag); 
 
//! 线程渲染类  
class RenderThread : public Runnable 
{ 
public: 
    RenderThread():flag(false){}    
    void run(){Render(flag);}  
    void Stop(){flag = true;} 
private: 
    bool flag;                   
}; 
 
int  Main() 
{ 
    device = core::InitDevice("线程渲染"); 
    videodriver = device->GetVideoDriver(); 
    videodriver->DetachRender(); 
    RenderThread* render; 
    try 
    {   
        render = new RenderThread;                         
        ZThread::Thread thread(render);   
        render->Stop();                        
    } 
    catch(Synchronization_Exception& e) 
    { 
        std::cout<<e.what()<<std::endl;                                  
    } 
     
    BEGIN_LOOP(device) 
    END_LOOP(device) 
 
    return 1; 
} 
 
void  Render(bool flag) 
{ 
    //! 获取引擎资源管理器 
    core::RefPtr<core::ResourceManager> resmgr = device->GetResourceManager(); 
     
    videodriver->AttachRender(); 
    videodriver->Ortho2D(); 
    videodriver->SetClearColor(core::Color::Blue); 
     
    BEGIN_LOOP(device) 
       videodriver->SetClearBuffer(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT); 
       //! 绘制矩形 
       videodriver->SetColor(color1); 
       videodriver->FillRect(100,120,50,50); 
       //! 绘制矩形 
       videodriver->SetColor(color2); 
           videodriver->DrawRect(100,180,50,50); 
           //! 绘制网格 
       videodriver->SetColor(color3); 
           videodriver->DrawGrid(Point(10,10),Point(20,20),Point(5,5)); 
           //! 绘制变色矩形 
           //core::Render: rawRaisedRectangle(libmath::Rect<float>(250,50,50,50),color5,color6); 
           //! 绘制三角形 
       videodriver->SetColor(color4); 
       //videodriver->DrawTriangle(Point(200,180),Point(200,270),Point(290,110),true); 
       //! 绘制点 
       videodriver->DrawPoint(Point(200,120));  
       RETURN_LOOP(flag,true) 
    END_LOOP(device); 
} 
 
这是使用盖莫游戏引擎2.1.1线程渲染的例子 
 |   
 
 
 
 |