问题标签 [depth-buffer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
411 浏览

opengl-es - 将深度缓冲区引入使用多个顶点数组对象的渲染器

我有一个渲染基础设施,它使用多个顶点数组对象来渲染一个复杂的场景。每个顶点数组对象负责维护自己的一组绑定缓冲区、指针和属性(正如它们的设计目的)。

给定多个负责渲染的数组对象,如何引入深度缓冲,使每个单独的数组对象在渲染期间使用相同的深度缓冲区?换句话说,我如何统一 Vertex Array Objects(及其良好的封装属性)和深度缓冲的概念,这似乎是一个更全局的概念。

我发现的所有示例都描述了在帧缓冲区的上下文中使用深度缓冲区。苹果在这里描述了这种技术。那么在帧缓冲区级别实现深度缓冲然后让顶点数组对象写入该帧缓冲区的技术是什么?有没有我可以遵循的使用 VAO 和深度缓冲的示例?

我有一个封装顶点数组对象的类,这是它的绑定方法(负责设置各种缓冲区、指针和属性)。

绑定后,draw方法实现如下(这个draw方法在每个单独的顶点缓冲区对象上调用):

所有这一切都很顺利,但我无法看到深度缓冲适合于此。

0 投票
0 回答
614 浏览

java - glEnable(GL_DEPTH_TEST) - 不渲染任何东西

我正在做一个项目来学习渲染 3d 形状。为了获得正确的深度,我正在尝试使用 glEnable(GL_DEPTH_TEST)。正如预期的那样,它不会渲染任何东西,所以我添加了 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT),但我仍然没有得到任何渲染。这是我的代码的简化版本。

}

这是用于创建和渲染立方体的类

这是我用来查看事物的相机

0 投票
1 回答
1024 浏览

opengl - 深度组件的 Cuda 渲染缓冲区互操作

我要做的是使用 OpenGL 执行一些渲染,然后使用 CUDA 直接对渲染的 RGB 和深度组件执行一些只读后处理(计算),而不将数据复制到 PBO。

为此,我创建了一个 FBO,并在其上附加了两个 RBO(一个用于 RGBA,一个用于 DEPTH)。

然后,我使用 GL_RENDERBUFFER 作为参数为每个 RBO 调用 cudaGraphicsGLRegisterImage。对于颜色 RBO,cudaGraphicsGLRegisterImage 返回 cudaSuccess,但对于深度 RBO,我收到一个 cudaErrorInvalidValue。

我在论坛的某处读到,nVidia 目前不支持深度组件的 CUDA 渲染缓冲区互操作,尽管它在文档中很好地呈现。

我正在使用 CUDA Toolkit 5.0 并且我有一个 Quadro 2000 卡。

有人成功地做到了这一点,以及如何做到的?

以下是一些代码摘录:

0 投票
1 回答
701 浏览

.net - XNA 中的深度缓冲和 alpha 问题

我正在展示 的许多实例BasicEffect,每个实例都是一个“板”,随机选择四种纹理之一,部分透明或完全不透明。

我遇到的问题是,当渲染具有透明度的板时,只有已经渲染的板才能通过它显示。

很难解释一切是如何显示的,所以这里是图像

有没有比按正确顺序渲染更简单的解决方案?

0 投票
1 回答
630 浏览

opengl - 如何使用纹理作为深度附件?

我有一个带有多个渲染目标的帧缓冲区。它们都是纹理而不是渲染缓冲区。如何使用纹理A组件作为深度附件?我想使用默认的深度测试。RGBA

0 投票
2 回答
657 浏览

opengl - 2d 游戏中的自定义 zbuffer / 从片段着色器 (glsl) 中的帧缓冲区读取像素

我正在用 OpenGL 编写一个 2D(实际上是 2.5D)等距游戏。为了避免对在某些情况下可能非常复杂的图块进行排序,我正在尝试模拟某种深度缓冲区。对于每个图块,我有两张图像,一张带有颜色信息,一张带有深度信息。

图片1:http : //dl.dropbox.com/u/91457585/depth_buffer_test.png

作为第一种方法,我创建了这些图片。这个想法是将它们相互叠加并使用着色器进行深度测试。在这种情况下,我知道这没有多大意义,但这只是查看它在技术上是否可行的第一种方法。

所以现在我的问题!

下面你会看到着色器的代码。应该将帧缓冲区的深度信息与对象的深度信息进行比较。但是它似乎不起作用,现在我在某处读到这不可能像我那样。

清单:

那么有没有更好的方法来模拟深度缓冲区呢?也许通过写入真正的深度缓冲区?

0 投票
1 回答
1292 浏览

performance - 当点具有相同的深度时,opengl深度缓冲区很慢

我正在制作一个涉及在屏幕上绘制大量重叠四边形的 2d 游戏。什么在前面什么并不重要。

如果我用从 0 向上的 z 值绘制每个四边形并设置 glDepthFunc(GL_LESS),我会得到相当不错的速度提升,如你所料。这是为了避免必须绘制完全隐藏或部分隐藏在其他四边形后面的四边形。所以我使用类似的东西绘制四边形:

但是,由于我不将 z 值用于实际深度,因此我似乎应该能够:

或者只是将 z 值 0.0f 编码到着色器中。(第三个参数是 z 值,最终在着色器中设置为 gl_position 不变。)

奇怪的是,第二种方法(我每次都将 z 值设置为 0.0f)最终得到的帧速率几乎不到前者的一半。

为什么是这样?他们都使用 glDepthFunc(GL_LESS) 和

一样。我认为如果每次将 z 设置为 0.0f 会更快。为什么不是?

0 投票
1 回答
732 浏览

c# - 带有intel hd 3000的opentk c#上的深度纹理和fbo问题

我目前在使用英特尔高清图形硬件来实现阴影映射效果时遇到问题。我认为代码与我想要的结果相差不远,因为此代码片段在 ATI Mobility Radeon 5650 和 Nvidia NVS 4200M 上运行良好,但在 Intel HD 3000 和 4000 上不起作用。

“status”变量表示 FramebufferIncompletReadBuffer,因此使用此 fbo 将不正确(从灯光 POV 渲染场景)。我一直在网上看到这种状态,但我没有找到解决我问题的答案。所以我在这个片段上做错了什么和/或这个 FBO 问题的起源是什么。提前致谢。PS:在着色器中,我使用 1.2 版本,我应该将 ShadowMap 纹理采样为深度图。

0 投票
1 回答
372 浏览

flash - Away3D 深度缓冲

我正在 Away3D 中开发一个简单的场景编辑器,用户可以在其中导入、排列和转换对象。为了简化用户流程,我创建了一个小工具对象,它出现在选择上(基本上是三个箭头用于单击拖动),但是如果它们在选择的前面,这可能会被其他对象遮挡,相对于相机 - 有没有办法关闭给定对象/组的深度缓冲,以便它始终呈现在场景中其他对象的前面?

提前致谢

0 投票
2 回答
1990 浏览

graphics - 深度缓冲区和 Z 轴

我正在阅读一本 OpenGl 的书,其中指出了两个看似矛盾的陈述:

  1. 相机位于原点并向下注视负 z 轴。
  2. 深度缓冲区清除为默认值 1.0,具有较低 Z 值的像素通过可见性测试以显示在屏幕上。

虽然我了解深度缓冲区的概念,但我不明白为了通过深度缓冲区测试,如何确定小于另一个 Z 的 Z 值“位于”较高Z 值的“前面”。

我希望更高的 Z 值在“前面”,从而赢得深度缓冲区比较。我在这里想念什么?