且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

WebGL-如何传递无符号字节顶点属性颜色值?

更新时间:2023-02-02 17:41:25

gl.vertexAttribPointer(this.material.aVertexPosition, 3, gl.FLOAT, false, 4, 0);
gl.vertexAttribPointer(this.material.aR, 1, gl.BYTE, false, 15, 12);

您的步幅应该是16,而不是15,当然不应该是4。

此外,每种单独的颜色都不需要是单独的属性。这四个字节可以是矢量4输入。哦,而且您的颜色应该是规范化,无符号字节。也就是说,着色器获取范围[0,255]上的值时,应将其缩放为[0,1]。因此,您需要的是:
gl.vertexAttribPointer(this.material.aVertexPosition, 3, gl.FLOAT, false, 16, 0);
gl.vertexAttribPointer(this.material.color, 4, gl.UNSIGNED_BYTE, true, 16, 12);

哦,并且属性是而不是材料。你不应该那样叫他们。