Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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
Java 纹理部分离屏-性能差异_Java_Android_Textures_Opengl Es 2.0_Performance Testing - Fatal编程技术网

Java 纹理部分离屏-性能差异

Java 纹理部分离屏-性能差异,java,android,textures,opengl-es-2.0,performance-testing,Java,Android,Textures,Opengl Es 2.0,Performance Testing,图片上有两种情况的示例,其中渲染了纹理多边形。所有这些都是由OpenGLES2完成的 A) 多边形部分脱离视口 B) 多边形完全在它里面 我的问题: 情况“A”是否会消耗更少的系统/gpu资源*,因为纹理部分脱离屏幕,或者它的性能是否与我在视口中渲染时的性能相同?为什么? *“资源”-意思是速度,而不是内存 我知道opengl会在渲染纹理之前首先计算顶点,如果顶点在屏幕/视口外,它会跳过任何进一步的计算,但对于部分在屏幕外的纹理对象,情况是否也是如此它会忽略不可见的纹理部分吗?情况A应该更快。

图片上有两种情况的示例,其中渲染了纹理多边形。所有这些都是由OpenGLES2完成的

A) 多边形部分脱离视口 B) 多边形完全在它里面

我的问题:

情况“A”是否会消耗更少的系统/gpu资源*,因为纹理部分脱离屏幕,或者它的性能是否与我在视口中渲染时的性能相同?为什么?

*“资源”-意思是速度,而不是内存


我知道opengl会在渲染纹理之前首先计算顶点,如果顶点在屏幕/视口外,它会跳过任何进一步的计算,但对于部分在屏幕外的纹理对象,情况是否也是如此它会忽略不可见的纹理部分吗?

情况A应该更快。顶点处理将是相同的。之后,将应用到视图卷的剪裁。在情况A中,部分多边形将被剪裁,而在情况B中,整个多边形将被剪裁。之后,多边形将被光栅化,生成的片段将进入片段处理。由于情况A中的碎片较少,因此在该阶段要做的工作也较少。片段着色器进行纹理采样,因此在这种情况下,仅对纹理的可见部分进行采样

剪辑也可以在片段生成之后进行,但我总是希望它在片段着色器之前完成


虽然在情况A中工作总是较少,但这并不一定意味着您会在渲染中看到速度差异。您可能在管道的其他部分或应用程序代码中遇到瓶颈。

什么时候会出现这种情况,片段生成后会发生剪切?谢谢。这是硬件功能和效率的问题。例如,如果硬件在顶点剪裁方面不是很有效,那么在片段级别进行剪裁或使用两者的混合可能会很有好处。或者可能有硬件(应该重命名为无名)在某些情况下顶点剪裁被破坏,在这些情况下,您必须在片段级别执行所有剪裁。