我注意到,在我的程序中,当我将视线从镶嵌网格上移开时,帧时间会下降很多,这表明屏幕上没有发生镶嵌。(我没有自定义剔除代码)
但出于我的目的,我需要在几何着色器中访问镶嵌顶点,无论它们是否在屏幕上。
这些镶嵌三角形是否进入几何着色器阶段?或者他们甚至在进入镶嵌评估阶段之前就被淘汰了。
我注意到,在我的程序中,当我将视线从镶嵌网格上移开时,帧时间会下降很多,这表明屏幕上没有发生镶嵌。(我没有自定义剔除代码)
但出于我的目的,我需要在几何着色器中访问镶嵌顶点,无论它们是否在屏幕上。
这些镶嵌三角形是否进入几何着色器阶段?或者他们甚至在进入镶嵌评估阶段之前就被淘汰了。
当我将视线从我的镶嵌网格上移开时,帧时间会下降很多,这表明不在屏幕上的网格上没有发生镶嵌。
好吧,这是你的问题;相信更快的速度意味着缺乏镶嵌。
屏幕外多边形比屏幕内多边形更快的原因有很多。例如,就速度而言,您可能部分或完全受片段着色器和/或像素限制。因此,一旦这些片段完全在屏幕外被剔除,您的渲染时间就会下降。
简而言之,一切都很好。OpenGL 和 D3D 都不允许曲面细分阶段任意丢弃几何图形。请记住:您不必在剪辑空间中进行镶嵌,因此系统甚至无法知道三角形是否“不在屏幕上”。您的 GS 可以在屏幕上显示屏幕外的三角形。所以当时没有足够的信息来决定什么是屏幕外的,什么不是屏幕外的。
很可能,您的渲染器的性能与光栅化器/片段着色器有关,而不是与顶点处理有关。因此,即使顶点仍在处理中,由于三角形不在屏幕上,因此不会执行昂贵的每个片段操作。因此,性能有所提高。