【问题标题】:Get resolution of DirectX device获取 DirectX 设备的分辨率
【发布时间】:2010-08-16 05:43:37
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ directx


    【解决方案1】:

    DirectX 实际上并不拥有一个窗口。如果你记得初始化设备时,你会给它一个窗口句柄。它接受它并在此窗口中显示到它的视口。

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

    This question 讨论如何处理它。

    GetWindowRect/GetClientRect(HWND, LPRECT)

    【讨论】:

      【解决方案2】:

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

      D3DDEVICE_CREATION_PARAMETERS cparams;
      RECT rect;
      
      device->GetCreationParameters(&cparams);
      GetWindowRect(cparams.hFocusWindow, &rect);
      
      //rect.width  
      //rect.height
      

      【讨论】:

      • 你不想要GetClientRect,它代表窗口内的实际屏幕区域,而不是包含窗口本身的大小(包括框架、标题等?)
      【解决方案3】:

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

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

      【讨论】:

      • 恐怕这还会返回适配器分辨率(全屏),而不仅仅是窗口大小本身。
      • 我想当你处于全屏模式时,你可能会发现这个功能很有用。否则,没那么多。
      【解决方案4】:

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

      【讨论】:

      • 那是可能的,但我只有应用程序的 D3D 界面,没有别的。我正在寻找使用 DirectX 来查找大小的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      相关资源
      最近更新 更多