Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
渲染基本体堆栈时的openGl GPU优化_Opengl_Gpu - Fatal编程技术网

渲染基本体堆栈时的openGl GPU优化

渲染基本体堆栈时的openGl GPU优化,opengl,gpu,Opengl,Gpu,如果我渲染15个大小相同的完全不透明四边形,深度测试禁用,GPU硬件/软件切割器是否足以处理最顶部的四边形并丢弃其他顶点/碎片?或者,使用模具缓冲区来实现相同的效果会有好处吗 它肯定会为所有不透明四边形生成碎片。此外,如果禁用深度测试,您可能会在屏幕上看到背面。因为深度测试是禁用的,最后渲染的人将绘制屏幕 甚至,如果您使用模具缓冲区,仍然会为四边形生成碎片,并通过模具和深度测试。它肯定会为所有不透明四边形生成碎片。此外,如果禁用深度测试,您可能会在屏幕上看到背面。因为深度测试是禁用的,最后渲染的

如果我渲染15个大小相同的完全不透明四边形,深度测试禁用,GPU硬件/软件切割器是否足以处理最顶部的四边形并丢弃其他顶点/碎片?或者,使用模具缓冲区来实现相同的效果会有好处吗

它肯定会为所有不透明四边形生成碎片。此外,如果禁用深度测试,您可能会在屏幕上看到背面。因为深度测试是禁用的,最后渲染的人将绘制屏幕


甚至,如果您使用模具缓冲区,仍然会为四边形生成碎片,并通过模具和深度测试。

它肯定会为所有不透明四边形生成碎片。此外,如果禁用深度测试,您可能会在屏幕上看到背面。因为深度测试是禁用的,最后渲染的人将绘制屏幕


甚至,如果您使用模具缓冲区,仍然会为四边形生成片段,通过模具和深度测试。

在这种情况下,大多数GPU都会超速,如果四边形很大,这将对性能非常不利。与其使用模具缓冲区,优化的最佳方法可能是启用深度测试、指定适当的深度值并前后渲染四边形


但是,在某些条件下(例如,不混合),许多移动设备(尤其是所有iOS设备和许多Android设备使用的PowerVR设备)中常见的基于分片的延迟渲染(TBDR)GPU将执行一个称为隐藏表面移除(HSR)的过程这将优化这种情况,并避免渲染将被遮挡的像素。

在这种情况下,大多数GPU都会过度渲染,如果四边形很大,这将对性能非常不利。与其使用模具缓冲区,优化的最佳方法可能是启用深度测试、指定适当的深度值并前后渲染四边形


但是,在某些条件下(例如,不混合),许多移动设备(尤其是所有iOS设备和许多Android设备使用的PowerVR设备)中常见的基于分片的延迟渲染(TBDR)GPU将执行一个称为隐藏表面移除(HSR)的过程这将优化这种情况,并避免渲染将被遮挡的像素。

即使从前到后渲染四边形,也会处理后四边形的顶点并生成碎片。他们只是丢弃它们而不是绘制。并且不要在帧中间更改深度测试方向。这将打破大多数GPU上的分层z缓冲优化,这将导致每个片段进行早期z测试,而不是更粗糙的z-cull(整个原语可能通过一次测试被剔除)。@mmostajab:不在TBDR硬件上。移动GPU的工作方式不同(对于不透明几何体)。即使您前后渲染四边形,也会处理后四边形的顶点并生成碎片。他们只是丢弃它们而不是绘制。并且不要在帧中间更改深度测试方向。这将打破大多数GPU上的分层z缓冲优化,这将导致每个片段进行早期z测试,而不是更粗糙的z-cull(整个原语可能通过一次测试被剔除)。@mmostajab:不在TBDR硬件上。移动GPU的工作方式不同(对于不透明几何体)。