MDLMesh boxWithExtent顶点缓冲区布局异常原因咨询
问题原因解析
这不是异常,是你误把默认顶点结构里的纹理坐标(UV)数据当成了位置/法线的补位填充值。
- Apple的
boxWithExtent方法生成的MDLMesh,默认使用的顶点描述符包含三个属性:position:3个float(对应你打印的前3个数值)normal:3个float(中间3个数值)textureCoordinate:2个float(最后2个数值)
- 你打印的8个float正好是这三个属性的总和(3+3+2),末尾的
0.0 0.0、1.0 0.0、0.0 1.0是盒子正面顶点的UV坐标,属于正常的纹理映射数据,不是补位的无效值。 - 当你使用自定义顶点描述符时,应该只声明了
position和normal两个属性,所以生成的顶点数据里没有UV部分,自然不会出现后面的两个数值,看起来“异常”就消失了。
本质是你读取顶点数据时,没有匹配默认顶点描述符的完整属性结构,误将额外的UV数据当成了补位错误。
内容的提问来源于stack exchange,提问作者Sina Dasht
相关产品推荐
相关产品推荐

