使用 Awesomium 在 DirectX window 上渲染(半透明和圆形元素)

Rendering over DirectX window with Awesomium (semi-transparent & rounded elements)

我想知道是否可以使用 Awesomium 在 DirectX 11 游戏上渲染 GUI(我不使用 .NET,它是 C++/DirectX 11 游戏)?

它将涉及:

  1. 使用 DirectX 11 在 window 上渲染场景(正如我现在所做的那样)。
  2. 使用 Awesomium 从 HTML/CSS 之前渲染的场景渲染 GUI。

请注意,某些 GUI 元素应该半透明或圆形 - 因此它不仅在某些矩形上呈现,而且还混合。

可能吗?或者我可以换一种方式(例如告诉 Awesomium 使用 DirectX 以某种方式进行渲染)?

或者我可以在 Awesomium 中绘制一个 半透明 DirectX 纹理,然后使用 DirectX 在场景上渲染它?我知道 Awesomium 可以渲染到纹理资源,但它支持透明和半透明吗?

如果不是,对于我想通过 Awesomium 实现的目标,是否有好的替代方案?

是的。可以做到。

如果您查看 Awesomium WebView 的文档 class 它有一个 surface() 方法,它将 return 视图支持位图。

这是 class 的一些 c++ 文档。

http://awesomium.com/docs/1_7_0/cpp_api/class_awesomium_1_1_web_view.html

您可以将此位图复制到 DirectX 中的纹理并将其渲染为游戏顶部的层,从而创建您的 UI。

您还必须将输入路由并转换为 Awesomium。您可以使用 HTML、CSS 和 Javascript 来设置 UI 的样式。您可以通过这种方式使其变圆并引入透明度。

我不会重复关于执行此操作的完美教程。你可以在这里找到一个。

http://www.gamedev.net/blog/32/entry-2260646-sweet-snippets-rendering-web-pages-to-texture-using-awesomium-and-direct3d/

纹理写入后如何渲染与 Awesomium 没有任何关系。选择您的混合模式 and/or 使用带有输出纹理的着色器以获得所需效果。