使用Awesomium渲染DirectX窗口(半透明和圆角元素)

时间:2015-04-09 05:10:04

标签: c++ css awesomium

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

这将涉及:

  1. 使用DirectX 11在窗口上渲染场景(就像我现在正在做的那样)。
  2. 使用Awesomium从HTML / CSS渲染GUI over 以前渲染的场景。
  3. 请注意,某些GUI元素应该是半透明或圆角 - 因此它不仅可以在某些矩形上渲染,还可以混合。

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

    或许我可以在Awesomium中绘制半透明 DirectX纹理,然后用DirectX在场景上渲染它?我知道使用Awesomium可以渲染到纹理资源,但它是否支持透明度&半透明度?

    如果没有,对于我想用Awesomium实现的目标,它们是不错的选择吗?

1 个答案:

答案 0 :(得分:0)

是。它可以做到。

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

以下是该课程的一些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无关。选择混合模式和/或使用具有输出纹理的着色器以获得所需效果。