2010-10-07 81 views
3

我想弄清楚如何從所選像素中提取RGB值。每次點擊它,它都會給我一個0的值,即使我點擊一個彩色的三角形。查找像素顏色

void mouse(int button, int state, int x, int y) { 
    if(state == GLUT_DOWN) { 
     float mx = p2w_x(x); // pixel to world coordinates 
     float my = p2w_y(y); 
     float rgb[3]; 
     glReadPixels(mx, my, 1, 1, GL_RGB, GL_FLOAT, rgb); 
     std::cout << rgb[0] << std::endl; // prints 0 for red always 
    } 
} 

回答

4

我不認爲你應該將像素座標轉換爲世界座標。我不知道GL,但它對我來說看起來不對。你從鼠標右邊獲得像素座標?並且您想要一個像素顏色值,from the framebuffer

也許你也可以使用整數類型來表示顏色值,用GL_UNSIGNED_BYTE和unsigned char rgb[3];來代替。並使用GL_RGB8格式,而不是簡單的GL_RGB。

另請參閱如何設置幀緩衝區的pixel format (store)。這將影響隨後的glReadPixels調用。

+0

沒錯,使用屏幕緩衝區座標。 – alxx 2010-10-07 09:46:26