所以我有一个FillViewport,我想绘制一些文本来匹配在屏幕上移动的其他一些对象的位置。当我尝试在与其他对象完全相同的位置绘制文本内部时,根本没有任何内容。我知道字体本身是有效的,因为我可以在单独的HUD ScreenViewport上绘制没有问题,但是当我尝试在FillViewport上绘制时,我什么也得不到。我正在做的事情有什么问题吗?
public class MyScreen implements Screen{
SpriteBatch batch;
ShapeRenderer renderer;
FillViewport viewport;
ScreenViewport hudViewport
@Override
public void show(){
font = new BitmapFont();
font.getData().setScale(1);
font.getRegion().getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
font.setColor(Color.BLACK);
spriteBatch = new SpriteBatch();
renderer = new ShapeRenderer();
renderer.setAutoShapeType(true);
viewport = new FillViewport(Constants.WORLD_WIDTH, Constants.WORLD_HEIGHT);
hudViewport = new ScreenViewport();
}
public void render(float delta){
viewport.apply(true);
Gdx.gl.glClearColor(Constants.BACKGROUND_COLOR.r, Constants.BACKGROUND_COLOR.g, Constants.BACKGROUND_COLOR.b, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
spriteBatch.setProjectionMatrix(viewport.getCamera().combined);
renderer.setProjectionMatrix(viewport.getCamera().combined);
spriteBatch.begin();
renderer.begin();
renderer.set(ShapeRenderer.ShapeType.Filled);
renderer.setColor(Color.BLUE);
renderer.circle(renderer.circle(Constants.WORLD_WIDTH / 2, Constants.WORLD_HEIGHT / 2, radius, 40); //this works
font.draw(spriteBatch, "TEST", Constants.WORLD_WIDTH / 2, Constants.WORLD_HEIGHT / 2); //this doesn't
spriteBatch.end();
renderer.end();
hudViewport.apply();
spriteBatch.setProjectionMatrix(hudViewport.getCamera().combined);
spriteBatch.begin();
font.draw(spriteBatch, "TEST", hudViewport.getScreenWidth() - 100, hudViewport.getScreenHeight() - 10); //this works
spriteBatch.end();
}