【问题标题】:how to pick up rgb color value of a pixel from a mouse click如何通过鼠标单击获取像素的 rgb 颜色值
【发布时间】:2011-08-19 13:17:25
【问题描述】:

这可能是一个非常幼稚的问题,但我有点卡住了。 我正在编写我的第一个 opengl 程序,我想获取一个像素的 R 值,即我通过鼠标单击获得的点。 我对如何使用 glReadPixels 函数一无所知。

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();
    }
}

【问题讨论】:

    标签: c opengl mouse mouseevent glut


    【解决方案1】:

    文档很清楚:

    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);
    

    【讨论】:

    • 我正在使用 GL_INT,并且对于使用 glColor3f() 赋予不同颜色的像素,我得到了相同的 R 值。
    • 您是否做出了 Andreas 建议的更改?请特别注意,宽度和高度应以像素为单位(而不是像您的问题中那样为 0.1),并且 y 坐标是倒置的(从底部开始)。
    • @Nitin 请记住,如果使用GL_INT,颜色值的 [0,1] 范围将转换为 32 位整数范围(与您可能期望的 [0,255] 形成对比)
    猜你喜欢
    • 2015-04-09
    • 2018-04-25
    • 2021-08-05
    • 2014-02-07
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    相关资源
    最近更新 更多