我正在使用andengine开发游戏..我使用AutoParallaxBackground移动背景图像..它工作正常..但我在图像之间有一个空行..没有图像问题
ie: autoParallaxBackground.addParallaxEntity(new ParallaxEntity(-20.0f, new Sprite(0, 0, this.bgTextureRegion1)));
如何解决此问题?
设备屏幕截图...左侧可见空白行
图片尺寸:720x480 相机尺寸:720x480 手机屏幕尺寸:320x240
答案 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();
}
}