首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于分辨率的三维模型纹理变化

基于分辨率的三维模型纹理变化
EN

Stack Overflow用户
提问于 2019-11-15 02:26:24
回答 1查看 173关注 0票数 0

据我所知,您可以使用Gdx.graphics.getDensity()获得屏幕大小和密度,因此您可以为例如1x、1.5x等加载正确的纹理。

但是3D模型附带的纹理又如何呢?例如,纹理仅适用于最大的1280x800px,而我的android则有dpi 3x。

我不想太多地缩放它,因为它会导致图像变得太模糊/褪色/不尖锐,谁知道解决方案?

编辑:让我详细解释一下

  1. i有一个ModelInstance,纹理地图集(2048x2048px)。当游戏在4k屏幕上打开时,我几乎三次扩大了模型的规模,使模型变得模糊,这是有意义的,因为从240 far到640 far之间的差别很大。--

所以在我看来,解决方法是为240 don,320 don,480 don等制作一些纹理图谱,问题是我不知道如何替换从一开始就已经与模型集成的纹理地图集?因此,当缩放时,纹理地图集会自动被更高的地图集所取代。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-15 09:16:42

通常在3D图形中,相机或模型是可移动的。没有一个固定的最佳分辨率的纹理,因为相机可能是非常近,非常远或观察纹理表面的一个角度。

图形API提供的解决方案是纹理筛选的设置。在放大(其中一个纹理占用超过一个屏幕像素),你可以做线性滤波软边或点滤波硬边。缩小更复杂,你可以进行线性或点滤波,但你也可以有mipmap,这是一个预先计算的链,连续半个版本的图像,通常一直到1x1。您可以设置纹理过滤以选择最近的mipmap,混合之间的mipmap,或使用各向异性过滤,以更好的锐度在浏览角度。一般来说,线性滤波放大,全mipmap链与各向异性滤波的缩小产生非常好的质量和足够好的性能,以成为一个良好的默认选择。

所以,你不会为你的模型给GPU一个单一的纹理,你会给它一个纹理链,让GPU担心如何对该链进行采样,从而给出正确的模糊/锐度。为了性能和与mipmap的兼容性,通常使用两种纹理的功率(例如1024x1024而不是1280x800)是一个好主意。

所以,只要制作一个1024x1024或2048x2048纹理与mipmap和适当的过滤设置,然后使用它在每一个设备上,不管它的分辨率,然后质量排序。

如果您特别担心内存的使用或加载时间,那么就有理由减少低分辨率设备上的纹理大小(基本上,对于低分辨率设备有一半分辨率的第二个资产,或者在加载低分辨率设备时跳过最高分辨率的mip ),但我认为这在现阶段可能是一个过早的优化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58869483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档