首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cg着色阿尔法共混

Cg着色阿尔法共混
EN

Stack Overflow用户
提问于 2016-10-16 07:44:30
回答 1查看 197关注 0票数 0

我想使用阿尔法混合(SRC_ALPHA, ONE_MINUS_SRC_ALPHA),基本上是这样的:

代码语言:javascript
复制
frag_out.aaaa * frag.out + ((1.0, 1.0, 1.0, 1.0) - frag_out.aaaa) * pixel_color

假设屏幕上的像素颜色是(1.0, 1.0, 1.0, 1.0),我目前正在呈现的颜色是(1.0, 1.0, 1.0, 0.4)

当我呈现这一点时,屏幕上产生的颜色有一个alpha 0.76 (尽管它以前完全不透明)

的确:

代码语言:javascript
复制
(0.4, 0.4, 0.4, 0.4) * (1.0, 1.0, 1.0, 0.4) + (0.6, 0.6, 0.6, 0.6) * (1.0, 1.0, 1.0, 1.0) = (1.0, 1.0, 1.0, 0.76)

因此,基本上屏幕上的颜色是不透明的(白色),在我把一个透明的雪碧放在上面之后,屏幕变得透明(0.76alpha),我可以透过背景观看。如果我能像这样把它混合在一起,那就太完美了:

代码语言:javascript
复制
(0.4, 0.4, 0.4, 1.0) * (1.0, 1.0, 1.0, 0.4) + (0.6, 0.6, 0.6, 0.6) * (1.0, 1.0, 1.0, 1.0) = (1.0, 1.0, 1.0, 1.0)

是否有可能做到这一点?如果是,怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-16 09:31:45

当使用RGB 3.0及以上版本时,这是完全可能的,因为混合函数可以分别设置为RGB和A。对于您的情况,这将是

代码语言:javascript
复制
glBlendFuncSeparate(GL_SOURCE_ALPHA, GL_ONE_MINUS_SOURCE_ALPHA, GL_ONE, GL_ONE);

指定目标alpha的混合因子的最后一个参数可能必须调整,因为您没有指定目的地alpha < 1的行为。有关更多细节,请查看功能文档

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40068078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档