如何实现与使用glAlphaFunc(GL_GREATER,0.99f)相同的效果?

时间:2015-03-31 13:48:45

标签: opengl

我有一个用作纹理的png图像,其中一部分是透明的,因为alpha为0.现在看来" glAlphaFunc(GL_GREATER,0.99f)"和" glEnable(GL_ALPHA_TEST)"不再使用。我正在考虑使用混合。但是如何实现呢?

另外,任何人都可以向我解释功能

glBlendFunc(GL_SRC_COLOR, GL_ZERO);

的作品?什么是源比例因子&目的地比例因子及其使用方式?

1 个答案:

答案 0 :(得分:1)

alpha函数根据其alpha值丢弃片段。它是固定管道的一部分。在可编程管道中,您只需根据需要比较您的Alpha,并在必要时调用discard。或者,如果您愿意并且您的混合模式合适,只需将alpha向下推到0.0

如果你不使用可编程管道,那么你应该使用glAlphaFunc - 你明确地用老式的方式写东西。

glBlendFunc(GL_SRC_COLOR, GL_ZERO)有效地使用源像素的R,G,B,A作为源缩放因子,并使用0作为目标缩放因子。因此输出像素只是输入的函数,每个通道都是平方的。

相关问题