我正在使用libgdx及其SpriteBatch类为Andoid开发2D动态壁纸.这是一块手表,所以我需要的只是从libgdx绘制多个纹理,将它们旋转到特定的角度.
我已经使用SpriteBatch类解决了这个问题,一切都很好.
但现在我需要在我的场景中添加放大镜效果.任务是以特定比例放大特定区域以模拟真实镜头.
我已经通过渲染到FrameBuffer,从FrameBuffer获取纹理区域,最后使用SpriteBatch使用自定义着色器绘制此区域来解决这个问题.
问题:在三星设备上(我试过Galaxy note N7000,在Galaxy Tab 10.1上),在放大区域的中心有一个小矩形,大约16x16px,放大率略有增加.对不起,我现在无法发布截图,因为我没有三星设备.在其他设备上一切正常,在HTC Vivid,Acer A500,谷歌Nexus One上尝试过.
我想,问题是如果在三星设备上的Mali GPU,但不知道,如何解决它.
我已经将这个问题中的片段着色器代码改编为SpriteBatch 使用OpenGL ES在运行时将鱼眼效果添加到图像中 这是它:
#ifdef GL_ES
#define LOWP lowp
precision mediump float;
#else
#define LOWP
#endif
varying LOWP vec4 v_color;
varying vec2 v_texCoords;
uniform sampler2D u_texture;
void main() {
vec2 m = vec2(0.622 , 0.4985); // lens center point, note that in live wallpaper center of texture is (0.5,0.5)
float lensSize = 0.045; //diameter of lens
float lensCut = 0.0342; //length of cut lines
vec2 d …
Run Code Online (Sandbox Code Playgroud)