问题标签 [zbuffer]

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 回答
2360 浏览

3d - 实现 z 缓冲区的好方法

目前我正在第一次体验 3D 投影和渲染。所以,我正在使用 löve lua(ik,不是 3D 的最佳平台),我可以完美地渲染所有多边形(只有三角形)。因为按到相机的距离对多边形表进行排序是一项任务,这需要最多的时间,所以我为此实现了一个 z 缓冲区。但我不太确定如何做到这一点。我知道原理,但是如何找出三角形中一点到相机位置的距离?我目前的解决方案听起来像这样:

这听起来确实效率低下。我怎样才能加快速度?这里有没有人有更好的方法来实现 zbuffering?

0 投票
1 回答
475 浏览

c++ - 深度缓冲区的绝对距离

1.如何找到深度缓冲区的绝对距离?

2.如何计算depth_bias和depth_scale的真实值?我尝试了赞扬:


在我的代码中,我声明了这个值——zNear、zFar。我决定给它们什么值,所以它们不是常量。所以距离取决于 ZFAR、ZNEAR 和 depthBufferValue(从像素到像素的变化)——

0 投票
0 回答
79 浏览

c++ - 计算zBuffer-接受错误的值

计算zBuffer-接受错误的值

我正在尝试计算我的 zBuffer 并且我接受了错误的值。我正在加载的模型必须具有不同的 Zbuffer 值,但我不接受它们我的值定义为 ZNEAR 1.0f ZFAR 1500.0f 我的代码是:

之后,我调用了一个加载所有这些的函数:

Vector3f 位置(0.0f,0.0f,-700.0f);

0 投票
1 回答
472 浏览

c++ - DirectX10 上的深度缓冲区不起作用

所以我试图在 DirectX10 中创建一个场景,但由于某种原因我的 zbuffer(depth buffer) 似乎没有工作。这是我设置 Zbuffer 的代码:

这是我场景中的样子:http: //imgur.com/UsaURcR

我使用资源(http://msdn.microsoft.com/en-us/library/windows/desktop/bb205074(v=vs.85).aspx)逐步完成,但现在我很困惑为什么它不工作。

任何帮助将不胜感激,谢谢!

0 投票
2 回答
296 浏览

opengl-es - OpenGL ES中AR叠加效果的自定义绘制顺序(10)

我正在开发一个增强现实应用程序,需要对三种不同几何图形的渲染进行排序。

级别 1
背景几何。这是一组代表基本架构的三角形。墙壁等

2 级
照片平面。作为纹理放置在空间平面上的建筑照片。该平面在几何上位于 1 级前面(从虚拟相机中看到)

3 级
动态几何。这些是诸如盒子之类的基元,用于增强场景。它们在几何上落后于 Level 2,因为它们正确地放置在 Level 1 的坐标系内

期望的效果:
a) 我希望 Level_2 始终绘制在 Level_1 的前面 这是通过将图像平面放置在更靠近相机的位置来自动实现的。

b) 我希望 Level_3 被 Level_1 正确遮挡,从而隐藏动态框的一部分,如果它部分放置在 Level_1 的墙后面。这也会自动发生在普通管道中。深度测试等

c) 我希望 Level_3 的所有片段/像素都绘制在 Level_2 之上,即使它们实际上在它后面。效果应该使对象看起来好像它们被照片的某些部分遮挡了。

我知道这是可能的,因为我在 X3Dom 中有一个应用程序(它呈现给 webgl),它可以通过“sortkey”属性实现这种效果。但我无法在纯 OpenGL 中重新创建相同的效果。我认为这应该是对 Stencilbuffer 或 Z-Buffer 技巧的简单使用,但我没有让它工作。我如何给 Level_3 几何体一个“总是通过”,以便它被绘制在其他所有东西之上,但也正确地被 Level_1 遮挡?或者我如何让 Level_2 只隐藏 Level_1 而不是 Level_3,即使它在两者前面?

基本上:
1) Level_2 隐藏 Level_1
2) Level_1 和 Level_3 相互遮挡
3) Level_3 的可见部分(相对于 Level_1)不被 Level_2 遮挡

有什么帮助吗?

谢谢!

0 投票
1 回答
168 浏览

three.js - 在 THREE.JS 中使用 2D 平面的 zbuffer 问题

我正在用纹理组成 2D 平面。我有3个级别。

问题是当我移动相机平面时似乎会改变 z 位置。

平面绘制在不正确的 Z 轴上,这取决于相机的位置。移动相机它再次改变,看起来很丑陋。

在此处输入图像描述

也许我需要激活一些 ZBuffer 属性才能正确绘图

WebGL init 是这样和planes 完全一样(只是Z坐标改变)

其他平面完全相同但Z位置更大

请帮忙!谢谢!帕洛莫

0 投票
0 回答
606 浏览

3d - 如何实现 z 缓冲算法

对于一个项目,我想在 3d 模型中实现 Z-buffer。我知道算法,我需要如何实现它。

0 投票
1 回答
231 浏览

3d - 渲染复杂对象的复杂性

考虑一个 3D 盒子。以随机方式重新镶嵌此框的顶点会创建许多大的相交面。渲染这样的对象更加复杂。为什么?这如何影响渲染复杂性?

0 投票
1 回答
75 浏览

c++ - 我的管道将深度缓冲区渲染到纹理可能有什么问题?

据我了解,深度测试的主要步骤:1)启用深度测试以及我们希望如何进行深度测试 2)创建帧缓冲区对象并确保它具有附加的深度 3)绑定我们的帧缓冲区对象(确保在渲染之前清除它)4)绘制东西

那应该不是吗?我们的帧缓冲深度附件应该有深度数据吗?但我总是得到直 1 的默认深度清晰颜色

步骤1:

第2步:

.

第 3 步:

第4步:

这些不是步骤吗?
我错过了什么吗?
我尝试了一些不同的教程。
我无法获得任何深度来渲染纹理,我一遍又一遍地获得直线 1。

0 投票
2 回答
2328 浏览

java - Z 缓冲算法未 100% 正确绘制

我正在用 Java 编写软件渲染器,并尝试使用 Z 缓冲来计算每个像素的深度。但是,它似乎工作不一致。例如,对于犹他茶壶示例模型,手柄可能会拉出一半,这取决于我如何旋转它。

我的 z 缓冲区算法:

给定一个三角形和射线原点,计算一个点的 z 值的方法:

计算射线原点是否在投影三角形内的方法:

三角形曲面法线的计算方法:

画错茶壶的例子:

在此处输入图像描述

我究竟做错了什么?我觉得这一定是一件小事。鉴于三角形完全绘制,我怀疑它是 pointWithinTriangle 方法。背面剔除似乎也可以正常工作,所以我怀疑是这样。对我来说最可能的罪魁祸首是 zValueOfPoint 方法,但我不知道它有什么问题。