- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前在绘制和缩放 Sprite 时遇到问题。
我正在从纹理图集中加载我的资源,我使用 LibGDX 纹理打包器 gui 工具将其打包没有问题。我的纹理图集图像目前看起来像这样。
这些图像应该是按钮,但正如您所看到的,图像非常小,因此当加载 Sprite 时,它们会加载一个例如 34x16 像素的 Sprite 。当我在 1920x1080 的 Canvas 上渲染这些按钮时,它们太小了。我使用 sprite.scale(int scale) 来缩放 Sprite ,但是当我缩放它们时,它们看起来很模糊。我希望发生的是,当它们缩放时,每个像素都按比例缩放,保持按钮上的像素化效果,而不是从非常小的纹理中调整大小的模糊图像。我目前使用 sprite.render(SpriteBatch batch) 渲染 Sprite 。使用 atlas.createSprite(String name) 加载 Sprite 后,这是渲染 Sprite 的正确方法吗?我对使用 Sprite 和从纹理图集中加载纹理不熟悉,所以我想知道这是否是正确的做法。
此外,当我初始化游戏时,我从TextureAtlas加载许多不同的Sprite
对象。每个 Sprite 都拥有一个代表游戏对象的纹理,但据我了解,您使用 sprite.render(SpriteBatch batch) 渲染 Sprite ,因此我只能使用从TextureAtlas
对于一个游戏对象,因为我还必须设置 Sprite 的比例和位置,因为它代表游戏对象。我习惯于加载 Texture
,然后在给定位置使用 batch.render()
渲染此纹理,但我不知道如果我这样做怎么可能我正在使用 Sprite 。即使我使用batch.render(Sprite, x, y),我也无法正确缩放 Sprite ,因为正如我之前提到的,我想在缩放 Sprite 的同时保持像素化效果,即便如此,使用 Sprite.scale()
方法,这会缩放 Sprite 对象作为一个整体,从而无法多次使用 Sprite
的纹理许多游戏对象。
如有任何建议,我们将不胜感激。
我当前用于渲染/加载 Sprite 的代码如下:
从TextureAtlas加载:
public static TextureAtlas atlas = new TextureAtlas(Gdx.files.internal("data/texture/pack/output/pack.pack"));
public static Sprite sprite = atlas.createSprite("buttonUp");
sprite.setScale(10);
渲染 Sprite :GdxGame.WIDTH/HEIGHT 为 1920x1080。尽管桌面窗口是按比例缩小的。因此,所有内容都会呈现为 1920x1080 屏幕。
batch = new SpriteBatch();
camera = new OrthographicCamera(GdxGame.WIDTH, GdxGame.HEIGHT);
camera.position.set(GdxGame.WIDTH/2, GdxGame.HEIGHT/2, 0);
camera.setToOrtho(false, GdxGame.WIDTH, GdxGame.HEIGHT);
public void render(float delta){
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.combined);
batch.begin();
camera.update();
sprite.draw(batch);
batch.end();
}
经过进一步调查,我发现我可以使用 Sprite.set(Sprite sprite)
使 Sprite x
成为 Sprite y
的副本>,因此多次渲染每个 Sprite 。然而,这并没有解决缩放 Sprite 的问题。我必须进一步强调,当渲染缩放的 Sprite 时,缩放不是按像素完成的,这意味着它是模糊的。但是,在渲染 TextureRegion
时,如果宽度和高度大于原始纹理的宽度和高度,例如:batch.draw(TextureRegion, x, y, width, height)
,它会缩放每个像素,而不是模糊整个像素以尝试使其看起来更好。以下是我所说的模糊的图像:
请注意,尽管原始图像很小且像素化,但该 Sprite 是如何缩放为模糊的。
最佳答案
您在代码或纹理打包器中使用了哪些纹理过滤器设置?尝试“最近”过滤器。如果您将其设置为“线性”或类似的,它将始终采用 4 个纹理像素(纹素)并对它们进行插值以获得要绘制的像素的颜色。
这可能有助于消除模糊,但我不确定它是否会产生您想要的 8 位外观......
关于java - 来自TextureAtlas的LibGDX缩放和渲染 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22825033/
我正在重构我在 libgdx 中开发的小型 RPG。 我有一个关于如何正确使用纹理图集的一般性问题。我有大约 100 名 Actor 和大约 10 种 Sprite 。目前我不使用图集,但我想提高渲染
我是游戏开发的新手,想开发一款手机游戏。我正在尝试在 libgdx 中制作一个复杂的动画,它由近 300 张图像组成(每张 655∼∼∼1160,总大小为 42MB)。 textureAtlas 图像
我正在从扩展 libgdx 类游戏的主游戏类加载 Assets 。在该类的 create() 方法中,我调用了 Assets.loadAtlas(); 并调用了: public static void
这不可行吗? TextureAtlas atlas = new TextureAtlas(Gdx.files.internal("data/texture.png")); AtlasR
我正在尝试从 TextureAtlas 获取纹理区域,但作为纹理。 我试过: textureAtlas.findRegion("explosion").getTexture(); 但它返回整个纹理图集
我正在使用 libgdx 制作一个简单的游戏。我有一个 TextureAtlas,它有我正在尝试使用的 ninepatch: 图片保存为menu.9.png 我正在使用以下代码: Image bg =
我正在尝试制作一个带有简单动画的节点,因此我创建了一个动画,其中每个单独的帧都作为 .png 文件,我将它们全部放在一个文件夹中,并将其命名为 stoneanimation2.atlas 。 这是我试
我最初实现了直接从资源文件夹加载TextureAtlas,但是游戏变得非常滞后,因为我必须调用TextureAtlas的每个区域来获取动画中要使用的帧(libgdx表示使用TextureAtlas的f
从 Eclipse 运行我的应用程序时没有问题,但在桌面上导出和运行时,我的 TextureAtlas 中的所有图像都会出现故障,显示为黑色/灰色框,以及一些奇怪的东西,如 白色渐变框 和灯光覆盖。
在使用 libGDX 时,我注意到有时我绘制到屏幕上的纹理不会绘制到精确的像素,而是使用不同侧面的其他纹理的边缘的微小部分绘制(例如,这里是头发顶部的单行像素被渲染到玩家脚的下方)。 当我将游戏缩放到
我注意到我可以为一个 textureRegion 保留一个图集,尽管我可以多次绘制相同的区域作为 Sprite 。是否可以将所有 textureRegions 保留在一个场景中的一个 textureA
我正在尝试使用 LibGDX 创建一个简单的游戏。我正在尝试使用 9 Patch 图像作为菜单按钮的背景,但似乎忽略了图像的 9 Patch 质量。 我有两张图片,“active.9.png”和“re
stackoverflowers 和其他好人,经过两天的尝试,我有一个问题不知道如何解决:我有 libgdx 项目(我正在使用舞台和 Actor ,但现在这并不重要),我在评论中添加了所有无用的东西,
我正在尝试从单个纹理转变为对我的盒子使用纹理图集(它们都显示单个字母,用于类似拼字游戏的游戏)。我对此深信不疑,我找到的所有示例都是针对 2D Sprite 的。 如何使用来自 AtlasRegion
我有 2 个 AssetManager 实例:一个用于基本纹理,一个用于高质量纹理。基本纹理位于“android/assets”文件夹中,高质量纹理打包在 zip 文件中。此文件夹中的内容(文件名)是
我正在制作一款格斗游戏,所以我有巨大的角色 Sprite (300 像素 X 350 像素)和大量动画帧(每个角色约 150 帧),因此最大 2048 x 2048 纹理尺寸无法适应所有帧一个角色的动
我开始将我的 LIBGDX 应用程序移植到 IOS。我使用 libgdx 的 Xamarin studio 端口在 IOS 上运行我的应用程序。我移植成功,但应用程序无法在 Iphone 模拟器中加载
我们使用iOS 7 中新的SpriteKit 框架来开发小游戏。为了构建和分发我们游戏的新版本,我们使用构建和部署服务器,该服务器使用 Xcode5 的命令行工具。 当我们使用 Texture Atl
我是一名优秀的程序员,十分优秀!