我想从非托管C++代码中使用DirectX 11,并使用WFP作为GUI.SlimDX不适合我.我找到了使用DirectX 10制作WPF的解决方案:
但我无法使用DirectX 11工作.只有两个按钮的空白屏幕.有没有人知道如何使WPF与DirectX 11一起使用.
我还看到,当我刚刚运行这个例子时,英特尔i5 750(Windows 7 64位,NVidia Geforce 430)的CPU使用率约为4-5%.我认为这太多了..是否有可能降低CPU使用率?
你可以在这里找到我的代码:http://www.gamedev.net/topic/619534-wpf-directx-11-via-d3dimage/
我将 SharpDX.WPF 项目用于 WPF 功能,与 SharpDX 附带的工具包(具有相同的问题!)相比,它似乎是一个易于理解的低开销库
首先:我使用以下方法修复了最新 SharpDX 的 SharpDX.WPF 项目: https
然后我对 DXElement.cs 进行了以下 hacky 调整,这里也完成了一个解决方案:
private Query queryForCompletion;
public void Render()
{
if (Renderer == null || IsInDesignMode)
return;
var test = Renderer as D3D11;
if (queryForCompletion == null)
{
queryForCompletion = new Query(test.Device,
new QueryDescription {Type = QueryType.Event, Flags = QueryFlags.None});
}
Renderer.Render(GetDrawEventArgs());
Surface.Lock();
test.Device.ImmediateContext.End(queryForCompletion);
// wait until drawing completes
Bool completed;
var counter = 0;
while (!(test.Device.ImmediateContext.GetData(queryForCompletion, out completed)
&& completed)) …Run Code Online (Sandbox Code Playgroud)