我有一个用作纹理的png图像,其中一部分是透明的,因为alpha为0.现在看来" glAlphaFunc(GL_GREATER,0.99f)"和" glEnable(GL_ALPHA_TEST)"不再使用。我正在考虑使用混合。但是如何实现呢?
另外,任何人都可以向我解释功能
glBlendFunc(GL_SRC_COLOR, GL_ZERO);
的作品?什么是源比例因子&目的地比例因子及其使用方式?
答案 0 :(得分:1)
alpha函数根据其alpha值丢弃片段。它是固定管道的一部分。在可编程管道中,您只需根据需要比较您的Alpha,并在必要时调用discard
。或者,如果您愿意并且您的混合模式合适,只需将alpha向下推到0.0
。
如果你不使用可编程管道,那么你应该使用glAlphaFunc
- 你明确地用老式的方式写东西。
glBlendFunc(GL_SRC_COLOR, GL_ZERO)
有效地使用源像素的R,G,B,A作为源缩放因子,并使用0作为目标缩放因子。因此输出像素只是输入的函数,每个通道都是平方的。