我尝试使用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;
答案 0 :(得分:1)
glGetIntegerv(GL_VIEWPORT,_ viewport);
point.y =(float) _viewport [3] - point.y;