alpha通道中的测试点

时间:2010-11-08 01:45:02

标签: iphone flash opengl-es alpha

在iphone上使用OpenGLES时,有没有办法检测绘图后像素的alpha是否为0?

我想测试多个点以查看它们是否在用户绘制的随机多边形区域内。如果您了解Flash,那么我正在寻找与BitmapData :: getPixel32等效的东西。

1 个答案:

答案 0 :(得分:1)

帧缓冲由GPU保存,不能立即访问CPU。我认为你最想要的是完全OpenGL的东西是遮挡查询;您可以请求绘制几何图形并告知实际绘制了多少像素。可悲的是iPhone上没有。

我认为您可能需要的是glReadPixels,如果您愿意,可以使用它来读取单个像素,例如: (写在这里,因为我输入,未经测试)

GLubyte pixelValue[4];
glReadPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixelValue);

NSLog(@"alpha was %d", pixelValue[3]);

使用glReadPixels导致管道刷新,因此从GL性能的角度来看通常是一个坏主意,但它会做你想要的。与iOS不同,OpenGL使用图形纸顺序作为像素坐标,因此(0,0)是左下角。