1,GPA连不上手机,是需要root还是其它问题???
问题起源:定位GPU问题时,需要细致到填充率,CPU到GPU的传输带宽问题(纹理带宽,framebuffer带宽问题等)
这里定位是否是纹理带宽问题时就需要在游戏运行时动态更改所有纹理的尺寸,目前似乎只有GPA有这个功能,或者自己写工具去HOOK到gles底层API实现。
2,Unity能否针对不同档次的机器采取不同的纹理压缩格式?比如低端机采用高压缩的ASTC12X12,而高端机采用ASTC4X4
似乎不行,一方面来说,低端机可能都不支持ASTC这种新的压缩格式。
在Quality设置中,有可以设置纹理分辨率的,比如标签为low的质量等级采用1/2图片分辨率。
如何动态设置质量等级:
using UnityEngine; public class Example : MonoBehaviour { void OnGUI() { string[] names = QualitySettings.names; GUILayout.BeginVertical(); for (int i = 0; i < names.Length; i++) { if (GUILayout.Button(names[i])) { QualitySettings.SetQualityLevel(i, true); } } GUILayout.EndVertical(); } }
3,垂直同步:
显示器与显卡:
双缓冲:前后缓冲,即frontbuffer,backbuffer
显卡-GPU,负责渲染图形数据到前缓冲,然后交换前后缓的指针,然后继续在前缓冲绘制,显示器从后缓冲取数据显示出来。
由于显示器显示画面的过程是一行一行的,当一屏画面画到一半时,后缓冲指针被换成了前缓冲指针时,显示器的一屏画面就有一半是前一帧的,一半是的下一帧的,就出现了画面撕裂。
画面撕裂,不管显示器的刷新率多高或多低都一样出现画面撕裂。
如何避免画面撕裂:在显示器完整的显示完一屏画面后,下一屏画面显示之前的这段时间内交换前后缓冲指针,这段时间就是vertical blanks,即垂直空白。
原文:https://www.cnblogs.com/timeObjserver/p/12497096.html