首页 > 解决方案 > glAlphaFunc 发生了什么?为什么它被弃用了?

问题描述

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

标签: openglopengl-3opengl-4opengl-2.0

解决方案


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

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

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


推荐阅读