Xamarin IOS Opentk - 具有透明纹理的 BlendFunc

Xamarin IOS Opentk - BlendFunc with transparent textures

我正在尝试使用 Xamarin 中的 OpenTK 渲染一些具有透明背景的标签纹理。起初标签似乎显示正常(见图1)但是当视图旋转时,一些标签背景不再透明(见图2)。

启用的BlendFunc是GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha).

我的问题是,尽管标签的位置如何,我怎样才能始终保持标签透明? 顺便说一句,相同的代码和着色器可以 运行 在 Android 设备上正常运行。

啊,是的,好老的透明度问题。不幸的是,这是一个图形程序员必须自己解决的问题。

对于几个标签,最直接的解决方案可能是按 z 深度对标签进行排序,然后从最远到最近渲染它们。您可能需要在该标签位置上做一些矩阵数学运算以调整视口旋转。

对于我正在开发的 3d 游戏,我选择实现称为 WBOIT by Morgan McGuire 的与顺序无关的透明方法,该方法实现起来相当简单,并且产生了相对较好的结果。