移动背景图像时获取空白(Andengine)

时间:2012-09-27 08:24:56

标签: android andengine

我正在使用andengine开发游戏..我使用AutoParallaxBackground移动背景图像..它工作正常..但我在图像之间有一个空行..没有图像问题

ie: autoParallaxBackground.addParallaxEntity(new ParallaxEntity(-20.0f, new Sprite(0, 0, this.bgTextureRegion1)));

如何解决此问题?

enter image description here

设备屏幕截图...左侧可见空白行

图片尺寸:720x480 相机尺寸:720x480 手机屏幕尺寸:320x240

3 个答案:

答案 0 :(得分:4)

问题是由应用双线性过滤时TextureAtlas的黑色背景渗透到图像引起的。解决方案是将最左边和最右边的1px线加倍,以使溢出具有正确的颜色。这是一个令人讨厌的修复,应该证明这确实是问题所在,但它加载背景所需的时间增加了三倍,因此它对生产代码没用。为背景创建TextureAtlas时,请执行以下操作:

BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.backgroundBitmapTexture, this, "background.png", 0, 0);
BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.backgroundBitmapTexture, this, "background.png", 2, 0);
this.backgroundTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.backgroundBitmapTexture, this, "background.png", 1, 0);

这样做是为了加载纹理三次,前两次左右移动一个px。第三个调用在两者之间创建实际纹理区域。

答案 1 :(得分:0)

双线性纹理选项正是问题所在。在GLES2.0中,您可以删除TextureOptions.BILINEAR,也可以将其更改为NEAREST_PREMULTIPLYALPHA。

答案 2 :(得分:0)

为你的背景精灵实现preDraw()方法并设置pGLState.enableDither();

new Sprite(0, CAMERA_HIGHT,
                    this.mParallaxLayerBack, vertexBufferObjectManager) {

                @Override
                protected void preDraw(GLState pGLState, Camera pCamera) {

                    super.preDraw(pGLState, pCamera);
                    pGLState.enableDither();
                }

            }