2010-10-26 56 views
8

使用glColor4f(1.0f, 1.0f, 1.0f, alpha_);来设置我绘制的图元的透明度。获取当前颜色

但是我希望能够读取当前的opengl alpha值。那可能吗?

例如

float current_alpha = glGetAlpha(); //??? 
glColor4f(1.0f, 1.0f, 1.0f, alpha_*current_alpha); 

回答

10

要么你保存你使用glColor4f发送的最后一个Alpha值,任你使用:

float currentColor[4]; 
glGetFloatv(GL_CURRENT_COLOR,currentColor); 
1

你的意思是你在画片段的阿尔法值(这可以解释为什么你想要alpha_ * current_alpha)?如果是这样,请记住从管道中读回一个片段是昂贵的

如果您正在渲染回去,请考虑使用GL_SRC_ALPHA + GL_ONE_MINUS_SRC_ALPHA技巧。

+0

谢谢。我正在尝试做类似的事情。 – ronag 2010-10-26 23:00:40