我有一个非常简单的瓷砖地形图!所有瓷砖都是相同的尺寸,只是不同的高度(z值)! 我可以渲染它们,但是有成千上万的瓷砖,但并非所有瓷砖都在屏幕上,只有一部分(在视图之前)!所以我正在进行批量渲染,只收集屏幕上显示的图块,然后在1次调用中渲染它们! 我尝试使用D3DXVec3Project将世界空间的顶点投影到屏幕空间,然后检测屏幕上的哪个三角形,但这非常慢,将整个地图调用为7ms(约250x250次调用)。
现在我正在使用iso视图(D3DXMatrixOrthoLH),没有相机或眼睛,当我想移动地图时,我只是翻译世界!
我认为这是一个非常普遍的问题,所有引擎都必须面对优化,但我无法搜索它!是可见的检测,剔除还是剪裁......? 谢谢!我应该只是渲染屏幕上的所有图块,让DirectX自动剪辑吗? (如果我记得很清楚,上次我尝试渲染它们时,它仍然很慢)
img:http://i1335.photobucket.com/albums/w666/greenpig83/terrain2_zps24b77283.png
答案 0 :(得分:0)
是的,在复杂场景中,通常我们必须剔除不可见的几何体以实现交互式帧速率。当然,这在很大程度上取决于场景本身,API的功能和目标硬件。
以下是良好地形渲染器的第一步(按复杂程度排列):
现在你知道要问谷歌了什么;),但我仍然会添加一些链接。
初学者:
高级:
希望有帮助=)