Android:开放式GL ES中统一、mat4和vec4的含义是什么?

Android:开放式GL ES中统一、mat4和vec4的含义是什么?,android,opengl-es,embedded,shader,Android,Opengl Es,Embedded,Shader,在此代码中(从网站): uniform和mat4的含义是什么 那么属性和vec4的含义是什么? Uniform是每次绘图调用设置的值。例如,您可以为绘制的整个形状设置颜色,对于所有着色器调用,统一值将是相同的。这与属性相对,例如,该属性是逐顶点的,或者具有一个var,该属性是逐片段的,但必须在顶点着色器中设置 mat4是一种表示4x4矩阵的类型。它由16个浮点值组成。这意味着它需要作为至少包含16个浮点值的float[16]类型或float*指针传递给着色器 属性表示每个顶点将传递的值。对于每个

在此代码中(从网站):

uniform
mat
4的含义是什么

那么
属性
vec4
的含义是什么?

  • Uniform
    是每次绘图调用设置的值。例如,您可以为绘制的整个形状设置颜色,对于所有着色器调用,统一值将是相同的。这与
    属性相对,例如,该属性是逐顶点的,或者具有一个
    var
    ,该属性是逐片段的,但必须在顶点着色器中设置
  • mat4
    是一种表示4x4矩阵的类型。它由16个浮点值组成。这意味着它需要作为至少包含16个浮点值的
    float[16]
    类型或
    float*
    指针传递给着色器
  • 属性
    表示每个顶点将传递的值。对于每个属性,必须绑定其id,启用它并从CPU设置指向该属性的指针。然后,每个顶点的值将不同。一些常见的用途是位置、纹理坐标、法线、顶点颜色
  • vec4
    是一种表示四维向量的类型。它由4个浮点值组成。它可以用于很多事情,如位置,正常。。偶数颜色通常为
    vec4
    类型

我们使用哪种语言编写着色器代码?根据具体情况,搜索着色器语言。这一个看起来像GLSL(OpenGL着色语言)。当位置只能由X、Y和Z三个参数确定时,为什么需要
vec4
?输入上不需要它,4x4矩阵计算需要它,因为要乘以矩阵A和B,B中的行数必须等于A中的列数,B在本例中是一个vec4,其中一列有4行。这只是纯粹的数学。输出默认设置为vec4,不能更改,因此在任何情况下,最终都需要将其类型转换为vec4。因此,基本上“attribute vec4 vPosition”可以是“attribute vec2 vPosition”。我无法理解“B在这种情况下,a
vec4
,单个列有4行”。我们什么时候把这些向量相乘?
private final String vertexShaderCode =
"uniform mat4 uMVPMatrix;   \n" 
"attribute vec4 vPosition;  \n" +
"void main(){               \n" +
" gl_Position = uMVPMatrix * vPosition; \n" +

"}  \n";