Libgdx像素化GUI效果

时间:2014-04-03 22:52:57

标签: java user-interface libgdx scene2d

在LibGDX中,我目前正在尝试实现像素化GUI的效果,这意味着按钮是像素化的,就像8位主题一样。

当我制作我的GUI元素(例如TextButton)时,我使用的是较小的图像,比如说34x16像素,但我在像1920x1080这样的大分辨率上渲染它们。以高分辨率渲染这么小的图像的最佳方法是什么?

我的想法是使用stage.setViewport(WIDTH,HEIGHT),并将宽度和高度设置为按比例缩小的分辨率,因此gui元素不会那么大。这有效,但是当添加元素时出错了。 enter image description here

这是我的舞台/桌子,使用缩小的分辨率。我正在使用这样的表添加小部件:

    table.add(playButton);
    table.row();
    table.add(title);

但正如您所看到的,table.row()会产生一个太大的行,可能是一行适合更大的分辨率。有没有办法改变行所造成的差距?我原本认为差距为零,并且使用table.add().pad()你可以改变差距,但我没有做任何一个。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

Ninepatch

这是所有应用中的常见问题。为了克服这个问题,使用可以安全地重新调整大小的图像。他们被称为九个补丁。

关于在libgdx中使用它们,这是一个很好的Tutorial


距离字段字体

虽然你在这里没有提到它,但你也会发现字体大小(像素化字体)是一个问题。因为使用了Distance Field Fonts

希望这有帮助。

答案 1 :(得分:1)

我想说不要担心扩大它们并使虚拟分辨率更大。如果要在缩放时看到图像仍然像素化,请使用纹理滤镜。对于您的情况,您想使用最近的过滤器。像这样使用它:

yourTexture.setFilter(TextureFilter.Nearest, TextureFilter.Nearest);

其中yourTexture是您拥有所有位图和外观元素的纹理。如果您使用的是TexturePacker,那么您也可以在打包之前指定过滤器。或者只是打开.pack文件,在顶部你会看到过滤选项,并将它们编辑为最近的。