图片上是两种情况的示例,其中正在渲染带纹理的多边形.全部由Opengl ES2完成.
A)多边形部分不在视口中
B)多边形完全在里面
我的问题:
情况’A)’是否会消耗更少的系统/ GPU资源*,因为纹理部分不在屏幕上,还是会执行与我在视口内部渲染的效果相同的效果,为什么?
*“资源”-表示速度,而不是内存.
我知道opengl会先计算顶点,然后再渲染纹理,并且如果顶点不在屏幕/视口之外,它会跳过任何进一步的计算,但是对于纹理对象部分处于屏幕外的情况是否相同?它会忽略不可见的纹理部分吗?
解决方法:
情况A应该更快.顶点处理将是相同的.之后,将应用裁剪到视图体积.在情况A中,部分多边形将被裁剪,而整个多边形在情况B中通过.之后,对多边形进行栅格化,然后将所得片段进行片段处理.由于情况A中的碎片较少,因此在此阶段要做的工作较少.片段着色器进行纹理采样,因此在这种情况下,将仅对纹理的可见部分进行采样.
生成片段后也可能发生裁剪,但是我总是希望它在片段着色器之前完成.
尽管在情况A下工作总是很少,但这并不一定意味着您会在渲染中看到速度差异.您可能在管道的其他部分或应用程序代码中遇到瓶颈.
总结以上是内存溢出为你收集整理的Java-部分纹理在屏幕外-性能差异全部内容,希望文章能够帮你解决Java-部分纹理在屏幕外-性能差异所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)