gpt4 book ai didi

c++ - DirectComposition 渲染到纹理?

转载 作者:可可西里 更新时间:2023-11-01 18:37:53 33 4
gpt4 key购买 nike

我希望将直接合成渲染到纹理。这可能吗?

这样做的原因是我希望能够将 gpu 加速的无窗口透明 flash 播放器 activex 控件渲染到纹理。通常不可能实现的事情,但我希望通过 DirectComposition 实现。

最佳答案

这不太可能,引用 MSDN (强调我的)

DirectComposition does not offer any rasterization services. An application must use some other software-based or hardware-accelerated rasterization library such as Direct2D or Direct3D to populate the bitmaps that are to be composed. After composing, DirectComposition passes composed bitmap content to Desktop Window Manager (DWM) for rendering to the screen.

据我所知,只有官方 API 可以与 DWM 共享屏幕外表面,但没有允许您读取 DWM 表面的 API。

DWM 所做的允许您重定向 HWND 表面,因此您可以在您的窗口上显示其他 HWND 的表面。这可以通过 DirectComposition(通过 CreateSurfaceFromHwnd )或 DWM API 来完成(通过 DwmRegisterThumbnail )。以后者为例look here .

如果您想走您评论中指出的“黑客路线”,有 undocumented APIs看起来它们可以让您访问 DWM 表面,特别是 DwmpDxGetWindowSharedSurface 听起来很有希望。 Someone else已经做了一些逆向工程并找出了签名,但无法让它工作(纹理有效但呈现黑色)。 This guy似乎有更多的运气并且能够在 3d 中渲染窗口纹理。我听不懂他的语言,但您似乎必须使用 DwmpDxUpdateWindowSharedSurface(也未记录)。

但是您应该知道使用未记录的函数不是一个好主意,Microsoft 可以随时更改它们(甚至在服务包版本中)或完全删除它们,因为它们仅由 Microsoft 自己使用它们没有理由保持兼容性.您也很有可能会错误地使用它们(例如,您可能缺少必要的同步并导致随机崩溃,或更糟)。

但是,由于该功能实际可用,因此希望 Microsoft 可以在未来的某些 Windows 版本中实际开放它以供公众使用。

关于c++ - DirectComposition 渲染到纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17398213/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com