glAlphaFunc 发生了什么?为什么它被弃用了?

What happened to glAlphaFunc? Why was it deprecated?

我正在阅读有关在 OpenGL 的片段着色器中使用 "discard" 的副作用,例如禁用早期测试。但是在我偶然发现 glAlphaFunc 之前,我找不到任何替代的 alpha 测试,它似乎自 OpenGL 3.0 以来就被弃用了。但是我找不到任何关于为什么它被删除的文档,而且似乎没有 "discard".

的替代方法

A​​lpha 测试(在我所知道的所有实现上)从未在早期测试阶段进行过。我认为这甚至是不可能的,因为在执行片段着色器之前,没有颜色或 alpha 通道的概念。

此外,启用 alpha 测试通常会禁用早期深度测试(参见 here),这意味着它的行为与在着色器中使用丢弃时的行为相同。

我无法直接回答为什么 glAlphaFunc 被删除,但由于 discard 和 alpha 测试之间没有真正的区别,所以这不是真正的问题。