Пример #1
0
        public void Optimize_TwoTrianglesOfDifferentColor_5Positions2ColorsAnd6IndicesCreated()
        {
            var builder = new IndexedMeshBuilder();

            builder.BeginBuffer();
            builder.BeginPrimitive(PrimitiveTopology.TriangleList);
            builder.Color(Vector4.Zero);
            builder.Position(new Vector3(0, 0, 0));
            builder.Color(Vector4.Zero);
            builder.Position(new Vector3(1, 0, 0));
            builder.Color(Vector4.Zero);
            builder.Position(new Vector3(0, 1, 0));
            builder.Color(Vector4.One);
            builder.Position(new Vector3(1, 0, 0));
            builder.Color(Vector4.One);
            builder.Position(new Vector3(1, 1, 0));
            builder.Color(Vector4.One);
            builder.Position(new Vector3(0, 1, 0));

            var mesh = IndexedMesh.Optimize(builder.Complete());

            Assert.AreEqual(1, mesh.Primitives.Count);
            Assert.AreEqual(6, mesh.Primitives[0].GetIndexReader(StreamKey.Position).Count);
            Assert.AreEqual(6, mesh.Primitives[0].GetIndexReader(StreamKey.Color).Count);
            Assert.AreEqual(4, mesh.Primitives[0].BufferView.GetStreamReader <Vector3>(StreamKey.Position).Count);
            Assert.AreEqual(2, mesh.Primitives[0].BufferView.GetStreamReader <Vector3>(StreamKey.Color).Count);
        }
Пример #2
0
        public void Position_BuildQuad()
        {
            var builder = new IndexedMeshBuilder();

            builder.BeginBuffer();
            builder.BeginPrimitive(PrimitiveTopology.TriangleList);
            builder.Position(new Vector3(0, 0, 0));
            builder.Position(new Vector3(1, 0, 0));
            builder.Position(new Vector3(0, 1, 0));
            builder.Position(new Vector3(1, 0, 0));
            builder.Position(new Vector3(1, 1, 0));
            builder.Position(new Vector3(0, 1, 0));

            var quad = builder.Complete();

            Assert.AreEqual(1, quad.Primitives.Count);
            Assert.AreEqual(6, quad.Primitives[0].GetIndexReader(StreamKey.Position).Count);
            Assert.AreEqual(4, quad.Primitives[0].BufferView.GetStreamReader <Vector3>(StreamKey.Position).Count);
        }
Пример #3
0
        public void Optimize_TwoTriangles_4VerticesAnd6IndicesCreated()
        {
            var builder = new IndexedMeshBuilder();

            builder.BeginBuffer();
            builder.BeginPrimitive(PrimitiveTopology.TriangleList);
            builder.Position(new Vector3(0, 0, 0));
            builder.Position(new Vector3(1, 0, 0));
            builder.Position(new Vector3(0, 1, 0));
            builder.Position(new Vector3(1, 0, 0));
            builder.Position(new Vector3(1, 1, 0));
            builder.Position(new Vector3(0, 1, 0));

            var mesh = GpuMesh.Optimize(builder.Complete());

            Assert.AreEqual(1, mesh.Primitives.Count);
            Assert.AreEqual(6, mesh.Primitives[0].Count);
            Assert.AreEqual(4, mesh.Primitives[0].BufferView.GetStreamReader <Vector3>(StreamKey.Position).Count);
        }
Пример #4
0
        public void Vertex_BuildColorQuad_AllIndicesAreTheSame()
        {
            var builder = new IndexedMeshBuilder();

            builder.BeginBuffer();
            builder.BeginPrimitive(PrimitiveTopology.TriangleList);
            builder.Color(Vector4.Zero);
            builder.Vertex(new Vector3(0, 0, 0));
            builder.Vertex(new Vector3(1, 0, 0));
            builder.Vertex(new Vector3(0, 1, 0));
            builder.Color(Vector4.One);
            builder.Vertex(new Vector3(1, 0, 0));
            builder.Vertex(new Vector3(1, 1, 0));
            builder.Vertex(new Vector3(0, 1, 0));

            var quad = builder.Complete();

            Assert.AreEqual(1, quad.Primitives.Count);
            Assert.AreEqual(6, quad.Primitives[0].GetIndexReader(StreamKey.Position).Count);
            Assert.AreEqual(6, quad.Primitives[0].GetIndexReader(StreamKey.Color).Count);
            Assert.AreEqual(4, quad.Primitives[0].BufferView.GetStreamReader <Vector3>(StreamKey.Position).Count);
            Assert.AreEqual(2, quad.Primitives[0].BufferView.GetStreamReader <Vector3>(StreamKey.Color).Count);
        }