【发布时间】:2012-09-01 16:06:34
【问题描述】:
我正在尝试使用 glReadPixel() 获取纹理的 alpha 值。我遇到的问题是,一旦 alpha 值像素低于 0.5f,它就会开始合并背景对象的 alpha 值。我永远无法获得 0.0f 到 0.49999f 的 alpha 值。有没有办法忽略任何背景对象的 alpha 值并仅获取顶部纹理或对象的 1 像素 alpha 值?
std::vector< float > pixels( 1 * 1 * 4 );
glReadPixels(mouse.x,mouse.y,1,1,GL_RGBA,GL_FLOAT,&pixels[0]);
printf("alpha value = %f", pixels[3]);
【问题讨论】:
-
既然你有一个纹理,你可能在内存的某个地方有它。为什么不直接从中读取呢?
-
这就是我最终所做的。工作完美。清理完代码后,我会发布答案。
标签: opengl opengl-es textures alpha glreadpixels