我已经实现了几种细节层次技术来比较它们。由于其中两个使用曲面细分,我想知道最终渲染的网格有多少个三角形。我找到了一个创建函数来执行此操作的人,但它仅在镶嵌因子恒定且都相同时才有效。由于我的实现根据与相机的距离决定船体着色器中的因子,因此他的解决方案对我不起作用。
在我看来,如果我知道域着色器运行了多少次,那么我就会知道我有多少个三角形?有没有办法计算呢?还是有其他办法?
(我使用 DirectX,但我想 OpenGL 的方法大致相同,这就是为什么我将两者作为标签的原因)
我使用D3D11_QUERY_PIPELINE_STATISTICS类型的ID3D11Query解决了它。结构D3D11_QUERY_DATA_PIPELINE_STATISTICS用于结果,它有很多有用的信息,例如渲染基元的数量和着色器的调用等。