据我所知,您可以使用Gdx.graphics.getDensity()获得屏幕大小和密度,因此您可以为例如1x、1.5x等加载正确的纹理。
但是3D模型附带的纹理又如何呢?例如,纹理仅适用于最大的1280x800px,而我的android则有dpi 3x。
我不想太多地缩放它,因为它会导致图像变得太模糊/褪色/不尖锐,谁知道解决方案?
编辑:让我详细解释一下
所以在我看来,解决方法是为240 don,320 don,480 don等制作一些纹理图谱,问题是我不知道如何替换从一开始就已经与模型集成的纹理地图集?因此,当缩放时,纹理地图集会自动被更高的地图集所取代。谢谢
发布于 2019-11-15 09:16:42
通常在3D图形中,相机或模型是可移动的。没有一个固定的最佳分辨率的纹理,因为相机可能是非常近,非常远或观察纹理表面的一个角度。
图形API提供的解决方案是纹理筛选的设置。在放大(其中一个纹理占用超过一个屏幕像素),你可以做线性滤波软边或点滤波硬边。缩小更复杂,你可以进行线性或点滤波,但你也可以有mipmap,这是一个预先计算的链,连续半个版本的图像,通常一直到1x1。您可以设置纹理过滤以选择最近的mipmap,混合之间的mipmap,或使用各向异性过滤,以更好的锐度在浏览角度。一般来说,线性滤波放大,全mipmap链与各向异性滤波的缩小产生非常好的质量和足够好的性能,以成为一个良好的默认选择。
所以,你不会为你的模型给GPU一个单一的纹理,你会给它一个纹理链,让GPU担心如何对该链进行采样,从而给出正确的模糊/锐度。为了性能和与mipmap的兼容性,通常使用两种纹理的功率(例如1024x1024而不是1280x800)是一个好主意。
所以,只要制作一个1024x1024或2048x2048纹理与mipmap和适当的过滤设置,然后使用它在每一个设备上,不管它的分辨率,然后质量排序。
如果您特别担心内存的使用或加载时间,那么就有理由减少低分辨率设备上的纹理大小(基本上,对于低分辨率设备有一半分辨率的第二个资产,或者在加载低分辨率设备时跳过最高分辨率的mip ),但我认为这在现阶段可能是一个过早的优化。
https://stackoverflow.com/questions/58869483
复制相似问题