问题标签 [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.
3d - 实现 z 缓冲区的好方法
目前我正在第一次体验 3D 投影和渲染。所以,我正在使用 löve lua(ik,不是 3D 的最佳平台),我可以完美地渲染所有多边形(只有三角形)。因为按到相机的距离对多边形表进行排序是一项任务,这需要最多的时间,所以我为此实现了一个 z 缓冲区。但我不太确定如何做到这一点。我知道原理,但是如何找出三角形中一点到相机位置的距离?我目前的解决方案听起来像这样:
这听起来确实效率低下。我怎样才能加快速度?这里有没有人有更好的方法来实现 zbuffering?
c++ - 深度缓冲区的绝对距离
1.如何找到深度缓冲区的绝对距离?
2.如何计算depth_bias和depth_scale的真实值?我尝试了赞扬:
在我的代码中,我声明了这个值——zNear、zFar。我决定给它们什么值,所以它们不是常量。所以距离取决于 ZFAR、ZNEAR 和 depthBufferValue(从像素到像素的变化)——
c++ - 计算zBuffer-接受错误的值
计算zBuffer-接受错误的值
我正在尝试计算我的 zBuffer 并且我接受了错误的值。我正在加载的模型必须具有不同的 Zbuffer 值,但我不接受它们我的值定义为 ZNEAR 1.0f ZFAR 1500.0f 我的代码是:
之后,我调用了一个加载所有这些的函数:
Vector3f 位置(0.0f,0.0f,-700.0f);
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)逐步完成,但现在我很困惑为什么它不工作。
任何帮助将不胜感激,谢谢!
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 遮挡
有什么帮助吗?
谢谢!
three.js - 在 THREE.JS 中使用 2D 平面的 zbuffer 问题
我正在用纹理组成 2D 平面。我有3个级别。
问题是当我移动相机平面时似乎会改变 z 位置。
平面绘制在不正确的 Z 轴上,这取决于相机的位置。移动相机它再次改变,看起来很丑陋。
也许我需要激活一些 ZBuffer 属性才能正确绘图
WebGL init 是这样和planes 完全一样(只是Z坐标改变)
其他平面完全相同但Z位置更大
请帮忙!谢谢!帕洛莫
3d - 如何实现 z 缓冲算法
对于一个项目,我想在 3d 模型中实现 Z-buffer。我知道算法,我需要如何实现它。
3d - 渲染复杂对象的复杂性
考虑一个 3D 盒子。以随机方式重新镶嵌此框的顶点会创建许多大的相交面。渲染这样的对象更加复杂。为什么?这如何影响渲染复杂性?
c++ - 我的管道将深度缓冲区渲染到纹理可能有什么问题?
据我了解,深度测试的主要步骤:1)启用深度测试以及我们希望如何进行深度测试 2)创建帧缓冲区对象并确保它具有附加的深度 3)绑定我们的帧缓冲区对象(确保在渲染之前清除它)4)绘制东西
那应该不是吗?我们的帧缓冲深度附件应该有深度数据吗?但我总是得到直 1 的默认深度清晰颜色
步骤1:
第2步:
.
第 3 步:
第4步:
这些不是步骤吗?
我错过了什么吗?
我尝试了一些不同的教程。
我无法获得任何深度来渲染纹理,我一遍又一遍地获得直线 1。
java - Z 缓冲算法未 100% 正确绘制
我正在用 Java 编写软件渲染器,并尝试使用 Z 缓冲来计算每个像素的深度。但是,它似乎工作不一致。例如,对于犹他茶壶示例模型,手柄可能会拉出一半,这取决于我如何旋转它。
我的 z 缓冲区算法:
给定一个三角形和射线原点,计算一个点的 z 值的方法:
计算射线原点是否在投影三角形内的方法:
三角形曲面法线的计算方法:
画错茶壶的例子:
我究竟做错了什么?我觉得这一定是一件小事。鉴于三角形完全绘制,我怀疑它是 pointWithinTriangle 方法。背面剔除似乎也可以正常工作,所以我怀疑是这样。对我来说最可能的罪魁祸首是 zValueOfPoint 方法,但我不知道它有什么问题。