예제 #1
0
        /// <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());
            }
        }
예제 #2
0
        /// <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));
            }
        }