2
void render(){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glBegin(GL_QUADS);
glColor3f( 0, 255, 0 ); //color it green
glVertex3f( -100, 0,  100  );
glVertex3f( -100, 0, -100  );
glVertex3f( 100,  0, -100 );
glVertex3f( 100,  0, 100 );
glEnd();

int tmpx, tmpy;
GLint pixel_color[3];
SDL_GetMouseState(&tmpx, &tmpy);

glReadPixels(tmpx, win_width - tmpy, 1, 1, GL_RGB, GL_INT , &pixel_color[0]);
printf("PIXEL: %d - %d - %d\n", pixel_color[0], pixel_color[1], pixel_color[2]);

SDL_GL_SwapBuffers();
}

上記のレンダリング コードを使用して、マウスが指すピクセルの RGB カラーを取得しようとしています。平面は完全な緑 (255) に着色されていますが、glReadPixels によって返される値は 255 ではなく 2147483647 です。

すでに型を変更しようとしましたが、期待した値が返されませんでした。glColor によって設定された同じ値を返すようにするにはどうすればよいですか?

4

1 に答える 1

4

変化する

GLint pixel_color[3];

GLubyte pixel_color[3];

変更する

glReadPixels(tmpx, win_width - tmpy, 1, 1, GL_RGB, GL_INT , &pixel_color[0]);

glReadPixels(tmpx, win_width - tmpy, 1, 1, GL_RGB, GL_UNSIGNED_BYTE , &pixel_color[0]);
于 2012-12-17T08:36:05.000 に答える