问题标签 [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 投票
2 回答
944 浏览

ios - iOS / Core-Animation:12张重叠的卡片一圈

我试图在圆圈中排列 12 个对象,以便每个对象都与其逆时针相邻对象重叠。

像这样的东西:

在此处输入图像描述

问题是,如果我只依赖绘图顺序,其中一个总是会完全在最上面,在这种情况下是 12 点钟的红色。

我试过使用

试图围绕垂直轴旋转,从而将一侧塞到邻居后面,但这不起作用。

有人告诉我这是因为核心动画不支持深度测试。

有没有办法做到这一点而不会闯入 GL?

0 投票
1 回答
2345 浏览

ios - GLKit 中的深度测试

我是 OpenGL/GLKit 的新手,并且在深度测试方面遇到了麻烦。下图显示了一个有五个横梁相交的柱子。它们都在中间(柱子内部)相遇,但正如您所见,应该被遮挡的光束部分仍然可见。它们像疯了一样闪烁,当我改变视图以使光束在屏幕上重叠时也会发生同样的事情。如果我不 glEnable(GL_CULL_FACE) 那么它会发生在每个形状内,即后多边形的背面被绘制并干扰前多边形的正面。

在此处输入图像描述

以下是我认为相关的代码片段,我省略了有关设置顶点和视角的内容。希望有人会认识到这个问题,并且那里有灵丹妙药。

在我的视图控制器中

在 Beam.m 中

我完全承认自己在这方面非常陌生且缺乏经验,因此如果我的应用程序结构不佳,我很愿意接受建设性的批评。

干杯,克雷格

0 投票
2 回答
2875 浏览

opengl - 无法在 OpenGL 中进行深度测试

我使用SFML创建窗口。

在这个屏幕截图中,立方体应该在金字塔的后面,但它不起作用。 截屏

这是我使用的最小代码:

我试过不同的深度函数,GL_LESS,GL_EQUAL,我都试过了。同样在不同的地方启用和禁用深度测试,似乎没有任何效果。

我正在运行 Mac OS X 10.7 ( Lion ),不确定这是否重要,尽管在升级之前我似乎对这些事情没有任何问题。

0 投票
2 回答
2608 浏览

qt - Qt中的OpenGL深度测试不起作用

我将格式设置为:

构造函数中。

然后在initializeGL中我设置depthTesting。

在paintGL 中,我清除了深度缓冲区。

我记得它曾经使用较少的顶点,所以可能是我使用了太多的深度缓冲区来处理(?)。我有 32*32*32 体素,大部分时间都绘制了一半,所以是 98304 个四边形。

然而,深度测试仍然不起作用,并按执行顺序显示四边形。

0 投票
2 回答
4158 浏览

java - 2D LWJGL with OpenGL - 启用深度测试以分层 2D 纹理?

我需要在我的 OpenGL 初始化方法中添加什么来启用深度测试,以及我将如何实际使用它来进行纹理分层?

我必须将 glOrtho 的最后一个参数扩展到比 -1 更极端的值,当然还有 glEnable 深度测试。然后要使用它,我只能假设我将 glVertex 的第三个参数更改为不为 0 的值,以将其发送到其他纹理的前面/后面。

我试试这个,该死的纹理甚至不显示。xD 我一定是错过了什么。


编辑:回复:蒂姆的回应

每当我使图像的 z 值比 -1 更极端时,它并没有显示屏幕只是黑色的。

0 投票
1 回答
131 浏览

opengl - 如何对某个范围进行深度测试?

在一定范围内进行深度测试的最常见/最简单/最快的方法是什么?

pass if (currentDepth-offset < newDepth && newDepth < currentDepth)

  • currentDepth := 深度缓冲区中的值
  • offset := 常量(在编译时知道并且所有片段都相同)
  • newDepth := 片段的深度

理想情况下,函数 glDepthFunc(...) 会更灵活。

0 投票
1 回答
342 浏览

c - 绘制立方体时出现奇怪的 OpenGL 行为

当我用这段代码画一个立方体时

我得到一个奇怪的 cude 图:

图像1

img2

即使没有 gluLookAt(),我仍然会得到一张奇怪的图画。

奇怪的是我在 python OpenGL 项目中使用了完全相同的代码并且没有遇到任何问题。所以这似乎是一个C错误?

似乎根本没有绘制前 2 个四边形(绿色和橙色)。

0 投票
2 回答
2248 浏览

cocos2d-iphone - 使用 cocos2d-iphone 启用 2D 投影的充分理由是什么?

在 cocos2d-iphone 中,默认的投影类型是“3D”投影。但您也可以将投影设置为“2D”,如下所示:

在幕后,3D 投影使用透视投影,而 2D 投影是 OpenGL 正交投影。这两种投影模式的技术细节可以在这里查看,这不是我感兴趣的。

二维投影对于 cocos2d 用户有什么好处和坏处?切换到 2D 投影的充分理由是什么?

就我个人而言,我使用 2D 投影能够将深度缓冲用于等距平铺地图。等距平铺地图需要此功能才能正确在平铺地图上对平铺和对象进行 z 排序。

我还在非 tilemap 项目中使用了带有深度缓冲的 2D 投影,以通过 vertexZ 属性获得完整的 z 顺序控制。该项目使用伪等距显示,其中对象的 vertexZ 基于其 Y 坐标。

这意味着我一直使用 2D 投影只是为了能够使用 vertexZ 属性,这也需要启用深度缓冲。是否还有其他原因可能想要切换到 2D 投影?

0 投票
1 回答
1622 浏览

opengl-es-2.0 - glreadpixel gl_depth_component 返回 0?

我正在寻找一个立方体和一条线的交点的解决方案。所以我用

我显示了 zz ,但结果为 0。所以当我触摸立方体(实际上是在 2d 屏幕上)时,如何获得立方体的深度缓冲区值。我使用 GLES20 和 Android API level15。我的代码如下。

顺便说一句,挑选颜色效果很好。

谢谢!

0 投票
1 回答
1413 浏览

opengl - 使用 OpenGL 读取深度图

我提取了 2 张图像的深度图并将它们存储为 .tif 文件

现在我想使用openGL根据它们的深度加入这两个图像

所以我想从 .tif 文件中读取每个图像的深度,然后使用该深度来绘制具有更高深度的像素

为了更清楚,深度图是两个像这个 链接的图像

所以说我有前一张图片,我想把它和这张图片一起加入

关联

我的问题是如何从 .t​​if 文件中读取这个深度