创建mesh之后渲染始终是色块

创建顶点制作出的多submesh的mesh,直到reset填入mesh之前都可以读出来有效的uv。经过预设mesh的测试可知能正常使用材质,根据色块颜色已知可以读取到图片资源,log情况没有问题。uv确实填入了2区域。部分代码如下

mesh.reset({
struct: {
vertexBundles: [
{
// 位置束
view: {
offset: 0,
length: positions.byteLength,
count: positions.length / 3,
stride: Float32Array.BYTES_PER_ELEMENT * 3, // 添加stride
},
attributes: [
new gfx.Attribute(gfx.AttributeName.ATTR_POSITION, gfx.Format.RGB32F, false, 0, false, 0),
],
},
{
// UV束
view: {
offset: positions.byteLength,
length: uvs.byteLength,
count: uvs.length / 2,
stride: Float32Array.BYTES_PER_ELEMENT * 2, // 添加stride
},
attributes: [
new gfx.Attribute(gfx.AttributeName.ATTR_TEX_COORD, gfx.Format.RG32F, false, 0, false, 2),
],
}
],
primitives: primitives,
minPosition: this.calculateMinPosition(positions, positions.length / 3),
maxPosition: this.calculateMaxPosition(positions, positions.length / 3),
},
data: data,
});

现在可知的是渲染出来是纯色,因此预估是读取全部得到了[0,0],也就是渲染时未能正确读取到uv。

  • Creator 版本: 3.6

只创建单个mesh可以成功吗,之前用cocos的mesh数据转换glb是可以成功的。