libGDX:分辨率较小时缩放纹理
libGDX: Scale Textures when smaller resolution
我阅读了一些关于视口的文章来解决不同分辨率的问题。但在每个示例中,他们使用的纹理尺寸都小于屏幕分辨率。但是,当我的纹理尺寸为 1920 x 1080 而我的屏幕仅为 800 x 400 时会发生什么?
是否有任何一种可以缩放纹理的视口?我没有找到任何关于这个问题的信息。
看起来你的意思是缩放而不是压缩。压缩是一种减小文件大小的技术,就像 .jpg
压缩未压缩的 .bmp
一样。所以如果你的意思是缩放那么它完全取决于你想要什么。如果您有一个 1920x1080 的纹理并希望它完全适合 800x400 的屏幕,则需要从 1920x1080 = 16x9
和 800x400 = 2:1 = 16:8
开始拉伸它。
要拉伸图像,您需要使用 StretchViewport
。您将使用要显示的世界尺寸创建视口。因此,在这种情况下,1920x1080 图像,或者可能是 16x9,并将该纹理与“世界单位”放在你的世界中。StretchViewport
将确保视口拉伸到你使用的任何大小。
如果您希望它尽可能适合但保持 16:9 的纵横比,那么您可以使用 FitViewport
。就像 StretchViewport
每个视口(ScreenViewport
除外)都需要提供世界单位,这是一个重要的概念。在您定义世界单位之前,世界单位不是米或像素。无论如何,FitViewport
还将确保每个设备都能看到您提供的尽可能多的世界,但您的资产不会 stretch/deform。相反,它会创建一个 "black" 栏,就像电视在宽高比不相等时所做的那样。
ScreenViewport
,默认只占用屏幕大小。因此,1920x1080 像素的屏幕将显示 1920x1080 世界单位,而 640x480 像素屏幕将显示 640x480 世界单位。因此,屏幕的分辨率越高,可见的世界就越多。屏幕像素代表的世界单位数量可以更改。
其他人有一个观点:FillViewport
就像 FitViewport
一样,它会保持纵横比但总是充满屏幕。因此有些部分可能不可见。出于这个原因,我想不出这个超过 FitViewport
的用途。还有 ExtentVieport
,介于 FitViewport
和 ScreenViewport
之间。
我阅读了一些关于视口的文章来解决不同分辨率的问题。但在每个示例中,他们使用的纹理尺寸都小于屏幕分辨率。但是,当我的纹理尺寸为 1920 x 1080 而我的屏幕仅为 800 x 400 时会发生什么? 是否有任何一种可以缩放纹理的视口?我没有找到任何关于这个问题的信息。
看起来你的意思是缩放而不是压缩。压缩是一种减小文件大小的技术,就像 .jpg
压缩未压缩的 .bmp
一样。所以如果你的意思是缩放那么它完全取决于你想要什么。如果您有一个 1920x1080 的纹理并希望它完全适合 800x400 的屏幕,则需要从 1920x1080 = 16x9
和 800x400 = 2:1 = 16:8
开始拉伸它。
要拉伸图像,您需要使用 StretchViewport
。您将使用要显示的世界尺寸创建视口。因此,在这种情况下,1920x1080 图像,或者可能是 16x9,并将该纹理与“世界单位”放在你的世界中。StretchViewport
将确保视口拉伸到你使用的任何大小。
如果您希望它尽可能适合但保持 16:9 的纵横比,那么您可以使用 FitViewport
。就像 StretchViewport
每个视口(ScreenViewport
除外)都需要提供世界单位,这是一个重要的概念。在您定义世界单位之前,世界单位不是米或像素。无论如何,FitViewport
还将确保每个设备都能看到您提供的尽可能多的世界,但您的资产不会 stretch/deform。相反,它会创建一个 "black" 栏,就像电视在宽高比不相等时所做的那样。
ScreenViewport
,默认只占用屏幕大小。因此,1920x1080 像素的屏幕将显示 1920x1080 世界单位,而 640x480 像素屏幕将显示 640x480 世界单位。因此,屏幕的分辨率越高,可见的世界就越多。屏幕像素代表的世界单位数量可以更改。
其他人有一个观点:FillViewport
就像 FitViewport
一样,它会保持纵横比但总是充满屏幕。因此有些部分可能不可见。出于这个原因,我想不出这个超过 FitViewport
的用途。还有 ExtentVieport
,介于 FitViewport
和 ScreenViewport
之间。