我在让图像填满整个屏幕而不伸展自己时遇到了问题。目前我有一个正交相机设置,但问题是屏幕中间的图像显示的原点(0,0)。我怎样才能做到这一点?这是我的代码。
public class GameScreen implements Screen {
SlingshotSteve game;
public void Menu(SlingshotSteve game){
this.game = game;
}
OrthographicCamera camera;
SpriteBatch batch;
TextureRegion backgroundTexture;
Texture texture;
GameScreen(final SlingshotSteve gam) {
this.game = gam;
camera = new OrthographicCamera(800, 480);
batch = new SpriteBatch();
Texture texture = new Texture(Gdx.files.internal("background.jpg"));
backgroundTexture = new TextureRegion(texture, 0, 0, 500, 500);
}
public void render(float delta) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(backgroundTexture, 0, 0, SlingshotSteve.WIDTH, SlingshotSteve.HEIGHT);
batch.end();
}
@Override
public void dispose() {
batch.dispose();
texture.dispose();
}
答案 0 :(得分:0)
您的正射相机是如何实施的?听起来你可能对“像素完美”变换感兴趣,它允许屏幕坐标直接与世界坐标相关联。您可以使用以下参数来实现此转换。
final float lOrthoLeft = 0;
final float lOrthoRight = pScreenHeight;
final float lOrthoTop = 0;
final float lOrthoBottom = pScreenWidth;
final float lOrthoNear = Float.MIN_VALUE;
final float lOrthoFar = Float.MAX_VALUE;
在这方面,您的正投影投影的lOrthoLeft
,lOrthoRight
,lOrthoTop
和lOrthoBottom
值可能是(-Width/2)
,{{ 1}},(+Width/2)
,(-Height/2)
(或某些变体),以便将世界的原点定位在屏幕的中心。
但是,这也与libgdx如何呈现到屏幕有关。 OpenGL ES是libgdx引擎盖下的硬件加速图形API,它使用一个特殊的坐标系统,其中屏幕的中心用作原点。您会发现这些资源对于了解如何在这些域中工作非常有用。