GLSL:色を渡すには

本物のページはこちら→color

Included page "glsl:color" does not exist (create it now)

アトリビュート変数にしてまとめて色情報を渡す

cpp側

init関数

GLuint attColorLoc;
attColorLoc=glGetAttribLocation(gProgram,"Color");
//以下のどれか一つでもかけたらエラーになる
glEnableClientState(GL_COLOR_ARRAY);
glVertexAttribPointer(attColorLoc, 4, GL_FLOAT, GL_FALSE, sizeof(miffy::voxel<float>), &mVoxel[0].col.r);
glColorPointer(4,GL_FLOAT, sizeof(miffy::voxel<float>),&mVoxel[0].col.r);//!????

display関数

//glEnableVertexAttribArrayしないとダメ!!
    glEnableVertexAttribArray(attColorLoc);
    glDrawArrays(GL_POINTS,0,(mValidPointNum));

シェーダ

attribute vec3 Position;
attribute vec4 Color;
varying vec4 vColor;
void main(){
gl_Position = gl_ModelViewProjectionMatrix*vec4(Position,1.0);
vColor=Color;
//ちゃんとmainの中身でColor使わないと、なかったことにされるので注意。
}

疑問

glColorub()が便利なんだけど、0-255の範囲で渡すことができない。

サポートサイト Wikidot.com