3

ウィンドウのない Ogre アプリケーションを作成しようとしていますが、RenderWindow::setVisible(false) メソッドがアプリケーションによって完全に無視されているようです。それを達成する方法はありますか?


とまそさん、ありがとうございます

4

2 に答える 2

8

ウィンドウを開きたくない場合はRenderWindow使用しないでください。からも派生しているためRenderTexture、 とほぼ同じように機能します。コンストラクターを変更する以外は、現在のパラメーターを使用してそれらを切り替えるだけで、ほとんど問題はありません。RenderWindowRenderTarget

スイッチで問題が発生した場合は、具体的なコードで質問を更新してください

于 2010-03-22T22:44:21.860 に答える
0

私の知る限り、ウィンドウのないアプリを作成したいだけでも、ウィンドウを作成する必要があります。RenderWindow ( window = m_root->initialise(true, "App")) を作成せずに Ogre を初期化することはできません。Ogre 1.8 では、呼び出してウィンドウを非表示にすることができwindow->setHidden(true) ます。このメソッドのおかげで、問題を回避して「ウィンドウのない」アプリを作成できます。

Svenstaro が言ったように、レンダリングを RenderTexture にリダイレクトできます。以下のコードを使用して、フレームをテクスチャにレンダリングします。

m_window = m_root->initialise(true, "App");
m_window->setHidden(true);
Ogre::WindowEventUtilities::messagePump(); // Force the window to be hidden (necessary under Ubuntu for my case)

m_camera = m_sceneMgr->createCamera("Cam");

Ogre::TexturePtr rtt_texture = Ogre::TextureManager::getSingleton().createManual("RttTex",
                Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
                Ogre::TEX_TYPE_2D, 640, 480, 0,
                Ogre::PF_R8G8B8,
                Ogre::TU_RENDERTARGET);

Ogre::RenderTexture* m_tex = rtt_texture->getBuffer()->getRenderTarget();
Ogre::Viewport* vp = m_tex->addViewport(m_camera);
vp->setClearEveryFrame(true);
vp->setBackgroundColour(Ogre::ColourValue::Black);
vp->setOverlaysEnabled(false);
m_camera->setAspectRatio(Ogre::Real(vp->getActualWidth()) / Ogre::Real(vp->getActualHeight()));

RenderLoop で:

while(1)
{
  m_root->renderOneFrame();
  m_tex->update();

  // Other stuffs
}
于 2013-04-25T16:14:18.700 に答える