2016-06-30 1 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)") 
      } 
     } 

하면 출력 이름 : 위치 포맷이라는 786,435
속성 : 정상 포맷 786,435
속성 이름 : textureCoordinate, 포맷 786,434
속성 이름 :라는 형식 0 속성 : 포맷 0
라는 속성들 : 중 format 0 형식의 0 :
형식의 0 특성 : 0의 형식의 특성 0 :
형식의 0 특성 : : 0 형식의 특성 :
명명 된 특성 :, 형식 0 속성 이름 :, 형식 0
속성 이름 :, 형식 0 속성 이름 :, of form 0
형식의 0 : 0 형식의 0 :
형식의 특성 : 0 형식의 0 :
특성 이름 :, 형식 0의 특성 이름 :, 형식 0
속성 이름 :라는 형식 0 속성 : 포맷 속성라는 0
:라는 형식 0 속성 : 포맷 속성라는 0
:라는 형식 0 속성 : 포맷 0
0의 형식의 속성 : 0 형식의 0 :
명명 된 특성 :, 형식 0 특성 :, of form at 0

저는 위치와 법선이 자동으로 생성되었지만 왜 텍스처 좌표가 있다고 생각합니까? 규칙을 생성하는 데 사용 된 규칙은 무엇입니까? 무엇보다도 잘못된 형식의 이름없는 속성이 모두 있습니까?

당신에게

편집 감사 :이 속성의 고정 된 수의 (31 내 경우)이 있음을 보일 수있을 것입니다 때문에, (생성 법선에 의해 예를 들어) 속성을 새 사용자 정의 속성을 추가 할 경우에도 그 유효하지 않은 속성은 새로운 속성으로 대체되며 총 속성 수는 여전히 31입니다.

답변

1

Apple은 처음 세 가지 속성을 사용할 수 있도록 기본값 vertexDescriptor을 만들도록 구성한 것으로 보입니다. 그들은 또한 가장 공통적 인 특성이 필요합니다. 그 중 3 개 이상을 사용해야 할 경우를 대비해 28 개의 속성 보유자가 있습니다. Btw는 유효하지 않은 형식이 아니며 아직 작성되지 않았기 때문에 현재 0 바이트를 차지합니다. 총 15 가지 유형의 정점 속성을 만들 수 있으며 필요에 따라 동일한 유형을 더 많이 가질 수도 있습니다. nameformat에 대한 자세한 내용은 MDLVertexAttribute Class Reference 문서를 참조하십시오.

+0

오, 고맙습니다. –

관련 문제