【发布时间】:2013-05-16 20:43:59
【问题描述】:
我有这行: 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 的图像
我真的不知道如何解决,而且谷歌也不是特别有帮助。 谢谢!
【问题讨论】:
-
OpenGL docs "启用线条抗锯齿时,并非所有宽度都可以支持。如果请求不支持的宽度,则使用最接近的支持宽度。"
-
Libgdx 是大多数操作系统上的一个 openGL 包装器(我认为有一两个不是...可能是错的)好吧,很酷,你知道我将如何使用它libgdx?我没有在 Gdx.gl10 下看到任何东西,这是大多数类似的东西,谷歌没有向我展示任何东西,除了 android 启动器中的一些东西(这些屏幕截图来自桌面),我没有甚至不知道这是否可行..
-
不,不幸的是我没有,只是想指出文档描述了您所看到的行为,这是出于某种原因。你可以画一个矩形,它本质上是一条具有给定宽度的线。
-
是的,但它是旋转的。显然我可以使用棕褐色来旋转它,但是,我仍然喜欢只使用一条线的想法。我们会看看是否有人可以帮助我,否则,我可能不得不旋转一个矩形。无论如何,谢谢!