Android 为什么我的精灵绘制不正确(libgdx)?

Android 为什么我的精灵绘制不正确(libgdx)?,android,libgdx,sprite,Android,Libgdx,Sprite,我在jpg文件中有一个1024x1024像素的图像。我试图用libgdx在屏幕上渲染它,这样它就可以填满整个屏幕。在这个阶段,我不关心图像保持其纵横比 在show()方法中,我解析jpg并初始化精灵,如下所示: mWidth = Gdx.graphics.getWidth(); mHeight = Gdx.graphics.getHeight(); mCamera = new OrthographicCamera(1, mHeight/mWidth); mBatch = new SpriteB

我在jpg文件中有一个1024x1024像素的图像。我试图用libgdx在屏幕上渲染它,这样它就可以填满整个屏幕。在这个阶段,我不关心图像保持其纵横比

在show()方法中,我解析jpg并初始化精灵,如下所示:

mWidth = Gdx.graphics.getWidth();
mHeight = Gdx.graphics.getHeight();

mCamera = new OrthographicCamera(1, mHeight/mWidth);
mBatch = new SpriteBatch();

mTexture = new Texture(Gdx.files.internal("my jpg file"));

mTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear);

TextureRegion region = new TextureRegion(mTexture);

mSprite = new Sprite(region);
mSprite.setSize(0.99f, 0.99f);
mSprite.setOrigin(mSprite.getWidth()/2, mSprite.getHeight()/2);
mSprite.setPosition(-mSprite.getWidth()/2, -mSprite.getHeight()/2);
在render()方法中,我这样画精灵

Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

mBatch.setProjectionMatrix(mCamera.combined);
mBatch.begin();
mSprite.draw(mBatch);
mBatch.end();
但实际渲染的只是一个空白的白色屏幕。我做错了什么

  • 你应该使用

    mCamera = new OrthographicCamera(mWidth, mHeight);
    
    代替

    mCamera = new OrthographicCamera(1, mHeight/mWidth);
    
    在大多数情况下,除非您想以不同的方式缩放对象

  • 检查您的代码是否已实际找到并成功读取该文件。如果没有,请检查完整路径、文件扩展名、中间空格等

  • 在resize方法中,尝试添加以下内容

    mBatch.getProjectionMatrix().setToOrtho2D(0, 0, mWidth, mHeight);
    
  • 如果它在那时还不起作用,我建议您在使用setupui创建新项目时,返回到正在绘制的工作libgdx徽标精灵。从那里慢慢改变

  • 作为参考,请使用


    祝你好运。

    据我所知,
    mSprite.setSize(0.99f,0.99f)
    设置精灵的像素宽度和高度,而
    setScale
    缩放精灵的尺寸。将
    setSize
    设置为更大的值(如256 x 256)应使您的精灵可见,将其设置为屏幕的分辨率应使其充满屏幕(如果一切顺利)。Tanmay Patil链接的示例非常好,如果您遇到问题,请查看这些示例。

    我不会在摄影机视口中使用物理屏幕大小/窗口大小。不同的设备有不同的尺寸,因此您需要以不同的方式计算位置。相反,我会使用一个固定的视口(比如说,
    160100
    ),这样您就可以用自己的单位(可能是米)而不是像素来计算。通过这样做,不管你的窗口有多大,你总是在x方向有160个单位,在y方向有100个单位。