我正在用libGDX编写我的第一个项目,我正在尝试在背景上绘制一个带有不透明边框的透明圆圈。 它在android和桌面项目中按需工作。但是,html项目不会渲染圆的边框。
圆圈是使用像素图创建的纹理。由于没有可能为drawCircle方法设置strokewidth(为什么没有?;请参阅http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/Pixmap.html#drawCircle-int-int-int-),我将边框绘制为fillcircle,并在其上面添加另一个圆圈:
创建纹理
Pixmap pixmap = new Pixmap(radius * 2 + 1, radius * 2 + 1, Format.RGBA8888);
Pixmap.setBlending(Blending.None);
pixmap.setColor(new Color(1,1,1,1));
pixmap.fillCircle(radius, radius, radius);
pixmap.setColor(new Color(0, 0, 0, 0.6f);
pixmap.fillCircle(radius, radius, radius - borderWidth);
texture = new Texture(pixmap);
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
pixmap.dispose();
绘制
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT (Gdx.graphics.getBufferFormat().coverageSampling ? GL20.GL_COVERAGE_BUFFER_BIT_NV : 0));
// tell the camera to update its matrices.
camera.update();
game.spriteBatch.setProjectionMatrix(camera.combined);
// begin the drawing process
game.spriteBatch.begin();
drawBackground();
//circle gets drawn here
game.spriteBatch.draw(texture, 50, 50);
//end drawing process
game.spriteBatch.end();
有什么想法吗?
编辑:在Ubuntu 14.04上测试Chrome(35.0.1916.153)和Firefox(30.0)。任何人都可以重现这个问题吗?
答案 0 :(得分:0)
您需要在绘制圆圈之前禁用混合:
pixmap.setBlending(Pixmap.Blending.None);
pixmap.fillCircle(radius, radius, radius);