示例#1
0
        private static Buffer CreateIndexBufferFromMesh(Assimp.Mesh mesh)
        {
            List <int> indexList = new List <int>();

            foreach (Face f in mesh.Faces)
            {
                f.Indices.ForEach((p) => indexList.Add(p));
            }

            Buffer ret = Buffer.Create(PipelineManager.Get().Device, BindFlags.IndexBuffer, indexList.ToArray(), 0, ResourceUsage.Immutable);

            return(ret);
        }
示例#2
0
        private static Buffer CreateVertexBufferFromMesh(Assimp.Mesh mesh)
        {
            List <VertexPosTexCoordNormal> vertexList = new List <VertexPosTexCoordNormal>();

            for (int i = 0; i < mesh.VertexCount; i++)
            {
                Vector4 pos      = new Vector4(mesh.Vertices[i].X, mesh.Vertices[i].Y, mesh.Vertices[i].Z, 1.0f);
                Vector2 texCoord = new Vector2(0, 0);
                Vector3 normal   = new Vector3(mesh.Normals[i].X, mesh.Normals[i].Y, mesh.Normals[i].Z);

                VertexPosTexCoordNormal newElem = new VertexPosTexCoordNormal(pos, texCoord, normal);
                vertexList.Add(newElem);
            }

            Buffer ret = Buffer.Create(PipelineManager.Get().Device, SharpDX.Direct3D11.BindFlags.VertexBuffer, vertexList.ToArray(), 0, ResourceUsage.Immutable);

            return(ret);
        }