Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <OgreRoot.h>
- #include <OgreCamera.h>
- #include <OgreViewport.h>
- #include <OgreSceneManager.h>
- #include <OgreRenderWindow.h>
- #include <OgreEntity.h>
- #include <OgreWindowEventUtilities.h>
- #include <OgreMeshManager.h>
- #include <OgreMesh.h>
- #include <OgreSubMesh.h>
- #include <OgreTechnique.h>
- #include <OgreMaterialManager.h>
- #include <OgreMaterial.h>
- #include <OgreQuaternion.h>
- #include <OgreManualObject.h>
- #include <OgreFrameListener.h>
- #include <Compositor/OgreTextureDefinition.h>
- #include <Compositor/OgreCompositorManager2.h>
- #include <Compositor/OgreCompositorCommon.h>
- #include <Compositor/OgreCompositorWorkspaceDef.h>
- #include <Compositor/OgreCompositorWorkspace.h>
- #include <Compositor/OgreCompositorNodeDef.h>
- #include <Compositor/Pass/PassClear/OgreCompositorPassClear.h>
- #include <Compositor/Pass/PassScene/OgreCompositorPassScene.h>
- #include <cegui\CEGUI.h>
- #include <cegui\RendererModules/Ogre\Renderer.h>
- #include <cegui\RendererModules/Ogre\WindowTarget.h>
- #include <CEGUI\RendererModules\Ogre\ResourceProvider.h>
- #include <CEGUI\RendererModules\Ogre\ImageCodec.h>
- #include <sstream>
- #include <string>
- #include <fstream>
- class FrameListener : public Ogre::FrameListener
- {
- public:
- bool frameStarted(const Ogre::FrameEvent& evt)
- {
- return true;
- }
- bool frameEnded(const Ogre::FrameEvent& evt)
- {
- return true;
- }
- bool frameRenderingQueued(const Ogre::FrameEvent& args)
- {
- CEGUI::System& gui_system(CEGUI::System::getSingleton());
- float dt = 1e-2f;
- gui_system.injectTimePulse(dt);
- //d_sampleApp->update(static_cast<float>(elapsed));
- //beginRendering(elapsed);
- CEGUI::Renderer* gui_renderer(gui_system.getRenderer());
- gui_renderer->beginRendering();
- //d_sampleApp->renderGUIContexts();
- guiContext->injectTimePulse(1e-2f);
- guiContext->draw();
- gui_renderer->endRendering();
- CEGUI::WindowManager::getSingleton().cleanDeadPool();
- //endRendering();
- return true;
- }
- void setGuiContext(CEGUI::GUIContext *guiContext)
- {
- this->guiContext = guiContext;
- }
- private:
- CEGUI::GUIContext *guiContext;
- };
- FrameListener frameListener;
- FrameListener frameListener2;
- CEGUI::OgreRenderer* ceguiOgreRenderer;
- CEGUI::GUIContext *InitCEGUIContext(Ogre::Root *root, Ogre::RenderWindow *window, FrameListener *frameListener)
- {
- ceguiOgreRenderer = &CEGUI::OgreRenderer::create(*window);
- ceguiOgreRenderer->setDefaultRootRenderTarget(*window);
- /* ceguiOgreRenderer->setRenderingEnabled(false);*/
- if(!CEGUI::System::getSingletonPtr())
- {
- //ceguiOgreRenderer = &CEGUI::OgreRenderer::bootstrapSystem(*window);
- &CEGUI::System::create(*ceguiOgreRenderer, new CEGUI::OgreResourceProvider(), 0, new CEGUI::OgreImageCodec());
- Ogre::ResourceGroupManager::getSingleton().createResourceGroup("Imagesets");
- Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../data/CeguiData/imagesets", "FileSystem", "Imagesets");
- Ogre::ResourceGroupManager::getSingleton().createResourceGroup("Fonts");
- Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../data/CeguiData/fonts", "FileSystem", "Fonts");
- Ogre::ResourceGroupManager::getSingleton().createResourceGroup("Schemes");
- Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../data/CeguiData/schemes", "FileSystem", "Schemes");
- Ogre::ResourceGroupManager::getSingleton().createResourceGroup("LookNFeel");
- Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../data/CeguiData/looknfeel", "FileSystem", "LookNFeel");
- Ogre::ResourceGroupManager::getSingleton().createResourceGroup("Layouts");
- Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../data/CeguiData/layouts", "FileSystem", "Layouts");
- CEGUI::ImageManager::setImagesetDefaultResourceGroup("Imagesets");
- CEGUI::Font::setDefaultResourceGroup("Fonts");
- CEGUI::Scheme::setDefaultResourceGroup("Schemes");
- CEGUI::WidgetLookManager::setDefaultResourceGroup("LookNFeel");
- CEGUI::WindowManager::setDefaultResourceGroup("Layouts");
- CEGUI::SchemeManager::getSingleton().createFromFile("TaharezLook.scheme");
- }
- //CEGUI::System::getSingleton().getDefaultGUIContext().getMouseCursor().setDefaultImage("TaharezLook/MouseArrow");
- CEGUI::WindowManager &wmgr = CEGUI::WindowManager::getSingleton();
- CEGUI::Window *sheet = wmgr.createWindow("DefaultWindow");
- CEGUI::RenderTarget *target = new CEGUI::OgreWindowTarget(*ceguiOgreRenderer, *root->getRenderSystem(), *window);
- CEGUI::GUIContext *guiContext = &CEGUI::System::getSingleton().createGUIContext(*target);
- //CEGUI::GUIContext *guiContext = &CEGUI::System::getSingleton().getDefaultGUIContext();
- guiContext->setRootWindow(sheet);
- frameListener->setGuiContext(guiContext);
- root->addFrameListener(frameListener);
- ceguiOgreRenderer->setRenderingEnabled(false);
- return guiContext;
- }
- int main( int argc, char **argv )
- {
- Ogre::String configSuffix = "";
- #ifdef _DEBUG
- configSuffix = "_d";
- #endif
- Ogre::String pluginsFileName = "OgrePlugins" + configSuffix + ".cfg";
- Ogre::String configFileName = "OgreConfig" + configSuffix + ".cfg";
- Ogre::String logFileName = "OgreLog" + configSuffix + ".log";
- Ogre::Root *root = new Ogre::Root(pluginsFileName, configFileName, logFileName);
- //Ogre::RenderSystem *renderSystem = root->getRenderSystemByName("Direct3D11 Rendering Subsystem");
- //Ogre::RenderSystem *renderSystem = root->getRenderSystemByName("Direct3D9 Rendering Subsystem");
- Ogre::RenderSystem *renderSystem = root->getRenderSystemByName("OpenGL Rendering Subsystem");
- root->setRenderSystem(renderSystem);
- renderSystem->setConfigOption("Full Screen", "No");
- renderSystem->setConfigOption("Video Mode", "800 x 600 @ 32-bit colour");
- root->initialise(false);
- //Ogre::RenderWindow *window = root->getAutoCreatedWindow();
- Ogre::RenderWindow *window = root->createRenderWindow("Awesome window", 800, 600, false);
- Ogre::RenderWindow *window2 = root->createRenderWindow("Awesome window 2!", 800, 600, false);
- Ogre::SceneManager* sceneManager = root->createSceneManager(Ogre::ST_EXTERIOR_CLOSE, /*"DefaultSceneManager", */8, Ogre::INSTANCING_CULLING_THREADED);
- Ogre::SceneManager* sceneManager2 = root->createSceneManager(Ogre::ST_EXTERIOR_CLOSE, /*"DefaultSceneManager", */8, Ogre::INSTANCING_CULLING_THREADED);
- /*
- HWND hWnd = 0; // Get the hWnd of the application!
- NameValuePairList misc;
- misc["externalWindowHandle"] = StringConverter::toString((int)hWnd);
- Ogre::RenderWindow *window = root->createRenderWindow("Main RenderWindow", 800, 600, false, &misc);*/
- Ogre::ResourceGroupManager::getSingleton().createResourceGroup("Manual meshes");
- Ogre::ResourceGroupManager::getSingleton().addResourceLocation("data", "FileSystem");
- Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
- Ogre::Camera *camera = sceneManager->createCamera("Cool camera");
- Ogre::Camera *camera2 = sceneManager->createCamera("Cool camera2");
- camera->setPosition(Ogre::Vector3(0.0f, 1500.0f, 1500.0f));
- camera->lookAt(Ogre::Vector3(0.0f, 0.0f, 0.0f));
- camera->setNearClipDistance(5.0f);
- camera->setFarClipDistance(10000.0f);
- Ogre::Radian fov = camera->getFOVy();
- Ogre::CompositorManager2 *compositorManager = root->getCompositorManager2();
- const Ogre::IdString workspaceName("Awesome workspace1");
- compositorManager->createBasicWorkspaceDef( workspaceName, Ogre::ColourValue(0.5f, 0.5f, 0.5f, 0.5f), Ogre::IdString());
- compositorManager->addWorkspace( sceneManager, window, camera, workspaceName, true );
- Ogre::Viewport* viewport = window->getViewport(0);
- camera->setAspectRatio(Ogre::Real(viewport->getActualWidth()) / Ogre::Real(viewport->getActualHeight()));
- const Ogre::IdString workspaceName2("Awesome workspace2");
- compositorManager->createBasicWorkspaceDef( workspaceName2, Ogre::ColourValue(0.5f, 0.5f, 0.5f, 0.5f), Ogre::IdString());
- compositorManager->addWorkspace( sceneManager2, window2, camera2, workspaceName2, true );
- Ogre::Viewport* viewport2 = window2->getViewport(0);
- camera2->setAspectRatio(Ogre::Real(viewport2->getActualWidth()) / Ogre::Real(viewport2->getActualHeight()));
- CEGUI::GUIContext *guiContext = InitCEGUIContext(root, window, &frameListener);
- CEGUI::Window *hello1Button = CEGUI::WindowManager::getSingleton().createWindow("TaharezLook/Button", "CEGUIDemo/QuitButton");
- hello1Button->setText("Hello1");
- hello1Button->setSize(CEGUI::USize(CEGUI::UDim(0.15, 0), CEGUI::UDim(0.05, 0)));
- guiContext->getRootWindow()->addChild(hello1Button);
- CEGUI::GUIContext *guiContext2 = InitCEGUIContext(root, window2, &frameListener2);
- CEGUI::Window *hello2Button = CEGUI::WindowManager::getSingleton().createWindow("TaharezLook/Button", "CEGUIDemo/QuitButton");
- hello2Button->setText("Hello2!!!1");
- hello2Button->setSize(CEGUI::USize(CEGUI::UDim(0.15, 0), CEGUI::UDim(0.05, 0)));
- hello2Button->setPosition(CEGUI::UVector2(CEGUI::UDim(0.25, 0), CEGUI::UDim(0.5, 0)));
- guiContext2->getRootWindow()->addChild(hello2Button);
- // CEGUI::System::getSingleton().getDefaultGUIContext().setRootWindow(sheet);
- bool running = 1;
- float time = 0.0f;
- bool firstTime = 1;
- while(running)
- {
- time += 1e-2f; //we don't need actual time, just a value increasing with time
- Ogre::WindowEventUtilities::messagePump();
- //robotNode->rotate(Ogre::Quaternion(Ogre::Radian(1e-2f), Ogre::Vector3(0.0f, 1.0f, 0.0f)), Ogre::Node::TS_WORLD);
- if(window->isClosed())
- running = 0;
- root->renderOneFrame();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement