dx11 でマルチスレッド レンダリングがどのように機能するかを理解しようとしているので、スレッドなしで開始し、遅延コンテキストを 1 つだけ作成して、それを使用して三角形をレンダリングしようとしました。
コードはここにあります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 を追加すると、PIX が機能しなくなるということは、何かひどい間違いをしているということです。