ios - 使用 3D 管道查找附近的三角形?

标签 ios opengl-es 3d mesh polygons

假设你有一个网格。考虑其中一个三角形。假设您想知道哪些三角形是该三角形的邻居

事实上:

OpenGL(或 3D 管道的某些其他方面)是否以某种方式“知道”此信息?

我知道找到相邻三角形的唯一方法是简单地查看网格的所有顶点。

我的问题:

在实际的 3D 管线级别,“硬件”知道哪些三角形是相邻的

或者是否有某种魔法,也许是着色器级别的方法可以立即给出这些答案?

或者,也许物理层面以某种方式快速知道碰撞网格的哪些三角形是相邻的?

或者,您可以通过编写自定义着色器来获取此信息,着色器级别是否“知道”此信息?

这是怎么回事,低级专家?谢谢

PS 当然,如果“从硬件”无法获得此信息,最好的办法是维护网格的某种空间数据库。很简单,但如果信息已经可以从管道/硬件的某些方面获得,那就很愚蠢了。谢谢!


稍后注意对于 future 的读者,我现在已经与致力于硬件的 coupla folx 广泛讨论了这个问题。

答案如下:

事实上,总而言之,3D 管道不知道相邻三角形:就是这么简单。一个顶点仅相对于同一三角形中的其他两个顶点进行渲染,仅此而已,正如 Anteru 所解释的那样。希望它对某人有帮助。

最佳答案

不,OpenGL 不知道也不关心什么是接近的。它单独渲染每个三角形。相邻三角形相关的唯一情况是您使用几何着色器,但在这种情况下,您必须提供邻接信息。

对于渲染,硬件只关心哪些顶点是共享的,因此如果可能的话,它不会比必要时更频繁地对它们进行着色(即,如果它们适合顶点缓存。)

关于ios - 使用 3D 管道查找附近的三角形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8451632/

相关文章:

graphics - 操作系统如何在屏幕上绘制窗口?

javascript - OrbitControls 不适用于加载文件

iOS UIPageControl 在点击左右时改变行为

ios - 在 OpenGL ES 中绘制一个非常高分辨率的纹理对象(球体)

graphics - 使用 WebGL 而不是桌面 OpenGL

java - 如何使用 GPU Video-android 在视频上同时获取水印和过滤器?

c# - 判断点是否在线段上

ios - 使用 Firebase 将图像从一个 View Controller 传递到另一个 View Controller (快速)

ios - 条目字体大小 Xamarin.Forms iOS

ios - 更新 EKEvent 时收到间歇性 EXC_BAD_ACCESS