В настоящее время я пытаюсь переписать связующее между Ogre и SDL в моем игровом движке. Первоначально я использовал метод, описанный в Ogre Wiki здесь. Я недавно обновил свою версию SDL до версии 1.3 и заметил вызов функции "SDL_CreateWindowFrom ()" и повторно реализовал мой механизм связывания, чтобы Ogre мог построить окно , а затем получить HWND из Огре для передачи в 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);
Я пытался осмотреться, и есть ряд людей, которые сделали это с той или иной степенью успеха (например, здесь или здесь ). Но никто не комментирует обработку ввода после реализации этого.
Первоначально я думал, что, возможно, поскольку SDL не владеет окном, оно не будет собирать входные данные по умолчанию, что является разумным. Поэтому я искал SDL API и обнаружил только одну функцию «SDL_SetWindowGrab ()», которая, похоже, связана с захватом ввода. Но вызов, который не имеет никакого эффекта.
Как я могу получить SDL для сбора информации из моего окна, сделанного в Ogre?