OpenGL 创建一个CEGUI窗口
来源:互联网 发布:淘宝电商平台技术架构 编辑:程序博客网 时间:2024/03/29 01:52
这里只给出代码,关于原理,参看CEGUI官网上的教程。本片对应CEGUI官网教程:
glut_loop.cpp
#include <GL/glew.h>
#include <GL/freeglut.h>
#include <CEGUI.h>
#include <CEGUIDefaultResourceProvider.h>
#include <XMLParserModules/XercesParser/CEGUIXercesParser.h>
#include <RendererModules/OpenGLGUIRenderer/openglrenderer.h>
#define DATA_FILES "/home/XXX/program/cegui/datafiles/"
void render(void);
void keyFunc(unsigned char , int , int );
int resource_group(void);
int load_data_files(void);
int create_window(void);
int window_id;
bool keep_running = true;
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(640, 480);
window_id = glutCreateWindow("GLUT Loop");
glutSetCursor(GLUT_CURSOR_NONE); //隐藏原有光标
GLenum err = glewInit();
CEGUI::OpenGLRenderer* myRenderer = new CEGUI::OpenGLRenderer(0);
new CEGUI::System(myRenderer);
resource_group();
load_data_files();
create_window();
while (keep_running)
{
glutMainLoopEvent();
render();
CEGUI::System::getSingleton().renderGUI();
glutSwapBuffers();
}
glutDestroyWindow(window_id);
return 0;
}
void render(void)
{
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
void keyFunc(unsigned char key, int x, int y)
{
switch (key)
{
case 113:
case 81:
case 27:
keep_running = false;
break;
}
}
int resource_group(void)
{
CEGUI::DefaultResourceProvider *rp = static_cast<CEGUI::DefaultResourceProvider*>
(CEGUI::System::getSingleton().getResourceProvider());
rp->setResourceGroupDirectory("schemes", DATA_FILES "schemes/");
rp->setResourceGroupDirectory("imagesets", DATA_FILES "imagesets/");
rp->setResourceGroupDirectory("fonts", DATA_FILES "fonts/");
rp->setResourceGroupDirectory("layouts", DATA_FILES "layouts/");
rp->setResourceGroupDirectory("looknfeels", DATA_FILES "looknfeel/");
rp->setResourceGroupDirectory("schemas", DATA_FILES "XMLRefSchema/");
CEGUI::Imageset::setDefaultResourceGroup("imagesets");
CEGUI::Font::setDefaultResourceGroup("fonts");
CEGUI::Scheme::setDefaultResourceGroup("schemes");
CEGUI::WidgetLookManager::setDefaultResourceGroup("looknfeels");
CEGUI::WindowManager::setDefaultResourceGroup("layouts");
CEGUI::XercesParser::setSchemaDefaultResourceGroup("schemas");
}
int load_data_files(void)
{
CEGUI::SchemeManager::getSingleton().loadScheme("TaharezLook.scheme");
if (!CEGUI::FontManager::getSingleton().isFontPresent("Commonwealth-10"))
CEGUI::FontManager::getSingleton().createFont("Commonwealth-10");
CEGUI::System::getSingleton().setDefaultFont("Commonwealth-10");
CEGUI::System::getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow");
CEGUI::System::getSingleton().setDefaultTooltip("TaharezLook/Tooltip");
}
int create_window(void)
{
using namespace CEGUI;
WindowManager &wmgr = WindowManager::getSingleton();
Window* myRoot = wmgr.createWindow("DefaultWindow", "root");
System::getSingleton().setGUISheet(myRoot);
FrameWindow *fWnd = (FrameWindow*)wmgr.createWindow("TaharezLook/FrameWindow", "testWindow");
myRoot->addChildWindow(fWnd);
fWnd->setPosition( UVector2( UDim(0.25f, 0), UDim(0.25f, 0) ) );
fWnd->setSize( UVector2( UDim(0.5f, 0), UDim(0.5f, 0) ) );
fWnd->setText("/nHello, world!/nI'm sihan.");
}
Makefile:
- The Beginner Guide to Getting CEGUI Rendering - How to initialise CEGUI to render properly.
- The Beginner Guide to Resource Groups - How to define resource group locations and specify default resource groups.
- The Beginner Guide to Loading Data Files and Initialisation - How to load some data files and perform basic system initialisation.
- The Beginner Guide to Creating a CEGUI Window - How to create a simple window and get it on screen.
glut_loop.cpp
#include <GL/glew.h>
#include <GL/freeglut.h>
#include <CEGUI.h>
#include <CEGUIDefaultResourceProvider.h>
#include <XMLParserModules/XercesParser/CEGUIXercesParser.h>
#include <RendererModules/OpenGLGUIRenderer/openglrenderer.h>
#define DATA_FILES "/home/XXX/program/cegui/datafiles/"
void render(void);
void keyFunc(unsigned char , int , int );
int resource_group(void);
int load_data_files(void);
int create_window(void);
int window_id;
bool keep_running = true;
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(640, 480);
window_id = glutCreateWindow("GLUT Loop");
glutSetCursor(GLUT_CURSOR_NONE); //隐藏原有光标
GLenum err = glewInit();
CEGUI::OpenGLRenderer* myRenderer = new CEGUI::OpenGLRenderer(0);
new CEGUI::System(myRenderer);
resource_group();
load_data_files();
create_window();
while (keep_running)
{
glutMainLoopEvent();
render();
CEGUI::System::getSingleton().renderGUI();
glutSwapBuffers();
}
glutDestroyWindow(window_id);
return 0;
}
void render(void)
{
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
void keyFunc(unsigned char key, int x, int y)
{
switch (key)
{
case 113:
case 81:
case 27:
keep_running = false;
break;
}
}
int resource_group(void)
{
CEGUI::DefaultResourceProvider *rp = static_cast<CEGUI::DefaultResourceProvider*>
(CEGUI::System::getSingleton().getResourceProvider());
rp->setResourceGroupDirectory("schemes", DATA_FILES "schemes/");
rp->setResourceGroupDirectory("imagesets", DATA_FILES "imagesets/");
rp->setResourceGroupDirectory("fonts", DATA_FILES "fonts/");
rp->setResourceGroupDirectory("layouts", DATA_FILES "layouts/");
rp->setResourceGroupDirectory("looknfeels", DATA_FILES "looknfeel/");
rp->setResourceGroupDirectory("schemas", DATA_FILES "XMLRefSchema/");
CEGUI::Imageset::setDefaultResourceGroup("imagesets");
CEGUI::Font::setDefaultResourceGroup("fonts");
CEGUI::Scheme::setDefaultResourceGroup("schemes");
CEGUI::WidgetLookManager::setDefaultResourceGroup("looknfeels");
CEGUI::WindowManager::setDefaultResourceGroup("layouts");
CEGUI::XercesParser::setSchemaDefaultResourceGroup("schemas");
}
int load_data_files(void)
{
CEGUI::SchemeManager::getSingleton().loadScheme("TaharezLook.scheme");
if (!CEGUI::FontManager::getSingleton().isFontPresent("Commonwealth-10"))
CEGUI::FontManager::getSingleton().createFont("Commonwealth-10");
CEGUI::System::getSingleton().setDefaultFont("Commonwealth-10");
CEGUI::System::getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow");
CEGUI::System::getSingleton().setDefaultTooltip("TaharezLook/Tooltip");
}
int create_window(void)
{
using namespace CEGUI;
WindowManager &wmgr = WindowManager::getSingleton();
Window* myRoot = wmgr.createWindow("DefaultWindow", "root");
System::getSingleton().setGUISheet(myRoot);
FrameWindow *fWnd = (FrameWindow*)wmgr.createWindow("TaharezLook/FrameWindow", "testWindow");
myRoot->addChildWindow(fWnd);
fWnd->setPosition( UVector2( UDim(0.25f, 0), UDim(0.25f, 0) ) );
fWnd->setSize( UVector2( UDim(0.5f, 0), UDim(0.5f, 0) ) );
fWnd->setText("/nHello, world!/nI'm sihan.");
}
Makefile:
# Makefile to compile glut_loop这是,创建出来的窗口还不能相应事件,接下来就开始添加事件处理函数。
glut_loop: glut_loop.o
g++ glut_loop.o -lglut -L/usr/local/lib/ -lCEGUIBase -lCEGUIOpenGLRenderer -lCEGUIXercesParser -o glut_loop
#
glut_loop.o: glut_loop.cpp
g++ -c glut_loop.cpp -I/usr/local/include/CEGUI
#
.PHONY: clean
clean:
rm -rf *.o glut_loop
- OpenGL 创建一个CEGUI窗口
- cegui 4 创建CEGUI窗口入门——讲述如何创建一个简单的CEGUI窗口.
- [OpenGL]创建一个窗口
- 创建CEGUI窗口入门——讲述如何创建一个简单的CEGUI窗口
- OpenGL中创建一个窗口
- (CEGUI)如何复制一个窗口
- xlib创建一个openGL简单窗口
- Opengl备忘--创建一个简单GLFW窗口
- OpenGL入门(一):创建一个窗口
- Andriod OpenGL 教程 01 - 创建一个OpenGL 窗口
- Nehe OpenGL教程第一课-创建一个OpenGL窗口(Win32)
- 【Qt OpenGL教程】01:创建一个OpenGL窗口
- Qt OpenGL----创建openGL窗口
- Qt 创建OpenGL窗口
- 创建OpenGL窗口
- 【Modern OpenGL】创建窗口
- OpenGL 窗口创建
- opengl 创建窗口
- 微机原理课程设计32位汇编学习之一(显示消息框)
- BootMGR
- Connect to Access and Write to XML
- 微机原理课程设计32位汇编学习之二(创建简单的窗口)
- The Privates of Silicon Valley
- OpenGL 创建一个CEGUI窗口
- wamp建站
- 中毒后回收站我的文档出错解决方法
- 微机原理课程设计32位汇编学习之三(显示字符串)
- CFile的Unicode宽字符写文件
- 分析CEGUI的最小资源定制
- Spring工作原理
- Windows下服务管理cmd
- 微机原理课程设计32位汇编学习之四(显示字符串之特殊字体)