求助,不会用 glVertexAttribPointer 函数?

核心代码如下

static const char *vertexShaderSource =
“attribute highp vec4 posAttr;\n”
“attribute lowp vec4 colAttr;\n”
“varying lowp vec4 col;\n”
“uniform highp mat4 matrix;\n”
“void main() {\n”
" col = colAttr;\n"
" gl_Position = matrix * posAttr;\n"
“}\n”;

static const char *fragmentShaderSource =
“varying lowp vec4 col;\n”
“void main() {\n”
" gl_FragColor = col;\n"
“}\n”;

{
GLfloat vertices] = {
0.0f, 1.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
1.0f, 0.0f, 0.0f, 0.0f, 1.0f
};

glGenBuffers(1, &m_vbo);
glBindBuffer(GL_ARRAY_BUFFER, m_vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
}

glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER, m_vbo);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 20, (const GLvoid*)0);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 20, (const GLvoid*)8);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(0);

意图是画个等腰直角三角型,三点坐标是(0,0),(1,0),(0,1). 颜色是分别是RGB, 但是画出来的效果就是不对,
顶点是对的,颜色不对,怀疑是自己 glVertexAttribPointer 用错了,但也找不出原因。
求高手指点