我应该在哪里寻找DirectX(3D)设备的分辨率? getViewport似乎有Width和Height,但据我所知,viewport应该是一个区域,而不是具有这些属性的2D“canvas”。
(我希望“分辨率”适用于设备,而不是D3D。如果这部分错误,请纠正我。)
简单的MSDN链接也将是一个很好的答案,但我已经浏览过它并找不到它。
编辑:似乎getDisplayMode适用于更改分辨率的全屏应用,因为它返回显示适配器模式,但我也希望能够获得d3d窗口的大小。
答案 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”。