Showing the changes to src/cegui-test.cpp (1 of 3 files). Show all
Unified · Split
| @@ -0,0 +1,96 @@ | |||
| 1 | /* | ||
| 2 | * This file is part of MXE. | ||
| 3 | * See index.html for further information. | ||
| 4 | */ | ||
| 5 | |||
| 6 | /************************************************* | ||
| 7 | * CEGUI demo program. This creates an OpenGL window | ||
| 8 | * and makes CEGUI draw an "in-game" window into it. | ||
| 9 | ************************************************/ | ||
| 10 | |||
| 11 | #include <GL/freeglut.h> | ||
| 12 | #include <CEGUI/CEGUI.h> | ||
| 13 | #include <CEGUI/RendererModules/OpenGL/CEGUIOpenGLRenderer.h> | ||
| 14 | |||
| 15 | // We’re lazy | ||
| 16 | using namespace CEGUI; | ||
| 17 | |||
| 18 | // Prototypes | ||
| 19 | void main_loop(); | ||
| 20 | |||
| 21 | // Main program entry point | ||
| 22 | int main(int argc, char* argv[]) | ||
| 23 | { | ||
| 24 | // Initialize OpenGL | ||
| 25 | glutInit(&argc, argv); | ||
| 26 | glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); | ||
| 27 | glutInitWindowSize(640, 480); | ||
| 28 | |||
| 29 | // Create the default GL context to have CEGUI draw upon | ||
| 30 | int window_id = glutCreateWindow("Test"); | ||
| 31 | |||
| 32 | // Initialize CEGUI (will automatically use the default GL context) | ||
| 33 | OpenGLRenderer& renderer = OpenGLRenderer::bootstrapSystem(); | ||
| 34 | |||
| 35 | // Tell CEGUI where to find its resources | ||
| 36 | DefaultResourceProvider* p_provider = static_cast<DefaultResourceProvider*>(System::getSingleton().getResourceProvider()); | ||
| 37 | p_provider->setResourceGroupDirectory("schemes", "../share/CEGUI/schemes"); | ||
| 38 | p_provider->setResourceGroupDirectory("imagesets", "../share/CEGUI/imagesets"); | ||
| 39 | p_provider->setResourceGroupDirectory("fonts", "../share/CEGUI/fonts"); | ||
| 40 | p_provider->setResourceGroupDirectory("layouts", "../share/CEGUI/layouts"); | ||
| 41 | p_provider->setResourceGroupDirectory("looknfeels", "../share/CEGUI/looknfeel"); | ||
| 42 | p_provider->setResourceGroupDirectory("lua_scripts", "../share/CEGUI/lua_scripts"); | ||
| 43 | p_provider->setResourceGroupDirectory("schemas", "../share/CEGUI/xml_schemas"); | ||
| 44 | p_provider->setResourceGroupDirectory("animations", "../share/CEGUI/animations"); | ||
| 45 | |||
| 46 | // Map the resource request to our provider | ||
| 47 | Imageset::setDefaultResourceGroup("imagesets"); | ||
| 48 | Font::setDefaultResourceGroup("fonts"); | ||
| 49 | Scheme::setDefaultResourceGroup("schemes"); | ||
| 50 | WidgetLookManager::setDefaultResourceGroup("looknfeels"); | ||
| 51 | WindowManager::setDefaultResourceGroup("layouts"); | ||
| 52 | ScriptModule::setDefaultResourceGroup("lua_scripts"); | ||
| 53 | AnimationManager::setDefaultResourceGroup("animations"); | ||
| 54 | XMLParser* p_parser = System::getSingleton().getXMLParser(); | ||
| 55 | // For the Xerces parser, set the XML schemas resource | ||
| 56 | if (p_parser->isPropertyPresent("SchemaDefaultResourceGroup")) | ||
| 57 | p_parser->setProperty("SchemaDefaultResourceGroup", "schemas"); | ||
| 58 | |||
| 59 | // Configure the default window layouting | ||
| 60 | SchemeManager::getSingleton().create("TaharezLook.scheme"); | ||
| 61 | System::getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow"); | ||
| 62 | |||
| 63 | // Create the hypothetical CEGUI root window | ||
| 64 | Window* p_root_window = WindowManager::getSingleton().createWindow("DefaultWindow", "root"); | ||
| 65 | System::getSingleton().setGUISheet(p_root_window); | ||
| 66 | |||
| 67 | // Create an actual framed window we can look onto | ||
| 68 | FrameWindow* p_frame_window = static_cast<FrameWindow*>(WindowManager::getSingleton().createWindow("TaharezLook/FrameWindow", "testWindow")); | ||
| 69 | p_root_window->addChildWindow(p_frame_window); | ||
| 70 | p_frame_window->setPosition(UVector2(UDim(0.25f, 0), UDim(0.25f, 0))); | ||
| 71 | p_frame_window->setSize(UVector2(UDim(0.5f, 0), UDim(0.5f, 0))); | ||
| 72 | p_frame_window->setText("Hello World!"); | ||
| 73 | |||
| 74 | // Enter main loop | ||
| 75 | main_loop(); | ||
| 76 | |||
| 77 | // Clean up OpenGL | ||
| 78 | glutDestroyWindow(window_id); | ||
| 79 | } | ||
| 80 | |||
| 81 | /* Main loop for processing events, etc. For a real application, | ||
| 82 | * you definitely want to replace while(true) with checking a | ||
| 83 | * proper termination condition. Note all drawing operations take | ||
| 84 | * place on an invisible auxiliary buffer until you call glutSwapBuffers(), | ||
| 85 | * which paints the entire auxiliary buffer onto the screen. | ||
| 86 | */ | ||
| 87 | void main_loop() | ||
| 88 | { | ||
| 89 | while(true) { | ||
| 90 | glutMainLoopEvent(); // Process events | ||
| 91 | glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear the window background to a single color | ||
| 92 | glFlush(); | ||
| 93 | System::getSingleton().renderGUI(); // Tell CEGUI to render all its stuff | ||
| 94 | glutSwapBuffers(); // Put the auxiliary rendering buffer onto the screen and make the screen the new auxiliary buffer. | ||
| 95 | } | ||
| 96 | } | ||