为什么我的精灵没有被正确绘制(libgdx)?

时间:2014-03-17 03:28:41

标签: android libgdx sprite

我在jpg文件中有一个1024x1024像素的图像。我试图用libgdx在屏幕上渲染它,使其填满整个屏幕。在这个阶段,我并不关心保留其宽高比的图像。

在我的show()方法中,我解析了jpg并初始化了sprite:

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();

但实际呈现的是一个空白的白色屏幕。我做错了什么?

2 个答案:

答案 0 :(得分:1)

  1. 您应该使用

    mCamera = new OrthographicCamera(mWidth, mHeight);
    

    代替

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

    在大多数情况下,除非你想以不同的方式扩展事物。

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

  3. 在调整大小方法中,请尝试添加以下

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

  5. 供参考,请使用https://code.google.com/p/libgdx-users/wiki/Sprites

    祝你好运。

答案 1 :(得分:1)

据我所知,mSprite.setSize(0.99f, 0.99f);设置精灵的像素宽度和高度,而setScale缩放精灵的尺寸。将setSize设置为更大的内容(例如256 x 256)应该可以使您的精灵可见,并将其设置为屏幕的分辨率,如果一切顺利,应使其填满屏幕。 Tanmay Patil联系的例子非常好,如果你遇到麻烦,请查看它们。