我试图了解多线程渲染在 dx11 中是如何工作的,所以我开始时没有任何线程,只创建一个延迟上下文,并尝试用它渲染三角形
代码在这里https://gist.github.com/998406 我以这种方式修改了 SlimDX MiniTri 示例-> 使用延迟上下文
var deferredContext = new DeviceContext(device);
接下来我将着色器绑定到它并渲染它
deferredContext.ClearState();
deferredContext.InputAssembler.InputLayout = layout;
deferredContext.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList;
deferredContext.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(vertices2, 32, 0));
for (int i = 0; i < technique.Description.PassCount; ++i){
pass.Apply(deferredContext);
deferredContext.Draw(3, 0);}
然后尝试获取命令列表并执行它
CommandList dc_cl = deferredContext.FinishCommandList(false);
device.ImmediateContext.ExecuteCommandList(dc_cl, true);
我期望看到的是 2 个三角形,但它只呈现即时上下文,但如果我在延迟上下文中清除屏幕,如 deferredContext.ClearRenderTargetView(renderView, Color.Tomato); 我的屏幕现在是番茄色,但仍然没有三角形
同样,当我添加此延迟上下文 PIX 停止工作时,女巫意味着我做错了什么