OpenGLで3角形を描画しようと思い、以下のような関数をつくったのですが
頂点の一つの色がおかしくなります(具体的には、赤でぬりつぶしたいの青くなります)。
どこがおかしいのでしょうか。
typedef unsigned long DWORD;
typedef DWORD D3DCOLOR;
void DrawTriangle(float x0, float y0, float x1, float y1,float x2,float y2,D3DCOLOR col){
//
// 長方形の描画関数から行列を減らし、三角形の描画関数にしようと試みた
//
unsigned int alpha = (col &0xff000000)>>24;
unsigned int red= (col &0x00ff0000)>>16;
unsigned int green = (col &0x0000ff00)>> 8;
unsigned int blue = col &0x000000ff;
const GLfloat triangleVertices[] = {
x0, y0,
x1, y1,
x2, y2,
};
const GLubyte triangleColors[] = {
(red), (green), (blue) ,(alpha),
(red), (green), (blue) ,(alpha),
(red), (green), (blue) ,(alpha),
};
//三角形を描画するが、色がおかしい
glVertexPointer(2, GL_FLOAT, 0, triangleVertices);
glEnableClientState(GL_VERTEX_ARRAY);
glColorPointer(3, GL_UNSIGNED_BYTE, 0, triangleColors);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
}
int main(){
//~~
//~~上下にいろいろあって
//~~
DrawTriangle(0, 0, 10, 60, 80, 50,((D3DCOLOR)((((255)&0xff)<<24)|(((255)&0xff)<<16)|(((1)&0xff)<<8)|((1)&0xff))));
//~~
//~~上記の(80,50)の点の色がおかしい
//~~
}
環境はXcode5です。
よろしくおねがいします。