2011-09-28 48 views
2

我目前正試圖在我的遊戲引擎中重新編寫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); 

並有一定數量的這樣做的成功的一個學位或其他(如herehere人)。但是,在執行這個操作之後,似乎沒有人對處理輸入發表評論。

我原本以爲可能因爲SDL沒有自己的窗口,它不會從默認收集輸入,這是合理的。所以我搜索了SDL API,只發現了一個函數「SDL_SetWindowGrab()」,它似乎與輸入捕捉有關。但是調用它沒有任何效果。

如何讓SDL從Ogre製作的窗口收集輸入?

回答

3

它已經有一段時間了,但我想我會爲可能需要的人提供答案。事實證明,這是SDL 1.3中的一個錯誤/不完整功能。 「CreateWindowFrom」方法最初不是專門用作輸入處理程序。在寫這篇文章的時候,我知道我自己和我的團隊中的另一位爲Windows和Linux編寫了補丁,允許這種用法工作並將這些補丁提交給SDL。