我正在尝试为剪裁纹理创建遮罩。用户在屏幕上移动手指,并且他将在手指面具上创建。我的问题是,在用户长时间移动屏幕和手指上后,屏幕开始创建,我已经排成一行
PolygonRegion polyReg = new PolygonRegion(textRegion, coord);
其中coord它浮动数组和textRegion它对象TextureRegion与纹理需要绘制。用户长时间在屏幕上移动时会出现问题。我第一次认为PolygonRegion无法解决很多问题,但是在我理解之后它没有计算点问题(有时我有160点的anr,有时候我没有1000点的anr)。也许有人会采取同样的问题,并可以说出它可能是什么 代码:
if(maskBufferer != null){
maskBufferer.dispose();
}
maskBufferer = new FrameBuffer(Pixmap.Format.RGBA8888, width, height, true);
mask = createMaskImageMask(aspectRatioCrop, maskBufferer);
...
private Texture createMaskImageMask(boolean aspectRatioCrop, FrameBuffer maskBufferer) {
maskBufferer.begin();
Gdx.gl.glClearColor(COLOR_FOR_MASK, COLOR_FOR_MASK, COLOR_FOR_MASK, ALPHA_FOR_MASK);
Gdx.graphics.getGL20().glClear(GL20.GL_COLOR_BUFFER_BIT);
float[] coord = null;
coord = mCoodrinateArray.getCoodrinatesInScreenSize();
mCoodrinateArray.clean();
PolygonRegion polyReg = new PolygonRegion( new TextureRegion(new Texture(Gdx.files.internal(texturePolygon)) ),
coord);
PolygonSprite poly = new PolygonSprite(polyReg);
PolygonSpriteBatch polyBatch = new PolygonSpriteBatch();
polyBatch.begin();
poly.draw(polyBatch);
polyBatch.end();
maskBufferer.end();
texture.dispose();
polyBatch.dispose();
return maskBufferer.getColorBufferTexture();
}
在onMove代码中:
Vector3 vec = MathUtils.toGlFromScreenV3(detector.getCurrEvent().getX(), detector.getCurrEvent().getY(), mWidth, mHeight);
mCoodrinateArray.addCoordinate(vi.x, vi.y);
答案 0 :(得分:1)
我遇到了同样的问题。这是LibGDX旧版本中的一个错误。解决方案是简单更新libGDX,并阅读doc。因为多边形的逻辑已经改变了。