Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone alpha通道中的测试点_Iphone_Flash_Opengl Es_Alpha - Fatal编程技术网

Iphone alpha通道中的测试点

Iphone alpha通道中的测试点,iphone,flash,opengl-es,alpha,Iphone,Flash,Opengl Es,Alpha,在iphone上使用OpenGLES时,是否有方法检测绘制后像素的alpha是否为0 我想测试多个点,看看它们是否在用户绘制的随机多边形区域内。如果你知道Flash,我要找的是与BitmapData::getPixel32等效的东西。帧缓冲区由GPU保存,不能立即由CPU访问。我认为您最希望从完整的OpenGL中获得的是遮挡查询;您可以请求绘制几何图形,并被告知实际绘制了多少像素。遗憾的是,iPhone上没有这一功能 我想你可能想要的是glReadPixels,如果你愿意的话,它可以用来读取单个

在iphone上使用OpenGLES时,是否有方法检测绘制后像素的alpha是否为0


我想测试多个点,看看它们是否在用户绘制的随机多边形区域内。如果你知道Flash,我要找的是与BitmapData::getPixel32等效的东西。

帧缓冲区由GPU保存,不能立即由CPU访问。我认为您最希望从完整的OpenGL中获得的是遮挡查询;您可以请求绘制几何图形,并被告知实际绘制了多少像素。遗憾的是,iPhone上没有这一功能

我想你可能想要的是glReadPixels,如果你愿意的话,它可以用来读取单个像素,例如(我在这里输入,没有测试)


使用glReadPixels会导致管道刷新,因此从GL性能的角度来看,这通常是一个坏主意,但它可以满足您的需要。与iOS不同,OpenGL对像素坐标使用图纸顺序,因此(0,0)是左下角。

BitmapData::getPixel32不返回alpha通道值吗?getPixel32返回像素的完整ARGB值。从这一点上,你可以检测出像素上是否有什么东西。它确实起作用,而且对性能也有很大的影响。我试图一次加载所有像素,但仍然很慢。有没有办法只使用alpha通道来加快速度?我后来发现,您可以指定GL_alpha作为格式,而不是GL_RGBA,并只返回该通道。不过,我不确定这会对性能有多大影响——这根本就是调用glReadPixels的问题。如果要进行多个测试,我认为使用glReadPixels一次捕获整个显示,然后从中检查alpha值可能会更快。
GLubyte pixelValue[4];
glReadPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixelValue);

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