Ogre Version: 13.6.2
Operating System: Ubuntu 22.04
Render System: OpenGL 3+
Code: Select all
class OgreTest {
public:
OgreTest(OgreTest const &) = delete;
OgreTest(OgreTest &&) = delete;
OgreTest& operator= (OgreTest const&) = delete;
OgreTest& operator= (OgreTest&&) = delete;
static OgreTest* instance(){
static OgreTest instance;
return &instance;
}
void Init()
{
ctx = new OgreBites::ApplicationContext("Test Window");
ctx->initApp();
ctx->getRenderWindow()->setHidden(true);
root = ctx->getRoot();
ogreScene = root->createSceneManager();
ogreHeadScene = root->createSceneManager();
shadergen = Ogre::RTShader::ShaderGenerator::getSingletonPtr();
shadergen->addSceneManager(ogreScene);
shadergen->addSceneManager(ogreHeadScene);
ctx->addInputListener(&keyHandler);
}
private:
OgreTest(){
}
Ogre::Root* root;
~OgreTest() = default;
OgreBites::ApplicationContext* ctx;
Ogre::SceneManager* ogreScene;
Ogre::SceneManager* ogreHeadScene;
Ogre::RTShader::ShaderGenerator* shadergen;
KeyHandler keyHandler;
void Setup(){
//root = ctx.getRoot();
}
public:
void showOgre(){
Ogre::Light* light = ogreScene->createLight("MainLight");
Ogre::SceneNode* lightNode = ogreScene->getRootSceneNode()->createChildSceneNode();
lightNode->setPosition(0, 10, 15);
lightNode->attachObject(light);
// also need to tell where we are
Ogre::SceneNode* camNode = ogreScene->getRootSceneNode()->createChildSceneNode();
camNode->setPosition(0, 0, 15);
camNode->lookAt(Ogre::Vector3(0, 0, -1), Ogre::Node::TS_PARENT);
// create the camera
Ogre::Camera* cam = ogreScene->createCamera("myCam");
cam->setNearClipDistance(5); // specific to this sample
cam->setAutoAspectRatio(true);
camNode->attachObject(cam);
// and tell it to render into the main window
ctx->getRenderWindow()->addViewport(cam);
// finally something to render
Ogre::Entity* ent = ogreScene->createEntity("Sinbad.mesh");
Ogre::SceneNode* node = ogreScene->getRootSceneNode()->createChildSceneNode();
node->attachObject(ent);
ctx->getRoot()->startRendering();
ctx->closeApp();
}
void showOgreHead(){
Ogre::Light* light = ogreScene->createLight("MainLight");
Ogre::SceneNode* lightNode = ogreScene->getRootSceneNode()->createChildSceneNode();
lightNode->setPosition(0, 10, 220);
lightNode->attachObject(light);
// also need to tell where we are
Ogre::SceneNode* camNode = ogreScene->getRootSceneNode()->createChildSceneNode();
camNode->setPosition(0, 0, 230);
camNode->lookAt(Ogre::Vector3(0, 0, -1), Ogre::Node::TS_PARENT);
// create the camera
Ogre::Camera* cam = ogreScene->createCamera("myCam");
cam->setNearClipDistance(5); // specific to this sample
cam->setAutoAspectRatio(true);
camNode->attachObject(cam);
// and tell it to render into the main window
ctx->getRenderWindow()->addViewport(cam);
// finally something to render
Ogre::Entity* ent = ogreScene->createEntity("ogrehead.mesh");
Ogre::SceneNode* node = ogreScene->getRootSceneNode()->createChildSceneNode();
node->attachObject(ent);
ctx->getRoot()->startRendering();
ctx->closeApp();
}
};
#define sOgre3d OgreTest::instance()
As you can see I run the following line:
Code: Select all
ctx->getRenderWindow()->setHidden(true);
But OGRE always starts with window making me unable to hide the main window.
Any idea how can I do that or what am I doing wrong ?