ShapeRenderer 不绘制在运行时添加的新线
ShapeRenderer not drawing new lines added during runtime
TL;DR 我的 ShapeRenderer 会渲染线条,但只是有时。
我看过这些帖子:LibGDX: ShapeRenderer drawing... nothing, , and 。我遇到了同样的问题,但其中 none 有答案。我希望有人能发现我做错了什么
我有两个 类,一个 ApplicationListener A 和一个 GestureListener B。在 ApplicationListener A 中,我有一个全局 ArrayList<StarPair> pairs
,我在 A 的 create()
方法中实例化了它。 A 也有一个实例化的 ShapeRenderer draw
。在我的渲染循环中,我有以下代码:
// Render lines
cam.update();
draw.setProjectionMatrix(cam.combined);
draw.begin(ShapeRenderer.ShapeType.Line);
draw.setColor(Color.GREEN);
for(StarPair pair : pairs)
draw.line(pair.v1, pair.v2);
draw.end();
当我从 create()
方法中将随机星对对象放入列表时,效果很好。
我想要的行为是让列表开始为空,并让来自 B 的 touchDown()
事件添加一个 StarPair
对象到配对列表,然后由 draw
.
呈现
在 touchDown()
中,我创建了一个虚拟 StarPair newPair
并将其添加到 pairs
中:gazer.pairs.add(newPair);
,其中 gazer 是 A[ 的实例=48=] 具有 ShapeRenderer draw
。当我调试并在 render()
中放置一个条件断点时,我可以看到它被添加到 pairs
中,该断点仅在 gazer.pairs.add(newPair);
上的断点之后命中列表从大小 0 增长到大小 1。坐标在 v1 和 v2 中,正如我所期望的那样,但是新行永远不会在我的屏幕上开始呈现,尽管它们是列表中的 StarPair。
有人知道为什么吗?
我添加到列表末尾的 newPair
对象在每次调用 touchDown
时都被设置为 new StarPair()
,但它被声明为全局变量,所以我的 ApplicationListener
中的 pairs
列表正在获取对立即被清除的对象的引用 - 因此没有线条图。将 newPair
设置为 touchDown()
本地解决了这个问题。
TL;DR 我错了,不是 libGDX
TL;DR 我的 ShapeRenderer 会渲染线条,但只是有时。
我看过这些帖子:LibGDX: ShapeRenderer drawing... nothing,
我有两个 类,一个 ApplicationListener A 和一个 GestureListener B。在 ApplicationListener A 中,我有一个全局 ArrayList<StarPair> pairs
,我在 A 的 create()
方法中实例化了它。 A 也有一个实例化的 ShapeRenderer draw
。在我的渲染循环中,我有以下代码:
// Render lines
cam.update();
draw.setProjectionMatrix(cam.combined);
draw.begin(ShapeRenderer.ShapeType.Line);
draw.setColor(Color.GREEN);
for(StarPair pair : pairs)
draw.line(pair.v1, pair.v2);
draw.end();
当我从 create()
方法中将随机星对对象放入列表时,效果很好。
我想要的行为是让列表开始为空,并让来自 B 的 touchDown()
事件添加一个 StarPair
对象到配对列表,然后由 draw
.
在 touchDown()
中,我创建了一个虚拟 StarPair newPair
并将其添加到 pairs
中:gazer.pairs.add(newPair);
,其中 gazer 是 A[ 的实例=48=] 具有 ShapeRenderer draw
。当我调试并在 render()
中放置一个条件断点时,我可以看到它被添加到 pairs
中,该断点仅在 gazer.pairs.add(newPair);
上的断点之后命中列表从大小 0 增长到大小 1。坐标在 v1 和 v2 中,正如我所期望的那样,但是新行永远不会在我的屏幕上开始呈现,尽管它们是列表中的 StarPair。
有人知道为什么吗?
我添加到列表末尾的 newPair
对象在每次调用 touchDown
时都被设置为 new StarPair()
,但它被声明为全局变量,所以我的 ApplicationListener
中的 pairs
列表正在获取对立即被清除的对象的引用 - 因此没有线条图。将 newPair
设置为 touchDown()
本地解决了这个问题。
TL;DR 我错了,不是 libGDX