Exemplo n.º 1
0
        protected void SetVertexBuffer <V>(IVertexParser <V> vertexParser) where V : struct
        {
            numVertices  = vertexParser.VertexCount;
            vertexStride = Marshal.SizeOf(typeof(V));
            int SizeOfVertexBufferInBytes = numVertices * vertexStride;

            vertices = new DataStream(SizeOfVertexBufferInBytes, true, true);
            for (int i = 0; i < numVertices; i++)
            {
                vertexParser.FillVertex(i, out V vertex);
                vertices.Write(vertex);
            }

            vertices.Position = 0;

            boundingBox    = BoundingBox.FromPoints(vertices, numVertices, vertexStride);
            boundingSphere = BoundingSphere.FromBox(boundingBox);

            vertexBuffer = new Buffer(DeviceManager.Instance.device,
                                      vertices,
                                      SizeOfVertexBufferInBytes,
                                      ResourceUsage.Default,
                                      BindFlags.VertexBuffer,
                                      CpuAccessFlags.None,
                                      ResourceOptionFlags.None,
                                      0);
        }