OpenGL中的 glVertexAttribPointer 规格化 数据。
在Shader 中,颜色值是用 0-1 的范围来表示的。
一般我们用 unsigned char 来表示一个颜色,比如
unsigned char r,g,b,a
r=255;
g=255;
b=255;
a-255;
如果要给 Shader 中的 颜色值 赋值,那么就要把上面的r、g、b、a 转化为 0 - 1的范围。
所以要进行规格化。
规格化的过程
r = 255/255(unsigned char最大值) = 1.0;
所以如果颜色使用 unsigned char来表示,则 glVertexAttributePoint是如下列式
glVertexAttribPointer(_shader._color, 4,GL_UNSIGNED_BYTE, true, sizeof(Vertex),&vertex[0].color);
需要规格化,并且使用 GL_UNSIGNED_BYTE
如果颜色是使用 float ,比如
float r,g,b,a;
r=1;
g=1;
b=1;
a=1;
那么 则 glVertexAttributePoint是如下列式
glVertexAttribPointer(m_program.m_color, 4, GL_FLOAT, false, sizeof(VertexData), &vertexs[0].r);