[英]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.