我尝试使用 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;