首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL Voxel游戏-避免透明度重叠

OpenGL Voxel游戏-避免透明度重叠
EN

Stack Overflow用户
提问于 2015-09-18 01:20:30
回答 1查看 402关注 0票数 3

我正在做一个体素游戏,我已经设计了0.5阿尔法的水立方体。如果所有的水都在相同的高度上,就像下面的图片所示:

但是,如果水不在同一高度,就会发生α重叠:

如何防止这种重叠的发生?(例如,只为每个像素绘制最近的水体,丢弃其余的)。我是否需要使用FrameBuffers,用多次传递来绘制场景,或者使用交替的混合函数,或者采用另一种更便宜的GPU方法就足够了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-18 16:17:56

我找到了一个答案,但没有用多张通行证画出现场。我希望它能帮助到一些人:

我们将为每个像素绘制最近的水体,丢弃剩余的,从而避免重叠。

  1. 首先,你正常地绘制实心块。
  2. 然后,在禁用在颜色缓冲区glColorMask(false,false,false,false)中写入后绘制水。Z-缓冲区将按需要更新,但尚未提取水。
  3. 最后,启用在颜色缓冲区(glColorMask(true,true,true,true) )中的写入,并将depthFunc设置为LEQUAL ( glDepthFunc(GL_LEQUAL) )。只有最近的水像素才能通过深度测试(将其设置为LEQUAL,而不是处理一些罕见但可能的浮点近似错误)。重新使水混合和抽水将产生我们想要的效果:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32642415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档