gpt4 book ai didi

java - ShapeRenderer 使用 LibGDX 生成像素化形状

转载 作者:行者123 更新时间:2023-12-02 04:12:21 24 4
gpt4 key购买 nike

当我使用 ShapeRenderer 时,它总是出现像素化。但如果我在 Photoshop 中以相同的尺寸绘制形状,它会非常平滑且干净。

我的方法如下:

package com.me.actors;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
import com.badlogic.gdx.scenes.scene2d.Actor;

public class bub_actors extends Actor {
private ShapeRenderer shapes;
private Texture text;
private Sprite sprite;

public bub_actors(){
shapes = new ShapeRenderer();
text = new Texture(Gdx.files.internal("data/circle.png"));
sprite = new Sprite();
sprite.setRegion(text);
}
@Override
public void draw(SpriteBatch batch, float parentAlpha) {
batch.draw(sprite, 200, 200, 64, 64);
shapes.begin(ShapeType.FilledCircle);
shapes.filledCircle(50, 50, 32);
shapes.setColor(Color.BLACK);
shapes.end();
}
}

这是输出的图像:

enter image description here

关于为什么会发生这种情况有什么想法吗?是否可以使 ShapeRenderer 看起来像图像(这样我就不必创建不同颜色圆圈的 SpriteBatch...)。

最佳答案

差异是anti-aliasing Photoshop 将其应用于它生成的图像。如果放大两个圆的边缘,您会看到抗锯齿圆的边缘周围有一些半黑色像素,其中 ShapeRenderer 生成的圆仅显示完全打开或关闭的像素.

anti-aliased image

aliased image

Libgdx ShapeRenderer 旨在提供一种快速、简单的方式来在屏幕上调试形状,它不支持抗锯齿。获得一致的抗锯齿渲染的最简单方法是使用纹理。 (也可以使用 OpenGL 着色器。)

也就是说,您不必创建不同的 Sprite 来渲染不同颜色的圆圈。只需使用一个透明背景的白色圆圈,然后 render it with a color 。 (假设您想要各种纯色圆圈)。

关于java - ShapeRenderer 使用 LibGDX 生成像素化形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24345754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com