Получить разрешение устройства DirectX - PullRequest
1 голос
/ 16 августа 2010

Где мне искать разрешение устройства DirectX (3D)?getViewport, кажется, имеет ширину и высоту, но насколько я знаю, область просмотра должна быть областью, а не 2D-холстом с этими атрибутами.

(надеюсь, «разрешение» применимо к устройству, а не к D3Dисправьте меня, если эта часть неверна.)

Простая ссылка MSDN также будет хорошим ответом, однако я уже просмотрел ее и не смог ее найти.

Редактировать: этоПохоже, что getDisplayMode будет работать для полноэкранных приложений, которые изменяют разрешение, поскольку он возвращает режим адаптера дисплея, но я бы тоже хотел получить размер окна d3d.

Ответы [ 4 ]

3 голосов
/ 24 августа 2010

DirectX на самом деле не владеет окном.Если вы помните, когда инициализировали устройство, вы даете ему дескриптор окна.Он берет это и отображает в своих окнах просмотра в этом окне.

Так что, если вы ищете размер окна, вы захотите получить его на уровне операционной системы.

ЭтоВопрос обсуждает, как с этим бороться.

А именно GetWindowRect/GetClientRect(HWND, LPRECT)

2 голосов
/ 25 августа 2010

Если по какой-то причине у вас есть только интерфейс d3d, вы можете использовать getcreationparameters для получения исходного hwnd, а затем вы можете использовать GetWindowRect или GetClientRect, как предлагалось ранее.

D3DDEVICE_CREATION_PARAMETERS cparams;
RECT rect;

device->GetCreationParameters(&cparams);
GetWindowRect(cparams.hFocusWindow, &rect);

//rect.width  
//rect.height
1 голос
/ 16 августа 2010

Возможно, это то, что вам нужно: IDirect3D9 :: GetAdapterDisplayMode Method

http://msdn.microsoft.com/en-us/library/bb174316%28v=VS.85%29.aspx

0 голосов
/ 17 августа 2010

Если вы хотите размер окна, тогда вызовите «GetClientRect» на hWnd, который вы настраиваете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...