体素中的OpenGL 3D透明度

时间:2014-01-14 13:58:34

标签: java opengl lwjgl

(提前抱歉,我不在我的电脑上,所以我无法提供代码) 我有一个基于体素的游戏,我想添加透明纹理,即玻璃。我意识到透明纹理会抛弃东西(通过其他块查看),所以我使用我的着色器去除低于玻璃纹理的alpha值的任何alpha分量。目前,玻璃的alpha值为0.26(坐标范围为0-1),工作正常。但是,如果我想在玻璃上添加一些透明度而不是去除所有透明度,我会遇到一个旧问题,你可以看到玻璃后面的块。

我在几个地方读过,我需要从前到后对几何体进行排序。即使使用着色器,这仍然与我的情况有关吗?我使用显示列表,对于我的世界中的每个块,我应该保留两个列表,一个用于不透明块,一个用于透明?所以当我渲染时,我会做一次渲染并渲染不透明列表,然后再做一次渲染过程,然后反向渲染块并渲染透明列表?

或者有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

查看透明几何体后面的块意味着您仍然可以启用深度检查,这意味着玻璃后面的块不会被渲染。

  

我在一些地方读过,我需要对几何体进行排序   从前到后。即使之后,这仍然与我的情况有关   使用着色器?

您仍然需要排序,几何着色器无法解决该问题

然而,在透明几何体在不透明几何体之后渲染时(在打开alpha混合之后),您只需要对透明几何体进行排序