问题标签 [depth-testing]

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

c++ - c ++和directx11深度测试不适用于少数物体场景

我正在研究c ++和directx11 ..我正确地初始化了一切。但不管我做什么。DepthBuffer 没有按预期工作..

在两个立方体中,一个立方体从某个角度看起来是透明的。即使第二个立方体非常遥远。它总是看起来好像它在前面。但是当它足够接近时,它会在第一个立方体上渲染..

我不知道我在这里做错了什么。我完全受够了:(

任何人都可以请好心帮我...拜托

#包括

0 投票
0 回答
562 浏览

java - LibGDX 深度测试错误

我在 LibGDX 中做一些基本代码并想要渲染一个绿色球体网格,但是我设置为 LEQUAL 的深度测试有一个错误。错误是它似乎像 GEQUAL 一样将它们呈现在前面。

这是截图 - https://www.imageupload.co.uk/image/5ot2

这是代码 -

MyGdxGame.java

CustomShader.java

custom.vertex.glsl

custom.fragment.glsl

0 投票
3 回答
834 浏览

c++ - OpenGL Lines 被其他对象隐藏

我的 OpenGL 程序有问题。我绘制了三个轴 Ox、Oy 和 Oz,以及位于轴上的 4 个金字塔。当我旋转形状时,轴应该是可见的,但它们被四个三角形隐藏了。我该怎么做才能看到轴?

这是结果 在此处输入图像描述

虽然它应该是这样的 在此处输入图像描述

0 投票
1 回答
128 浏览

opengl - linux openGL depth_test不工作

我在网上试了很多方法,还是不行。现在我考虑问题是否与我的操作系统(ubuntu)有关。

上面的两个函数来自我的代码..

0 投票
2 回答
417 浏览

opengl-es - OpenGL选择深度测试

我想实现一个 OpenGL 场景(OpenGL ES 2.0),其中仅在选定的三角形之间启用深度测试。

更具体地说:假设我们要渲染四个三角形。应该在三角形 1 和 2之间以及三角形 3 和 4之间启用深度测试,但既不三角形 1 和 3之间, 也不在 三角形 2 和 4之间。

换句话说:是否可以在两对三角形内而不是在它们之间启用深度测试(当两对三角形的渲染顺序可以在软件级别上更容易地计算时提高性能?

根据opengl.org 常见问题解答(参见页面底部 - 12.080),可以为此目的将场景划分为多个区域,但描述并没有足够详细,我无法理解这是如何实现的。

0 投票
1 回答
1353 浏览

libgdx - 3d 粒子和 3d 模型、libgdx 的透明度问题

我遇到了一些关于透明度和 3d 粒子的奇怪问题。一个简短的视频来说明: https ://youtu.be/ZHKI1X3MjhY 如您所见,我有一个 3d 粒子效果,火焰燃烧。里面是一个没有 alpha 混合的 3 模型,它显示得很好。然后在远处有一个小骨架(混合和alphatest打开),它在火中也显示得很好。然后我转动相机,看着战士骷髅,它就消失了,你看到的是他身后的东西。我再次转动相机,法师骨架也消失了,但你可以在更远的地方看到树木,它们具有完全相同的混合和 alpha 测试设置。如果我将角色移动到 20 码外,它也会开始通过火焰效果显示出来。

所以它似乎与3d粒子效果的距离有关......

3d 粒子批处理是一个扩展的 BillboardParticleBatch,如下所示:

所有角色和树都是使用以下属性创建的:

先绘制模型然后绘制粒子,我尝试更改顺序但没有区别。我已经为 alphatest、depthtest 和 blendingattribute 尝试了很多不同的设置,但找不到任何有效的设置。

编辑 我从 3d 模型中删除了 Blending 属性,现在它看起来应该与粒子效果有关。但是我需要我的角色模型上的大多数材料来设置混合..

当我启用混合时,任何人都知道为什么会发生这种情况?

我还尝试使用 BillboardParticleBatch 而不扩展它,以防我在那里做了什么,但效果更糟。所有启用混合的模型都出现在粒子效果的前面,即使它们站在粒子效果的后面。

0 投票
1 回答
641 浏览

java - OpenGL在给定深度绘制矩形

目前,我已GL_DEPTH_TEST启用并将其用于纹理。但是,我想绘制一个具有一定深度/z 值的无纹理矩形。

上面的代码绘制了正方形。如何为正方形设置 Z 或深度值,以便深度测试可以使用它?

0 投票
0 回答
361 浏览

opengl - 着色器中的 OpenGL 深度计算

我想要一些关于深度测试的特殊过程。首先,我想通过自己而不是GPU深度测试知道着色器中正确的深度计算。

如果我禁用深度测试,并写入深度缓冲区以达到与深度测试相同的效果:

像素着色器:

是正确的实施吗?不同的深度长度如何?(深度 16 或深度 24)

0 投票
1 回答
3839 浏览

c++ - opengl中的深度测试

我的程序拒绝进行深度测试。这两个球体对象总是按照它们创建的顺序绘制,而不是根据它们的位置。Sphere alpha 位于 (0, 0, 1),Sphere beta 位于 (0, 0, -10),但 OpenGL 仍然在 alpha 之上绘制 beta。我在我的程序中将深度测试设置为启用。

似乎没有任何效果。我希望 OpenGL 自动对窗口中绘制的任何对象进行深度测试。任何帮助或建议将不胜感激。这是完整的代码。

我使用的是 Ubuntu 14.04 操作系统。

0 投票
0 回答
3406 浏览

qt - 如何使用 QOpenGLWidget 启用深度测试?它呈现黑屏

目前我正在使用 Qt 和 OpenGL 编写一个小型应用程序,并选择QOpenGLWidget用于渲染图形。

这就是我声明我的小部件的方式:

这就是构造函数:

在我的初始化函数中,我设置GL_CULL_FACEGL_DEPTH_TEST

而且我真的不知道为什么小部件会呈现黑屏。这里有一些图片。第一个:带 disabledGL_CULL_FACE和 disabled GL_DEPTH_TEST在此处输入图像描述

第二个:启用GL_CULL_FACE和禁用GL_DEPTH_TEST。也许这不是一张好照片,但我可以向你保证,你可以透过另一个表面看到一些表面。 在此处输入图像描述

第三个:启用GL_CULL_FACE和启用GL_DEPTH_TESTGL_CULL_FACE实际上,是否启用并不重要。无论如何,它呈现黑屏。 在此处输入图像描述

这是没有任何阴影的图像,只是为了向您展示模型很好。 在此处输入图像描述

我尝试手动设置格式,但没有帮助。还是黑屏:

哦,是的,我在函数glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);的开头设置了。paintGL()