【发布时间】:2017-05-17 12:27:23
【问题描述】:
我对 LibGDX 有疑问。我正在尝试创建一个应用程序,为了便于使用,我想以固定分辨率 (1920x1080) 绘制所有内容。
为此,我正在尝试创建一个FitViewport 和一个OrthographicCamera,以便视口始终很好地适应屏幕尺寸,并且所有内容都会自动缩放。
在我的Screen 类中,我创建了这样一个视口和一个相机:
AbstractScreen() {
camera = new OrthographicCamera(Constants.VIRTUAL_WIDTH, Constants.VIRTUAL_HEIGHT);
viewport = new FitViewport(Constants.VIRTUAL_WIDTH, Constants.VIRTUAL_HEIGHT, camera);
}
(其中VIRTUAL_WIDTH 是 1920,VIRTUAL_HEIGHT 是 1080)
现在,当我尝试渲染 1920x1080 像素的图像时,只绘制了该图像的三分之一!
这是应该绘制的截图:screenshot
这是应该完全绘制的图像:image
public abstract class AbstractScreen implements Screen {
private Viewport viewport;
private OrthographicCamera camera;
protected SpriteBatch spriteBatch;
AbstractScreen() {
camera = new OrthographicCamera(Constants.VIRTUAL_WIDTH, Constants.VIRTUAL_HEIGHT);
viewport = new FitViewport(Constants.VIRTUAL_WIDTH, Constants.VIRTUAL_HEIGHT, camera);
spriteBatch = new SpriteBatch();
}
@Override
public void show() {
viewport.apply();
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
spriteBatch.setProjectionMatrix(camera.combined);
}
@Override
public void resize(int width, int height) {
viewport.update(width, height);
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
}
}
这是实际的屏幕实现:
class LoadingScreen extends AbstractScreen {
private SpriteBatch spriteBatch;
private Texture texture;
@Override
public void show() {
super.show();
spriteBatch = new SpriteBatch();
texture = new Texture("textures/test.png");
}
@Override
public void render(float delta) {
super.render(delta);
spriteBatch.begin();
spriteBatch.draw(texture, 0, 0);
spriteBatch.end();
}
}
谢谢!
【问题讨论】:
标签: java camera libgdx viewport scaling