当我将OGRESDL一起使用时(如this article中所述),我似乎对出现在主渲染窗口后面的第二个窗口有麻烦。基本上,我正在使用的代码是这样的:

SDL_init(SDL_INIT_VIDEO);
SDL_Surface *screen = SDL_SetVideoMode(640, 480, 0, SDL_OPENGL);

Ogre::Root *root = new Ogre::Root();
root->restoreConfig();
root->initialise(false);

Ogre::NameValuePairList windowSettings;
windowSettings["currentGLContext"] = Ogre::String("True");
Ogre::RenderWindow *window = root->createRenderWindow("MainRenderWindow", 640, 480, false, &windowSettings);
window->setVisible(true);

问题是,如何摆脱多余的窗口?

仅出于后代目的,我使用的是OGRE 1.6.4,Mac OS X 10.6.2和SDL 1.2.14。

最佳答案

我最终自己解决了这个问题。问题最终是OGRE的Mac GL后端不支持currentGLContext选项,因此最佳解决方案是更改为SDL 1.3(在撰写本文时,直接从Subversion更改)并使用SDL_CreateWindowFrom调用开始从窗口获取事件由OGRE创建。还应注意,OGRE窗口需要将macAPI设置为cocoa,否则SDL无法识别该窗口句柄。

关于c++ - 如何在OGRE中使用SDL?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1978883/

10-11 23:04