Как получить правильный размер OGRE::RenderWindow после его изменения?

Моя программа изменяет размер OGRE::RenderWindow в какое-то время и позже Я хочу получить текущий размер окна. Но когда я использую getWidth() или getHeight() в окне, они возвращают исходный размер окна.

Пример кода:

OGRE::RenderWindow* win;

// ... OGRE is initialized
// Window is drawn 1024x768 using size from ogre.cfg

// ... lots of code ...

// Window size is changed and it works
win->resize(800, 600);

// ... lots of code ...

// Window is still visibly 800x600, but this call
// returns 1024x768 (the original size)
int w = win->getWidth();  // Returns 1024
int h = win->getHeight(); // Returns 768

Как получить правильный размер окна?


person Ashwin Nanjappa    schedule 14.10.2014    source источник
comment
Какая версия Ogre и какая система рендеринга? Я не могу воспроизвести проблему в Ogre 1.10 ни с OpenGL, ни с Direct3D9.   -  person Philip Allgaier    schedule 26.11.2014


Ответы (1)


В Ogre::Viewport есть методы getActualWidth() и getActualHeight(). class, поэтому ваш код будет выглядеть так:

Ogre::WindowEventUtilities::messagePump();

int w = win->getViewport(0)->getActualWidth();
int h = win->getViewport(0)->getActualHeight();

Здесь мы предполагаем, что имеется только 1 окно просмотра (индексировано 0).

Когда вы используете цикл рендеринга Ogre, вам не нужно вызывать этот messagePump(), насколько я знаю.

person Vitalii Minnakhmetov    schedule 26.11.2014