iPhone OpenGL ES:glReadPixels不能正常工作

时间:2010-12-17 00:53:25

标签: iphone opengl-es picking glreadpixels

我尝试使用glReadPixels实现一个简单的拾取功能但是当我点击一个1色的对象时,根据我点击该对象的位置,我会得到不同的值?没有特殊照明等?这是怎么回事?有时会返回所有零。我把一切都关掉了(纹理等),但仍然没有快乐。

我认为这个函数会返回你点击的像素的颜色吗?

- (void)getPixelColour:(CGPoint)point {

    Byte pixelColour[4];
    glReadPixels(point.x, point.y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &pixelColour);

    NSLog(@"%d %d %d", pixelColour[0], pixelColour[1], pixelColour[2]);

}

更新:添加此内容以修复它:

glGetIntegerv( GL_VIEWPORT, __viewport );   
point.y = (float)__viewport[3] - point.y;

1 个答案:

答案 0 :(得分:1)

glGetIntegerv(GL_VIEWPORT,_ viewport);
point.y =(float)
_viewport [3] - point.y;