2D游戏, 把uv直接放到a_position的z,w中, 这样节省数据传输. zw在2d中也用不到
但在shader中取值uv=a_position.zw总是不正常. 若 uv独立传输则正常, 只能怀疑是a_position.zw传值有问题
in vec4 a_position; out vec2 v_uv0; void main () { v_uv0 = a_position.zw; vec4 pos = vec4(a_position.xy,0, 1); pos = cc_matViewProj * cc_matWorld * pos; gl_Position = pos; }
** JS代码: num = 4**
var vertex = new gfx.VertexFormat([
{ name: gfx.ATTR_POSITION, type: gfx.ATTR_TYPE_FLOAT32, num: 4},
]);
let rect = [
cc.v4(x-w, y-h, 0,1), // index2,3 表示uv
cc.v4(x-w, y+h, 0,0),
cc.v4(x+w, y+h, 1,0),
cc.v4(x+w, y-h, 1,1),
]
arr.push(
rect[0],rect[1],rect[2],
rect[2],rect[3],rect[0],
)
mesh.setVertices(gfx.ATTR_POSITION, arr);