是否可以实现自定义深度缓冲区值,以便实现非传递性排序? 例如

Red > Green
Green > Blue
Blue > Red

我想这会在片段着色器之类的东西中实现,仅按照上面的模式,如果像素位于现有像素的顶部,则只写像素。 请注意,由于它是非传递性的,因此无法为每种颜色分配单个数值并保留其顺序。

下图说明了我的意思(这就是我希望它能够做到的):

在此处输入图片说明

(图片来自维基百科)

在OpenGL中我想要的是这里可​​能的吗,还是我在细节方面做得太多? 如果有可能,性能下降将有多严重?

  ask by Patrick translate from so

本文未有回复,本站智能推荐:

1回复

如何使用OpenGL和GLSL手动填充深度缓冲区

我对如何手动填充深度缓冲区没有成功进行了大量研究。 直到这里,我所知道的是,在渲染过程中,OpenGL自动填充了附加到FBO的深度纹理(GL_DEPTH_COMPONENT)。 例如,以下片段着色器代码有效: 因此,如果我将以下代码行写入主行: 结果是一样的! 因此
2回复

使用光线投射时在深度缓冲区中写入正确的值

我在3D纹理中进行光线投射,直到我达到正确的值。 我在立方体中进行光线投射,并且立方角已经在世界坐标中,所以我不必将顶点与模型视图矩阵相乘以获得正确的位置。 顶点着色器 片段着色器 一切都按预期工作,我现在想要的是将正确的值采样到深度缓冲区。 现在写入深度缓冲区的值是立
1回复

如何使用深度缓冲区来存储索引

我想以一种稍微不正统的方式使用深度缓冲区,我对所有规范化,缩放以及那里发生的事情感到非常困惑。 我的计划是由AMD的一些人实现空间哈希算法( 链接到pdf )。 tl; dr-version:通过将3D顶点离散化为(平面2D)深度纹理数组来加速最近邻搜索,将深度设置为VertexID
4回复

如何在片段着色器中使用gl_FragCoord.z在现代OpenGL中线性渲染深度?

我阅读了很多关于使用片段着色器获取深度的信息。 如 http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=234519 但我还是不知道gl_FragCoord.z是否是线性的
2回复

深度缓冲区似乎不起作用-OpenGL Shader

我正在将openGL与GLFW和GLEW一起使用。 我正在使用着色器渲染所有内容,但似乎深度缓冲区不起作用。 我用于3D渲染的着色器是: 顶点着色器 片段着色器 而且我还启用了深度缓冲和剔除面 看起来是这样的: 多维数据集首先是渲染器,因为它是网格的第
2回复

OpenGL深度缓冲区行为不符合预期

我一直在从事教育追求引擎的开发工作,并且遇到了我理解的OpenGL概念,但是我无法解释我一直观察到的行为。 问题出在深度缓冲区。 另外,请理解我已经解决了该问题,并且在帖子结尾我将解释解决该问题的原因,但是我不理解为什么通过我的解决方案解决了该问题。 首先,我初始化GLUT&GLEW:
1回复

当存在多个颜色缓冲区时,OpenGL中颜色和深度缓冲区之间的绑定是什么

当有一个颜色缓冲区时,我确实理解了默认FB和帧缓冲区对象背后的概念和颜色和深度缓冲区。 但我不明白的是,当有多个颜色缓冲区时,深度缓冲区如何“绑定”到颜色缓冲区。 例如: 在多个渲染目标的情况下,我们可以将N个颜色缓冲区附加到不同的颜色附着点。 但我们只有1个深度附着点。
1回复

深度缓冲区的OpenGL计算法线和TBN矩阵(SSAO实现)

按照本教程,我将在OpenGL中实现SSAO: Jhon Chapman SSAO 基本上,所描述的技术使用沿碎片法线定向的半球核。 然后将样本的视图空间z位置与其屏幕空间深度缓冲区值进行比较。 如果深度缓冲区中的值较高,则意味着样品最终以几何形状结束,因此应将该片段闭塞。 该技
1回复

如何获得深度缓冲区中的先前值?

我该怎么做下一个算法? : 我可以用glDepthMask(false); ,但适用于所有像素的alpha < 1多边形。 如果多边形的像素为alpha = 1且alpha < 1 ,则渲染的图片不正确。 我需要它来渲染包含任何alpha值的文本蒙版! 我无法使
1回复

帧缓冲区深度伪像

我无法摆脱的FrameBuffer深度纹理上有一些伪像: 用于初始化FrameBuffer的代码: 用于绘制FrameBuffer的代码: 实际渲染的FragmentShader: FrameBuffer渲染的FragmentShader: 红色的“网