2011-08-19 96 views
0

这可能是一个非常天真的问题,但我有点卡住了。 我正在编写我的第一个opengl程序,并且想要拾取一个像素的R值,这是我从鼠标单击中获得的一点。 我对如何使用glReadPixels函数无能为力。如何从鼠标点击中拾取一个像素的RGB颜色值

void myMouseFunc(int button, int state, int x, int y) { 
    if (button==GLUT_LEFT_BUTTON && state==GLUT_DOWN) { 

     glReadPixels(x,y,0.1,0.1,GL_RED,GL_INT, pixel); 

     glutPostRedisplay(); 
    } 
} 

回答

2

的文档是相当清楚的:

http://www.opengl.org/sdk/docs/man/xhtml/glReadPixels.xml

GLubyte pixel; 
glReadPixels(x, windowHeight - y - 1, 1, 1, GL_RED, GL_UNSIGNED_BYTE, &pixel); 
+0

我使用GL_INT和我得到的是我一直在使用glColor3f赋予不同的颜色像素相同的R值()。 –

+1

你做了Andreas提出的改变吗?请特别注意,宽度和高度应以像素指定(不像您的问题中为0.1),并且y坐标反转(从底部开始)。 –

+0

@Nitin请记住,如果使用'GL_INT',颜色值的[0,1]范围将转换为32位整数范围(与您期望的[0,255]相反) –

相关问题