0

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

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

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

标签相互覆盖

4

1 回答 1

0

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

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

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

于 2021-01-11T07:51:18.347 回答