Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Пропорции изображения (DirectX)


Автор: xpromt 9.4.2009, 17:18
Начинаю изучать DirectX и возник один вопрос... на первый взгляд нубский...
При создании обычной сцены с вращающимся кубом (по книге Горнакова) все отлично получается... но когда начинаешь менять размеры окна, куб становится совсем не кубом... т.е. он пропорционально зависит от размера окна... Может, кто знает как этого избежать? Буду очень благодарен за подсказку...

Автор: C/L 10.4.2009, 10:41
Есть такая проблема, исправляется коректировкой параметров проекционной матрицы.

Добавлено через 3 минуты и 51 секунду
Код

    D3DXMATRIXA16 matProj;
    D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI / 4, (float)800/600, 1.0f, 100.0f );

Третий параметр функции D3DXMatrixPerspectiveFovLH - отношение сторон окна, куда идет проекция

Автор: xpromt 10.4.2009, 11:40
Я так и знал, что я нуб  smile 
C/L спасибо огромное  smile 
ввел переменную, чтобы отношение не было фиксированным и в ней вычисляется отношение Ширины экрана к Высоте...
Код

Aspect=(float)GetSystemMetrics(SM_CXSCREEN)/(float)GetSystemMetrics(SM_CYSCREEN);

а потом эту переменную вставил как ты и написал
Код

D3DXMatrixPerspectiveFovLH(&MatrixProjection,D3DX_PI/4,Aspect,1.0f,100.0f);

Можно было конечно сразу вычисление в установке матрицы проекции сделать, но я не очень люблю когда строка растягивается на несколько...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)