如何在顶点着色器中使用两个或多个属性? OpenGL ES2.0

How use two or more attribute in the vertex shader? OpenGL ES2.0

我的顶点着色器:

uniform mat4 u_Matrix;
attribute vec4 v_Position;
attribute vec4 v_Position1;
attribute vec2 a_texCoord;
attribute vec2 a_texCoord1;
varying vec2 v_texCoord;
varying vec2 v_texCoord1;

void main() {
    gl_Position = u_Matrix * v_Position * v_Position1; /*I guess that 
    this is not possible.*/
    v_texCoord = a_texCoord;
    v_texCoord1 = a_texCoord1;
}

还有我的片段着色器:

precision mediump float;
varying vec2 v_texCoord;
varying vec2 v_texCoord2;
uniform sampler2D u_texture;
uniform sampler2D u_texture2;
vec4 col1;
vec4 col2;

void main() {
    col1 = texture2D(u_texture, v_texCoord);
    col2 = texture2D(u_texture2, v_texCoord2);
    gl_FragColor = col1 + col2;
}

我想要的是拥有两个或多个数据数组和 UV 坐标,并将每一个独立地传递给同一个程序(顶点和片段着色器)。显然我在着色器中做错了,因为当我 运行 应用程序显示黑屏而不是纹理。

v_Position * v_Position1;v_Positionv_Position1 的分量乘法 (v_Position.x * v_Position1.x, v_Position.y * v_Position1.y, ...)

如果 v_Position 等于 (0, 0, 0, 0)v_Position1(0, 0, 0, 0) 而不是你可以使用 v_Position + v_Position,其中向量是按分量汇总的:

gl_Position = u_Matrix * (v_Position + v_Position1);

但是,我建议仅对向量的前 3 个分量求和,因为与 x、[=22= 相比,第 4 个分量 w 默认设置为 1.0 ] 和 z 组件,默认为 0.0:

gl_Position = u_Matrix * vec4(v_Position.xyz + v_Position1.xyz, 1.0);