假设你有一个网格。考虑其中一个三角形。假设您想知道哪些三角形是该三角形的邻居。
事实上:
OpenGL(或 3D 管道的其他方面)是否以某种方式“知道”这些信息?
我知道找到相邻三角形的唯一方法是简单地查看网格的所有顶点。
我的问题:
在实际的 3D 管线级别,“硬件”是否知道哪些三角形是相邻的??
或者是否有某种魔法,也许是着色器级别的方法可以立即给出这些答案?
或者说,物理层是否能以某种方式快速知道碰撞网格的哪些 tris 是相邻的?
或者,也许,您可以通过编写自定义着色器来获得此信息,着色器级别是否“知道”此信息?
这是怎么回事,低级专家?谢谢
PS 当然,如果“从硬件”无法获得此信息,最好的办法是维护网格的某种空间数据库。很容易,但如果信息已经从管道/硬件的某些方面可用,那就很傻了。谢谢!
以后的注意对于 future 的读者,我现在已经与致力于硬件的 coupla folx 广泛讨论了这个问题。
答案如下:
确实,总而言之,3D 管道不知道相邻三角形:就这么简单。正如 Anteru 解释的那样,一个顶点仅针对 same 三角形中的其他两个顶点进行渲染,仅此而已。希望它可以帮助某人。
Best Answer-推荐答案 strong>
不,OpenGL 不知道也不关心什么是接近的。它单独渲染每个三角形。相邻三角形相关的唯一情况是您使用几何着色器,但在这种情况下,您必须提供邻接信息。
对于渲染,硬件只关心共享哪些顶点,因此如果可能(即它们是否适合顶点缓存),它不会对它们进行不必要的着色。
关于ios - 使用 3D 管道查找附近的三角形?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/8451632/
|