/// <summary> /// Test <see cref="ArrayBufferObject.ToArray()"/>. /// </summary> /// <param name="vertexBaseType"></param> /// <param name="vertexLength"></param> /// <param name="array"></param> public void TestToArray_Core(VertexBaseType vertexBaseType, uint vertexLength, Array array) { using (ArrayBufferObject arrayBuffer = new ArrayBufferObject(vertexBaseType, vertexLength, BufferObjectHint.StaticCpuDraw)) { // Create client buffer arrayBuffer.Create(array); // ToArray() must be equal to array CollectionAssert.AreEqual(array, arrayBuffer.ToArray()); // Create GPU buffer arrayBuffer.Create(_Context); // ToArray() must be equal to array CollectionAssert.AreEqual(array, arrayBuffer.ToArray(_Context)); // Create a reversed array from test array Array arrayReverse = Array.CreateInstance(array.GetType().GetElementType(), array.Length); Array.Copy(array, arrayReverse, array.Length); Array.Reverse(arrayReverse); CollectionAssert.AreEquivalent(array, arrayReverse); // Update client buffer arrayBuffer.Create(arrayReverse); // Client buffer is updated, but not the GPU buffer CollectionAssert.AreEqual(arrayReverse, arrayBuffer.ToArray()); } }
/// <summary> /// Test <see cref="ArrayBufferObject.ToArray()"/>. /// </summary> /// <param name="vertexBaseType"></param> /// <param name="vertexLength"></param> /// <param name="array"></param> public void TestToArrayCtx_Core(VertexBaseType vertexBaseType, uint vertexLength, Array array) { using (ArrayBufferObject arrayBuffer = new ArrayBufferObject(vertexBaseType, vertexLength, BufferObjectHint.StaticCpuDraw)) { // Without creation, ToArray(GraphicsContext) will throw an exception Assert.Throws <InvalidOperationException>(delegate() { arrayBuffer.ToArray(_Context); }); // Create client buffer arrayBuffer.Create(array); // ToArray() must be equal to array CollectionAssert.AreEqual(array, arrayBuffer.ToArray()); // Without creation, ToArray(GraphicsContext) will throw an exception Assert.Throws <InvalidOperationException>(delegate() { arrayBuffer.ToArray(_Context); }); // Create GPU buffer arrayBuffer.Create(_Context); // ToArray() must be equal to array CollectionAssert.AreEqual(array, arrayBuffer.ToArray(_Context)); // Create a reversed array from test array Array arrayReverse = Array.CreateInstance(array.GetType().GetElementType(), array.Length); Array.Copy(array, arrayReverse, array.Length); Array.Reverse(arrayReverse); CollectionAssert.AreEquivalent(array, arrayReverse); // Update client buffer arrayBuffer.Create(arrayReverse); // Client buffer is updated, but not the GPU buffer CollectionAssert.AreEqual(arrayReverse, arrayBuffer.ToArray()); CollectionAssert.AreNotEqual(arrayReverse, arrayBuffer.ToArray(_Context)); // Update GPU buffer arrayBuffer.Create(_Context); CollectionAssert.AreEqual(arrayReverse, arrayBuffer.ToArray(_Context)); } }