获得DirectX设备的分辨率

时间:2010-08-16 05:43:38

标签: c++ directx

我应该在哪里寻找DirectX(3D)设备的分辨率? getViewport似乎有Width和Height,但据我所知,viewport应该是一个区域,而不是具有这些属性的2D“canvas”。

(我希望“分辨率”适用于设备,而不是D3D。如果这部分错误,请纠正我。)

简单的MSDN链接也将是一个很好的答案,但我已经浏览过它并找不到它。

编辑:似乎getDisplayMode适用于更改分辨率的全屏应用,因为它返回显示适配器模式,但我也希望能够获得d3d窗口的大小。

4 个答案:

答案 0 :(得分:3)

DirectX实际上并不拥有一个窗口。如果您还记得初始化设备的时候,可以给它一个窗口句柄。它需要这个并在这个窗口中显示它的视口。

因此,如果您专门查看窗口大小,那么您将希望在操作系统级别获得它。

This question讨论了如何处理它。

GetWindowRect/GetClientRect(HWND, LPRECT)

答案 1 :(得分:2)

如果由于某种原因你只有d3d接口,你可以使用getcreationparameters获取原始的hwnd,然后你可以按照之前的建议使用GetWindowRect或GetClientRect。

D3DDEVICE_CREATION_PARAMETERS cparams;
RECT rect;

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

//rect.width  
//rect.height

答案 2 :(得分:1)

也许这就是你需要的:IDirect3D9 :: GetAdapterDisplayMode方法

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

答案 3 :(得分:0)

如果您想要窗口大小,请在您正在设置的hWnd上调用“GetClientRect”。