我目前正試圖在我的遊戲引擎中重新編寫Ogre和SDL之間的綁定。最初我使用了Ogre Wiki here.中概述的方法,最近我將SDL的版本更新爲1.3,並注意到「SDL_CreateWindowFrom()」函數調用,並重新實現了我的活頁夾以允許Ogre構建窗口,然後從中獲取HWND Ogre被傳入SDL。如何使用SDL從外部窗口收集輸入?
只有一個窗口,我看到一切正常渲染,但沒有收集到任何輸入。我不知道爲什麼。下面是我目前的工作(在Windows上)的代碼:我已經試過環視
OgreWindow = Ogre::Root::getSingleton().createRenderWindow(WindowCaption, Settings.RenderWidth, Settings.RenderHeight, Settings.Fullscreen, &Opts);
size_t Data = 0;
OgreWindow->getCustomAttribute("WINDOW",&Data);
SDLWindow = SDL_CreateWindowFrom(&Data);
SDL_SetWindowGrab(SDLWindow,SDL_TRUE);
並有一定數量的這樣做的成功的一個學位或其他(如here或here人)。但是,在執行這個操作之後,似乎沒有人對處理輸入發表評論。
我原本以爲可能因爲SDL沒有自己的窗口,它不會從默認收集輸入,這是合理的。所以我搜索了SDL API,只發現了一個函數「SDL_SetWindowGrab()」,它似乎與輸入捕捉有關。但是調用它沒有任何效果。
如何讓SDL從Ogre製作的窗口收集輸入?