2016-06-30 16 views
1

私はModel I/Oを発見していると私は球を作成するために、頂点を生成するためにそれを使用したいと思いますので、私は、このクラスのメソッドを使用してMDLMeshオブジェクトを作成しました:MDLMeshに名前のないデフォルト属性があるのはなぜですか?

let sphere = MDLMesh.newEllipsoidWithRadii(vector_float3(1, 1, 1), radialSegments: 300, verticalSegments: 300, geometryType: MDLGeometryType.KindTriangles, inwardNormals: false, hemisphere: false, allocator: MTKMeshBufferAllocator(device: device)) 

すると、それがどのように動作するかを理解するために、私がしたいです私は彼らにこの方法を読んでいる私のこのMDLMeshの属性を調べる:ここ

for attribute in sphere.vertexDescriptor.attributes { 
      if let vertexAttribute = attribute as? MDLVertexAttribute { 
       print("Attribute named : \(vertexAttribute.name), of format \(vertexAttribute.format.rawValue)") 
      } 
     } 

が出力されます。

属性命名:、名前のフォーマット0属性の::、名前のフォーマット0
属性の:、の名前のフォーマット786434
属性のtextureCoordinate、:という名前の通常、フォーマットの786435
属性:名前のフォーマット786435
属性の位置、 format 属性名:、フォーマット0の属性:
フォーマットされた属性:、フォーマット0の属性:
属性名:、フォーマット0フォーマット0の属性指定:
属性名:、フォーマット0属性名:、of form 0のの フォーマットの0の名前の属性:
のフォーマットされた属性:、フォーマット0の属性指定された:
属性の指定された:0フォーマットの0の、
という名前 属性:、名前のフォーマット0属性の:、名前のフォーマット0
属性の:、名前のフォーマット0属性の:、名前のフォーマット0
属性の:、名前のフォーマット0属性の:、フォーマット0
のフォーマット0の属性指定:0フォーマット名0:
属性名:、フォーマット0属性:、of form at 0

私はポジションと法線が自動的に生成されたと考えますが、なぜテクスチャ座標がありますか?それらを生成するために使用されたルールは何ですか? 何よりも、無効な形式の名前のない属性のすべてが存在するのはなぜですか?

はあなたに

EDITありがとう:私が新しいを追加した場合でも、カスタム(法線を生成することによって、例えば)属性ための属性(私の場合は31)の固定数があるように思わ、属性はその無効なものは新しい属性に置き換えられ、属性の総数はまだ31です。

答えて

1

アップルはデフォルトのを作成し、最初の3つの属性を使用できるように設定しているようです。彼らはまた、使用する必要がある最も一般的な属性であることもあります。あなたは28以上の属性 "所有者"を持っている必要がある場合は、それらを3以上使用する必要があります。Btw、彼らは無効な形式ではなく、彼らはちょうどそれらがまだ作成されていないので、0バイトを占めています。合計で、作成できる頂点属性は15種類あり、必要に応じて同じ種類の頂点属性を持つこともできます。 nameformatの詳細については、MDLVertexAttribute Class Referenceドキュメントを参照してください。

+0

ありがとう、ありがとう! –

関連する問題