1

我正在尝试使用 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]);
4

1 回答 1

4

我正在尝试使用 glReadPixel() 获取纹理的 alpha 值

glReadPixels 从framebuffer返回数据,而不是纹理。因此,您将受制于已渲染的所有内容(以及当时使用的混合功能)。

我怀疑您在尝试解决的任何问题上都走错了路。

于 2012-09-07T18:56:31.737 回答