我有这一行: Gdx.gl10.glLineWidth(宽度); 现在,我打算画一条很粗的线,不幸的是,当我输入 1 或 5 等小值时,线显然很小。但是一旦我超过 10 之类的东西,它就不再变大了。在这些情况下,我传递的是直接值,因此,我的印象是 GL 有限制或类似的东西……我是对的吗?这是我的代码:
Gdx.gl.glClearColor(0,0,0,1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(cam.combined);
batch.begin();
batch.draw(bg,0,0,WIDTH,HEIGHT);
for(Spell a : spells){
a.draw(batch);
}
lc.draw(batch);
batch.end();
//((ppux+ppuy)/2f)*4
Gdx.gl10.glLineWidth(50);//average and then say 1/4 a unit)
renderer.setProjectionMatrix(cam.combined);
renderer.begin(ShapeType.Line);
lp.drawLines(renderer);
renderer.end();
batch.begin();
lp.draw(batch);
batch.end();
lp.drawLines(renderer) 调用以下(我只是调用设置颜色,然后画线):
renderer.setColor(1,1,1,1);
Elem a = elems.get(spellcombo.get(0));
Vector2 last = new Vector2(a.x(),a.y());
for(int i = 1; i < spellcombo.size(); i++){
a = elems.get(spellcombo.get(i));
Vector2 cur = new Vector2(a.x(),a.y());
renderer.line(last.x, last.y, cur.x, cur.y);
last = cur;
}
renderer.line(last.x,last.y,mx,my);
Gdx.gl.glEnable(GL10.GL_BLEND);
Gdx.gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
renderer.setColor(1, 0, 0, .2f);
for(Elem e : elems){
int id = elems.indexOf(e);
if(ComboManager.validSpell(spellcombo,id))
renderer.line(last.x,last.y,e.x(),e.y());
}
截图:
glLineWidth() 设置为 1 的图像
glLineWidth() 设置为 5 的图像
glLineWidth() 设置为 10 的图像
glLineWidth() 设置为 20 的图像
glLineWidth() 设置为 200 的图像
我真的不知道如何解决,谷歌也不是特别有用。 谢谢!
最佳答案
从 libgdx 1.0 开始,还有 ShapeRenderer's rectLine method可用的。看一个简单的例子。
ShapeRenderer shapeRenderer = new ShapeRenderer();
shapeRenderer.begin(ShapeType.Filled);
shapeRenderer.rectLine(x1, y1, x2, y2, width);
shapeRenderer.end();
这似乎是现在绘制粗线最简单的方法。
关于java - Libgdx gl10.glLineWidth(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16680908/