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

事实上:

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

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

我的问题:

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

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

还是在某种程度上从物理层面上知道碰撞网格的哪些三角形是相邻的?

或者,也许您可​​以通过编写自定义着色器获得此信息,那么着色器级别是否“知道”该信息?

低级专家怎么了?谢谢

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

稍后注意,供将来的读者使用,我现在与致力于硬件的coupla folx广泛讨论了此问题。

答案如下:

的确,总而言之,3D管道不知道有关相邻三角形的方法:就这么简单。正如Anteru解释的那样,仅针对中相同的三角形中的其他两个渲染顶点。希望它能帮助某人。

最佳答案

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

对于渲染,硬件仅关心共享哪些顶点,因此在可能的情况下(即,如果它们适合顶点缓存),它不会对阴影进行过多的着色。

10-08 08:24
查看更多