Android:Open GL ES中Uniform,mat4和vec4的含义是什么?

时间:2015-03-10 08:57:03

标签: android opengl-es embedded shader

在此代码中(来自Android Developer网站):

private final String vertexShaderCode =
"uniform mat4 uMVPMatrix;   \n" 
"attribute vec4 vPosition;  \n" +
"void main(){               \n" +
" gl_Position = uMVPMatrix * vPosition; \n" +

"}  \n";

uniformmat 4的含义是什么?

以及attributevec4的含义是什么?

1 个答案:

答案 0 :(得分:3)

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