Android 为什么我的精灵绘制不正确(libgdx)?
我在jpg文件中有一个1024x1024像素的图像。我试图用libgdx在屏幕上渲染它,这样它就可以填满整个屏幕。在这个阶段,我不关心图像保持其纵横比 在show()方法中,我解析jpg并初始化精灵,如下所示: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
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);
在大多数情况下,除非您想以不同的方式缩放对象mBatch.getProjectionMatrix().setToOrtho2D(0, 0, mWidth, mHeight);
祝你好运。据我所知,
mSprite.setSize(0.99f,0.99f)
设置精灵的像素宽度和高度,而setScale
缩放精灵的尺寸。将setSize
设置为更大的值(如256 x 256)应使您的精灵可见,将其设置为屏幕的分辨率应使其充满屏幕(如果一切顺利)。Tanmay Patil链接的示例非常好,如果您遇到问题,请查看这些示例。我不会在摄影机视口中使用物理屏幕大小/窗口大小。不同的设备有不同的尺寸,因此您需要以不同的方式计算位置。相反,我会使用一个固定的视口(比如说,160100
),这样您就可以用自己的单位(可能是米)而不是像素来计算。通过这样做,不管你的窗口有多大,你总是在x方向有160个单位,在y方向有100个单位。