【问题标题】:Direct9.0 Window (Full screen runtime)Directx.9.0 Windows(全屏运行时)
【发布时间】:2026-01-19 23:50:01
【问题描述】:

如何执行运行时全屏/和窗口模式交换 s

  1. 注销类
  2. 释放所有 directX 设备
  3. 重新初始化所有 wc 类格式
  4. 重新初始化所有直接的东西

但是,它有两个问题。

  1. 我设法创建了一个新窗口,但旧窗口已关闭或删除。
  2. 新窗口的客户端是黑色的。这意味着直接没有链接到新的 客户。

第二)

【问题讨论】:

    标签: c++ window directx fullscreen directx-9


    【解决方案1】:

    不,您无需创建新窗口,只需使用旧窗口即可。基本上你可以用新的表示参数调用 IDirect3DDevice9::Reset 。进入全屏模式时,需要做以下事情。

    1. 设置 D3DPRESENT_PARAMETERS.Windowed = true
    2. 调整backbuffer大小(我们总是将backbuffer大小设置为渲染窗口大小)
    3. 使用新的纵横比更新投影矩阵(后缓冲宽度/后缓冲高度)
    4. 释放与设备关联的任何显式渲染目标、深度模板表面、附加交换链、状态块和 D3DPOOL_DEFAULT 资源。
    5. 调用 IDirect3DDevice9::Reset() 进入全屏模式。

    请注意,当您的应用进入全屏模式时,它会挂起所有应用程序,包括开发环境(如 Visual Studio)。所以你最好换个显示器做全屏调试。

    【讨论】:

    • 不知道什么意思,Direct3D是DirectX的一个组件,正如标题所说,他使用的是DirectX 9.0c。