我想知道在图形API中使用栅格化(例如OpenGL或Vulkan )来渲染大型模型的常见技术是什么。
例如,如果我有一个大于1000万三角形的模型,并且渲染整个模型太慢,那么我可以使用什么优化步骤或技术?
我目前知道:
我不知道如何将水果剔除应用于一个单一的模型。我知道它可以用于多种型号:
for( int i=0; i < numObjects; i++ )
{
if( insideFrustrum( objects[i] )
{
addModelToBeRendered( objects[i] );
}
}发布于 2019-06-27 16:14:56
直截了当的解决方案是简单,根本不渲染高聚模型。有一个较低的细节模型,一旦模型太远,您就可以切换到它,这样就不会有什么不同了。在绘制20个三角形时没有任何意义,这些三角形最终都位于同一个像素中。
下一个选项是对模型进行分区,然后裁剪各个部分。您还可以使每个(一组)修补程序具有不同级别的详细信息。
这个分区可以采取补丁的形式,这些补丁大多是平面的。这样,你就可以在整个组中使用背面剔除,方法是取平均法线的点积,并将其与外观向量进行比较,如果它太大,只会显示背面,而渲染该补丁没有任何意义。
发布于 2019-06-28 00:47:17
我的第一个想法(除了剔除)是执行某种基于距离的层次细节算法。我以前听说过一些系统可以有选择地删除边缘和合并面,从而在单个网格上生成较低的细节部分,但大多数系统都倾向于采用一种简单得多的方法,即一旦较高的细节模型离摄像机足够远,就简单地加载到一个完全独立的较低细节模型中。
https://computergraphics.stackexchange.com/questions/8947
复制相似问题