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
        }