OpenGL - 透明度是如何工作的?

5

在OpenGL中,透明度是否需要使用Alpha通道?我能否使用glBlendFunc或其他方法使黑色或白色变为透明/不可见?如果可以,该如何实现?


你所做的任何事情都很可能比阿尔法通道更加复杂。如果只是为了学习,那没问题。那么你为什么要避免使用阿尔法通道来实现透明度呢? - µBio
因为我已经有没有 alpha 通道的图像了。 - Tenev
请提供更多细节,Opengl中的透明度太过笼统。您想要做什么? - ferosekhanj
重复的问题:https://dev59.com/Hk_Ta4cB1Zd3GeqPBYEj#3395132,我的回答有什么问题吗?另外,如果这个问题是“是否有其他方法”,是有的,但更加复杂。 - Calvin1602
这是关于编程的内容,需要将其从英语翻译成中文。请只返回已翻译的文本:这不是重复的问题,另一个问题是有关去除纹理/像素的,而这个问题是关于全局OpenGL透明度的... 我认为两者是不同的。 - Tenev
2个回答

2

需要透明度时,您需要使用alpha通道。您可以使用着色器模拟颜色键入的行为,或者处理图像并将颜色键入替换为alpha = 0.0的像素。

请注意,GPU始终分配RGBA纹理,即使您想要RGB纹理。硬件中仍然存在alpha通道。


请注意,GPU始终会分配RGBA纹理,即使您需要的是RGB纹理。硬件上仍然存在alpha通道。请问您有参考资料吗?尽管这很有道理,但我还没有听说过。 - Calvin1602
@Calvin 这个评论来自NV/AMD的工程师,但我记得在幻灯片中看到了一些参考资料。 - Dr. Snoopy

2
不需要在纹理中使用alpha通道。对于所有符合透明度规则的片段,在您的片段着色器中调用"discard"即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接