内容:
开始CEGUI渲染——在渲染前怎样初始化CEGUI
加载数据文件和初始化——怎么加载些数据文件和执行基本的系统初始化
创建一个CEGUI窗口——怎样创建个简单的窗口和让它显示到屏幕
注入输入事件——怎么向CEGUI注入输入然后实现交互
开始CEGUI渲染
无论你使用的Engine是什么,如果你使用CEGUI来渲染,你必须做下面基本的三步骤:
1. 创建一个CEGUI::Renderer基本对象的实例
2. 创建CEGUI::System对象实例
3. 调用方法来渲染这个GUI
显然你也需要加载一些数据然后执行非常基本的初始化,这方面知识在”关于加载数据文件和初始的指导”里详细介绍,然后你需要注入你的输入消息到系统,这方面知识在”关于注入输入的指导”里详细介绍。
内容提要
创建一个CEGUI::Renderer基本对象实例
创建一个CEGUI::System对象
调用方法来渲染GUI
总结
创建CEGUI::Renderer基本对象
基本的渲染创建代码是:
Direct3D 8.1
CEGUI::DirectX81Renderer* myRenderer=new CEGUI::DirectX81Renderer(myD3D8Device);
Direct3D 9
CEGUI::DirectX9Renderer* myRenderer=new CEGUI::DirectX9Renderer(myD3D9Device);
OpenGL
CEGUI::OpenGLRenderer* myRenderer=new CEGUI::OpenGLRenderer(0);
OGRE3D
CEGUI::OgreCEGUIRenderer* myRenderer=new CEGUI::OgreCEGUIRenderer(myRenderWindow);
Irrlicht Engine
CEGUI::IrrlichtRenderer* myRenderer=new CEGUI::IrrlichtRenderer(myIrrlichtDevice,true);
因为OGRE3D引擎它自己定义了一个类OgreCEGUIRenderer,它是CEGUI::Renderer的子类。
创建CEGUI::System对象
一个比较简单的步骤,只需要new 一个CEGUI::System对象,参数是上面一步创建的myRenderer。
New CEGUI::System(myRenderer);
调用方法来渲染这个GUI
这是需要你的目标引擎,在不同的Engine可能不同。基本上你需要知道是在渲染循环其它后调用CEGUI::System::renderGUI方法渲染GUI。幸运的是Ogre3D引擎使用者,这步是被自动执行的。其他人就需要用下面代码:
Direct3D 8.1/9
//开始这个场景
myD3DDevice->BeginScene();
//清除显示面
myD3DDevice->Clear(0,0,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0f,0);
//用户画3D场景的函数
Draw3DScene();
//画GUI
CEGUI::System::getSingleton().renderGUI();
//结束这个场景
myD3DDevice->EndScene();
//最后翻转页面
myD3DDevice->Present(0,0,0,0);
OpenGL
//画3D场景
Draw3DScene();
//画GUI(不应该在glBegin/glEnd之间 )
CEGUI::System::getSingleton().renderGUI();
Irrlicht
//开始场景
myIrrlichtDriver->beginScene(true,true,irr::video::SColor(150,50,50,50));
//画主要的场景
myIrrlichtSceneManager->drawAll();
//画gui
CEGUI::System::getSingleton().renderGUI();
//结束场景
myIrrlichtDriver->endScene();
总结
这是关于设置CEGUI渲染的最基本的介绍。还有很多没有提到,比如在Ogre中用不同的场景管理器和高级的功能比如用户自定义资源提供器,等等