private void SetUpCacheForLocalThread() { // Set topology QueueRenderCommand(RenderCommand.SetPrimitiveTopology(RenderCommand.DEFAULT_PRIMITIVE_TOPOLOGY)); // Set input layout GeometryInputLayout shaderInputLayout = currentCache.GetInputLayout(currentVS); QueueRenderCommand(RenderCommand.SetInputLayout(shaderInputLayout)); // Enqueue VS commands QueueRenderCommand(RenderCommand.SetIndexBuffer(currentCache.IndexBuffer)); QueueShaderSwitch(currentVS); QueueShaderResourceUpdate(currentVS, shaderInputLayout.ResourcePackage); // Set rasterizer state QueueRenderCommand(RenderCommand.SetRasterizerState(rsState)); QueueRenderCommand(RenderCommand.SetViewport(Output)); // Set depth stencil state QueueRenderCommand(RenderCommand.SetDepthStencilState(dsState)); // Set blend state QueueRenderCommand(RenderCommand.SetBlendState(blendState)); // Set up output merger QueueRenderCommand(RenderCommand.SetRenderTargets(output.TargetWindow, primaryDSBufferDSV, gBufferViews)); // Reserve a space for setting the instance buffer reservedSetIBCommandSlot = ReserveCommandSlot(); }
public void TestSetIndexBuffer() { IndexBuffer ib = BufferFactory.NewIndexBuffer().WithLength(300U).WithUsage(ResourceUsage.DiscardWrite); RenderCommand testCommand = RenderCommand.SetIndexBuffer(ib); Assert.AreEqual(RenderCommandInstruction.SetIndexBuffer, testCommand.Instruction); Assert.AreEqual((RenderCommandArgument)(IntPtr)ib.ResourceHandle, testCommand.Arg1); ib.Dispose(); #if !DEVELOPMENT && !RELEASE try { RenderCommand.SetIndexBuffer(null); Assert.Fail(); } catch (AssuranceFailedException) { } try { RenderCommand.SetIndexBuffer(ib); Assert.Fail(); } catch (AssuranceFailedException) { } #endif }