OpenGL中的 glVertexAttribPointer 规格化 数据

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);

不需要规格化,直接使用GL_FLOAT


你可能感兴趣的:(OpenGL中的 glVertexAttribPointer 规格化 数据)