Ejemplo n.º 1
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="vertices">頂点データ</param>
 /// <param name="parts">パーツ情報</param>
 public MMDAccessory(MMDVertexNmTxVc[] vertices, IList<MMDAccessoryPart> parts)
 {
     this.vertexBuffer = new VertexBuffer(parts[0].indices.GraphicsDevice, typeof(VertexPositionNormalTextureColor), vertices.Length, BufferUsage.WriteOnly);
     VertexPositionNormalTextureColor[] gpuVertices = new VertexPositionNormalTextureColor[vertices.Length];
     //初期値代入
     for (int i = 0; i < vertices.Length; i++)
     {
         gpuVertices[i].Position = vertices[i].Position;
         gpuVertices[i].Normal = vertices[i].Normal;
         gpuVertices[i].Color = new Color(vertices[i].VertexColor);
         gpuVertices[i].TextureCoordinate = vertices[i].TextureCoordinate;
     }
     // put the vertices into our vertex buffer
     vertexBuffer.SetData(gpuVertices, 0, vertices.Length);
     m_parts = new ReadOnlyCollection<MMDAccessoryPart>(parts);
 }
Ejemplo n.º 2
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="triangleCount">三角形の個数</param>
 /// <param name="vertices">頂点配列</param>
 /// <param name="vertMap">モデルの頂点とMMDの頂点対応</param>
 /// <param name="indexBuffer">インデックスバッファ</param>
 public MMDGPUModelPartPNmTxVc(int triangleCount, MMDVertexNmTxVc[] vertices, Dictionary<long, int[]> vertMap, IndexBuffer indexBuffer)
     : base(triangleCount, vertices.Length, vertMap, indexBuffer)
 {
     this.vertices = vertices;
     //GPUリソース作成
     gpuVertices = new VertexPositionNormalTextureColor[vertices.Length];
     vertexBuffer = new WritableVertexBuffer(indexBuffer.GraphicsDevice, vertices.Length * 4, typeof(VertexPositionNormalTextureColor));
     //初期値代入
     for (int i = 0; i < vertices.Length; i++)
     {
         gpuVertices[i].Position = vertices[i].Position;
         gpuVertices[i].Normal = vertices[i].Normal;
         gpuVertices[i].Color = new Color(vertices[i].VertexColor);
         gpuVertices[i].TextureCoordinate = vertices[i].TextureCoordinate;
     }
     // put the vertices into our vertex buffer
     vertexOffset = vertexBuffer.SetData(gpuVertices);
 }
Ejemplo n.º 3
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="triangleCount">三角形の個数</param>
 /// <param name="vertices">頂点配列</param>
 /// <param name="indexBuffer">インデックスバッファ</param>
 public MMDCPUModelPartPNmTxVc(int triangleCount, MMDVertexNmTxVc[] vertices, int[] vertMap, IndexBuffer indexBuffer)
     : base(triangleCount, vertices.Length, vertMap, indexBuffer)
 {
     this.vertices = vertices;
     //GPUリソース作成
     gpuVertices = new VertexPositionNormalTextureColor[vertices.Length];
     vertexBuffer = new DynamicVertexBuffer(indexBuffer.GraphicsDevice, typeof(VertexPositionNormalTextureColor), vertices.Length, BufferUsage.WriteOnly);
     //初期値代入
     for (int i = 0; i < vertices.Length; i++)
     {
         gpuVertices[i].Position = vertices[i].Position;
         gpuVertices[i].Normal = vertices[i].Normal;
         gpuVertices[i].Color = new Color(vertices[i].VertexColor);
         gpuVertices[i].TextureCoordinate = vertices[i].TextureCoordinate;
     }
     // put the vertices into our vertex buffer
     vertexBuffer.SetData(gpuVertices, 0, vertexCount, SetDataOptions.Discard);
 }