窗口内的 DirectX 覆盖

Posted

技术标签:

【中文标题】窗口内的 DirectX 覆盖【英文标题】:DirectX Overlay inside a Window 【发布时间】:2009-06-03 21:24:26 【问题描述】:

我需要能够在屏幕上的任何位置设置覆盖图形区域(通过 DirectX/DirectDraw 方法),或者至少在窗口区域内使用它。有人能做到吗?

【问题讨论】:

【参考方案1】:

我想你想要的是"Layered Window"。这是an example,它展示了如何使用 DirectX(和 OpenGL)进行分层窗口。

分层窗口可以让您的普通窗口框架透明(或半透明),以便您绘制的内容看起来“漂浮”在桌面和其他窗口上方。

【讨论】:

【参考方案2】:

我们最近创建了一个类似的应用程序,其中我们使用 C# 处理所有 GUI 内容,使用 DirectX 处理窗口内的快速 3D。 C# 非常适合快速 GUI 开发,但 GDI+ 对我们的程序来说不够快。因此,我们在 C# 窗口内的 Panel 中覆盖了 WndPrc 函数,并将鼠标事件和绘画的所有控制权转移到 C++ dll。结果很顺利,让我们将快速应用程序开发的各个方面与复杂的 3D 后端结合在一起。

【讨论】:

以上是关于窗口内的 DirectX 覆盖的主要内容,如果未能解决你的问题,请参考以下文章

亲爱的 IMGUI 和 DirectX 12 覆盖 (DXGI_ERROR_INVALID_CALL)

使用 DirectX 11 后重置窗口

没有设备窗口的 DirectX9

DirectX11 2 窗口渲染

如何在透明窗口中绘制透明 DirectX 内容?

支持 Opengl 3.0+ 和 DirectX 10+ 的主要功能和窗口