我遇到了问题。
我在球体周围有许多静态顶点 - 将它们绘制为点
我正在绘制一个每个都有透明度的纹理。例如。字母。
点大小相对较大,所以我会看到纹理。
用户可以更改摄像机角度,滚动,倾斜和在全球范围内移动。
问题在于,当在其他点之后绘制点时,由于深度测试,它可能不会被渲染。但由于我的透明度纹理,它阻止了正确绘制点。
对于前。
白色'文字'是首先绘制的4个顶点字。
红色'文字'也是第二个绘制的4个顶点字。
由于深度测试,红色未完全绘制。
对于由于太大量顶点而渲染的每个帧,排序效率不高。
我做了一些关于它的研究,我遇到了OIT - 订单独立透明度。找到了很多文章和少数例子。
但这不是问题。
我正在努力理解它背后的逻辑。但我只是不管理:( 我熟悉混合,纹理,fbo,深度,。
我意识到有一些不同的算法使它工作,一些单通和一些多通
任何人都可以用“简单”的方式解释它吗?它会帮助我吗?
答案 0 :(得分:0)
我知道这是旧的,但无论如何...... 您应该看到if OIT is really necessary想要做什么。如果您只想在不透明的背景上绘制部分透明的广告牌文本,您可以使用“标准”alpha混合(glBlendEquation(GL_FUNC_ADD)和glBlendFunc(GL_ONE_MINUS_SRC_ALPHA,GL_SRC_ALPHA)对每个帧的广告牌进行前后排序并进行渲染。 ))。渲染透明对象时也要关闭深度写入(glDepthMask(GL_FALSE)),但要保持深度测试的启用(glEnable(GL_DEPTH_TEST))。