Ejemplo n.º 1
0
        public void TestSetInstanceBuffer()
        {
            const uint            INPUT_SLOT     = 3U;
            VertexBuffer <Matrix> instanceBuffer = BufferFactory.NewVertexBuffer <Matrix>()
                                                   .WithLength(10U)
                                                   .WithUsage(ResourceUsage.DiscardWrite);

            RenderCommand testCommand = RenderCommand.SetInstanceBuffer(instanceBuffer, INPUT_SLOT);

            Assert.AreEqual(RenderCommandInstruction.SetInstanceBuffer, testCommand.Instruction);
            Assert.AreEqual((RenderCommandArgument)(IntPtr)instanceBuffer.ResourceHandle, testCommand.Arg1);
            Assert.AreEqual((RenderCommandArgument)INPUT_SLOT, testCommand.Arg2);

            instanceBuffer.Dispose();

#if !DEVELOPMENT && !RELEASE
            try {
                RenderCommand.SetInstanceBuffer(null, INPUT_SLOT);
                Assert.Fail();
            }
            catch (AssuranceFailedException) { }

            try {
                RenderCommand.SetInstanceBuffer(instanceBuffer, INPUT_SLOT);
                Assert.Fail();
            }
            catch (AssuranceFailedException) { }
#endif
        }
 private void SetInstanceBufferAndFlushCommands()
 {
     QueueRenderCommand(
         reservedSetIBCommandSlot,
         RenderCommand.SetInstanceBuffer(gpuInstanceBuffer, currentVS.InstanceDataBinding.SlotIndex)
         );
     FlushRenderCommands();
 }