Beispiel #1
0
        /// <summary>
        /// 頂点情報をMeshに対して送る
        /// </summary>
        /// <param name="mesh"></param>
        public void UploadMeshVertices(Mesh mesh)
        {
            var vertexAttributeDescriptor = MeshVertex.GetVertexAttributeDescriptor();

            // Weight情報等は存在しないパターンがあり、かつこの存在の有無によって内部的に条件分岐が走ってしまうため、
            // Streamを分けて必要に応じてアップロードする
            if (_skinnedMeshVertices.Count > 0)
            {
                vertexAttributeDescriptor = vertexAttributeDescriptor.Concat(SkinnedMeshVertex
                                                                             .GetVertexAttributeDescriptor().Select(
                                                                                 attr =>
                {
                    attr.stream = 1;
                    return(attr);
                })).ToArray();
            }

            mesh.SetVertexBufferParams(_vertices.Count, vertexAttributeDescriptor);

            mesh.SetVertexBufferData(_vertices, 0, 0, _vertices.Count);
            if (_skinnedMeshVertices.Count > 0)
            {
                mesh.SetVertexBufferData(_skinnedMeshVertices, 0, 0, _skinnedMeshVertices.Count, 1);
            }
        }
Beispiel #2
0
 private void AddSkin(SkinnedMeshVertex skin)
 {
     _skinnedMeshVertices[_currentSkinCount] = skin;
     _currentSkinCount += 1;
 }