繁体   English   中英

从视口中抽出libGDX字体

[英]libGDX font being drawn out of the viewport

我在屏幕上绘制一些文本时遇到问题,我发现根据视口大小,尽管将坐标计算为屏幕中心,但文本可能会脱离显示。 这是代码,它是一个稍微修改过的项目,默认情况下由libgdxgenerator创建:

package net.iberdroid.libgdxtestfonts;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.utils.viewport.FitViewport;
import com.badlogic.gdx.utils.viewport.Viewport;

public class LibGdxTestFonts extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;
    BitmapFont defaultFont;
    private OrthographicCamera camera;
    private Viewport viewport;
    private float textY;
    private float textX;

    @Override
    public void create() {
        camera = new OrthographicCamera();
        viewport = new FitViewport(
                640,
                480,
                camera);
        camera.setToOrtho(false);
        batch = new SpriteBatch();
        img = new Texture("badlogic.jpg");
        defaultFont = new BitmapFont();
        textX = viewport.getWorldWidth() / 2;
        textY = viewport.getWorldHeight() / 2;
    }

    @Override
    public void render() {
        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        batch.setProjectionMatrix(camera.combined);
        defaultFont.setColor(Color.WHITE);
        Gdx.app.log("render", String.format("TextX: %f TextY: %f", textX, textY));
        defaultFont.draw(batch, "HELLO WORLD!", textX, textY);
        batch.end();
    }

    @Override
    public void dispose() {
        batch.dispose();
        img.dispose();
    }
}

据我了解,那应该画一个你好世界! 文本从屏幕中心开始。 它实际上是以视口大小来实现的。 现在,如果您尝试使用更大的视口,让我们说800x600,文本将移动到右侧和顶部,如果尝试使用更高的值,它将成为文本将通过屏幕边界移出的点。右上角。

同样的情况发生在相反的方向。 您尝试的视口较小,距离中心越远,越接近左下角,文本将出现,直到它最终走出界限。

所以要么我在这里没有掌握一些东西,要么BitMap.draw方法似乎忽略了视口大小并使用了其他我无法弄清楚的东西。

如果其他人这样做,请告诉我。

非常感谢提前!

PS我也尝试过使用Hiero生成的字体并且遇到了同样的问题。

添加这个似乎解决了位置的问题,虽然我仍然有规模问题,但这是一个不同的问题。

@Override public void resize (int width, int height) {
    viewport.update(width, height, true);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM