现在的位置: 首页 > 综合 > 正文

背景图片渲染时有色块怎么办

2016年08月28日 ⁄ 综合 ⁄ 共 537字 ⁄ 字号 评论关闭

有时候你可能发现设置了背景图片之后, 在屏幕上的效果不太理想, 主要表现为颜色过渡不平滑, 色块现象比较严重. 主要原因是因为WiEngine底层设置OpenGL的缓冲区格式缺省是RGB565, 这个设置可以提高速度, 但是很显然颜色精度会受到影响. 这个时候可以用setDither(true)来解决,
setDither是TextureNode的方法.

Sprite bg
=
...
;

bg.setDither(true);

Dither的意思是抖动, 是一种用有限颜色模拟其它颜色的方式, 比如将白色和红色均匀的混合, 你会看到粉红色. 通过这种方式, 可以消除背景上的色块, 使颜色过渡平滑. 这种方式当然会损失一点性能, 但是基本也就是背景用一下, 问题不大.

WYGLSurfaceView支持透明背景, 这种模式下OpenGL使用RGBA8888格式的缓冲区, 所以不需要抖动背景图片也将显示的很好. 使用透明背景的WYGLSurfaceView很简单:

WYGLSurfaceView v
=
new
WYGLSurfaceView
(this,
true);
// 第二个参数传true表示背景透明

setContentView(v);

游戏需要用透明背景的不多, 一般透明背景WYGLSurfaceView可以用在增强现实的应用中

抱歉!评论已关闭.