一、什么是OverdrawUnityOverdraw(超绘)是指在渲染过程中绘制了超过一次相同像素的现象。当多个UI元素重叠时,每个像素都需要被多次绘制。这种绘制超出了渲染所需的最小像素数,因此被称为Overdraw。二、都有哪些元素会导致OverdrawUI元素:当UI元素叠加在一起时,它们可能会导致overdraw。Shader:某些shader可能需要绘制多次,导致overdraw。模型:当模型的面数很高时,会导致过多的像素被绘制出来。粒子系统:如果粒子的数量过多或者设置不当,会导致渲染时过多的像素被绘制出来。地形系统:如果地形细节设置过高,也会导致过多的像素被绘制出来。镜头后处理:如果
RomainGuy提到在Android4.4/5.0中引入了自动overdraw消除功能(请参阅http://www.curious-creature.com/2015/03/25/android-performance-case-study-follow-up/comment-page-1/#comment-52600),但我无法找到相关文档或讨论。有谁知道详情吗? 最佳答案 我找到了执行此操作的代码并与RomainGuy进行了验证:http://www.curious-creature.com/2015/03/25/androi
我正在使用ListView,其中的列表项具有背景资源。我想尽可能多地摆脱overdraw。我知道PerformanceCaseStudy在RomainGuy的博客上发帖,但我无法完全优化ListView。简化示例的代码显示在本文底部。该示例基本上只是带有ListView的“新Activity”向导。我的问题基于此示例。这是初始未优化案例的带有和不带有overdraw标记的屏幕截图:见证页面有灰色背景(在我的真实项目中是纹理),列表项有白色背景(在我的真实项目中是九色补丁)。overdraw是戏剧性的,屏幕的任何部分都被绘制一次,列表项在显示内容之前被绘制三次。很容易去掉Window中的
为了提高应用程序性能,我遇到了GPUOverdraw问题。根据RomainGuy's文章,这里是基本的颜色:没有颜色意味着没有overdraw。该像素仅被绘制一次。在此示例中,您可以看到背景完好无损。蓝色表示1倍的overdraw。像素被绘制了两次。大的蓝色区域是可以接受的(如果整个窗口都是蓝色的,你可以去掉一层。)绿色表示2倍的overdraw。像素被绘制了三次。中等大小的绿地是可以接受的,但您应该尝试优化它们。浅红色表示overdraw3倍。像素被绘制了四次。小的浅红色区域是可以接受的。深红色表示overdraw4倍或更多。像素被绘制了5次或更多。这是错误的。修复它。`为了测试它,
我已经实现了可点击的Recyclerview项并设置了android:background="?selectableItemBackground"以获得点击效果,但是在检查代码时我发现了这个lint问题。Lint警告:可能overdraw:根元素绘制背景?selectableItemBackground,主题也绘制背景有解决此警告的想法吗?我的xml://... 最佳答案 默认情况下,主题具有指定的android:windowBackground属性,顾名思义,该属性指定启动Activity的窗口背景。此lint警告仅告诉您以下内容
使用gradle构建时,lint报告报告以下内容:Overdraw:Paintingregionsmorethanonce../../src/main/res/layout/include_divider.xml:4:Possibleoverdraw:Rootelementpaintsbackground@color/graywithathemethatalsopaintsabackground(inferredthemeis@style/AppTheme)1Viewxmlns="http://schemas.android.com/apk/res/android"2android:l
我尝试在我的应用程序上运行“调试GPU过度绘制”工具以减少过度绘制量。如下图所示,cardview就像一个额外的overdraw层。我没有为我的其他布局提供任何额外的背景颜色或图像。有办法解决吗? 最佳答案 您的LinearLayout和RelativeLayout都有一个背景集#fff。删除它们,看看是否有帮助。 关于android-移除CardViewoverdraw,我们在StackOverflow上找到一个类似的问题: https://stackove
基于RomainGuy的博客文章AndroidPerformanceCaseStudy在谈到overdraw时,他是这样说的:Removingthewindowbackground:thebackgrounddefinedinyourthemeisusedbythesystemtocreatepreviewwindowswhenlaunchingyourapplication.Neversetittonullunlessyourapplicationistransparent.Instead,setittothecolor/imageyouwantorgetridoffromonCre
在我的项目上运行AndroidLint时,我遇到了这个警告Possibleoverdraw:Rootelementpaintsbackground@drawable/mainwithathemethatalsopaintsabackground推断的主题是@android:style/Theme.NoTitleBar.Fullscreen有人可以向我解释为什么会出现这种情况以及如何删除它吗??我的xml:list中定义主题的部分 最佳答案 要优化您的应用性能(避免过度绘制),您可以执行以下操作:在res/values/styles.