public void ConstantBufferGetSetFromGenericValues() { object[] values = { 7, 3.14, Vector2.UnitX, 3.14f, new Vector4(7.14f, 7.15f, 7.77f, 2.55f) }; using ConstantBuffer <Vector4> buffer = (ConstantBuffer <Vector4>)Gpu.Default.AllocateConstantBufferFromReflectedValues(values); Vector4[] data = buffer.GetData(); ref byte r0 = ref Unsafe.As <Vector4, byte>(ref data[0]);
public void ReadOnlyBufferGetSetDataFromArray() { float[] array = Enumerable.Range(0, 4096).Select(i => (float)i).ToArray(); using ConstantBuffer <float> buffer = Gpu.Default.AllocateConstantBuffer(array); float[] result = buffer.GetData(); Assert.IsTrue(array.AsSpan().ContentEquals(result)); }
public void ConstantBufferGetRangeData() { float[] array = Enumerable.Range(0, 4096).Select(i => (float)i).ToArray(); using ConstantBuffer <float> sourceBuffer = Gpu.Default.AllocateConstantBuffer(array); float[] sourceResult = sourceBuffer.GetData(128, 100); Assert.IsTrue(array.AsSpan(128, 100).ContentEquals(sourceResult)); }
private static void ConstantBufferSetGeneric <T>(RenderContext rc, T value) where T : struct, IEquatable <T> { int sizeOfT = Unsafe.SizeOf <T>(); ConstantBuffer cb = rc.ResourceFactory.CreateConstantBuffer(sizeOfT); cb.SetData(ref value, sizeOfT); T returnedValue = default(T); cb.GetData(ref returnedValue, sizeOfT); Assert.Equal(value, returnedValue); }
public void SetData_GetData() { VkRenderContext rc = TestData.CreateVulkanContext(); ConstantBuffer cb = rc.ResourceFactory.CreateConstantBuffer(ShaderConstantType.Matrix4x4); Matrix4x4 mat = Matrix4x4.Identity; cb.SetData(ref mat, Unsafe.SizeOf <Matrix4x4>()); Matrix4x4 ret = new Matrix4x4(); cb.GetData(ref ret, Unsafe.SizeOf <Matrix4x4>()); Assert.Equal(mat, ret); }
public void ReadOnlyBufferGetSetDataFromReadOnlyBuffer() { float[] array = Enumerable.Range(0, 4096).Select(i => (float)i).ToArray(); using ConstantBuffer <float> sourceBuffer = Gpu.Default.AllocateConstantBuffer(array); using ConstantBuffer <float> destinationBuffer = Gpu.Default.AllocateConstantBuffer(sourceBuffer); float[] sourceResult = sourceBuffer.GetData(); float[] destinationResult = destinationBuffer.GetData(); Assert.IsTrue(array.AsSpan().ContentEquals(sourceResult)); Assert.IsTrue(array.AsSpan().ContentEquals(destinationResult)); }