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(); }