gpt4 book ai didi

libgdx - 在 libgdx 中移动网格的位置

转载 作者:行者123 更新时间:2023-12-02 05:08:23 25 4
gpt4 key购买 nike

我有一个带有一些多边形 (shapeRenderer) 的世界,并且希望有一个箭头在用户改变他的 GPS 位置时移动。我以为我可以用网格来做,但我没有找到任何选项来将网格移动到另一个位置。

Mesh mesh = new Mesh(true, 6, 0, 
new VertexAttribute(Usage.Position, 2, "a_position")
);
mesh.setVertices(new float[] { -0.3f, -0.3f,
0 , 0,
0f , 0.7f,
0 , 0,
0.3f, -0.3f,
0f , 0.7f });
mesh.render(GL10.GL_TRIANGLE_STRIP, 0, 6);

是否有更改整个网格位置的选项?或者我可以获取所有顶点以创建具有新位置的新网格吗?

最佳答案

(至少)有几种方法可以“移动”网格。 Libgdx 对此没有具体支持,它与任何 OpenGL 应用程序具有的选项相同:

  1. 改变顶点
  2. 使用翻译矩阵
  3. 将网格渲染为纹理并四处移动纹理

更改顶点,您必须跟踪float[] 并在您想要“移动”顶点时改变它(或重新创建它)网。您可以使用新数据再次调用 setVertices

对于翻译矩阵方法,请参阅How do I rotate or translate individual object instances in OPENGL?但是,请注意,这在最近的 OpenGL API 中大多已被弃用。 (不过,我并不完全清楚他们用什么替换了它:我认为你应该自己做矩阵数学,这基本上是选项 #1。)

对于渲染到纹理选项,使用Libgdx FrameBuffer object ,渲染它,然后使用 Libgdx Sprite移动/渲染该纹理。请注意,Sprite 实现只是建立在一个简单的四边形顶点上,实际上是 doing option #1。在屏幕上移动 Sprite ,所以只有当你的网格非常复杂并且有很多顶点时,这个选项才有意义。

嗯...现在我已经写完了,看起来所有三个都归结为选项 1:您应该自己跟踪网格顶点中的实际位置。

关于libgdx - 在 libgdx 中移动网格的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15905565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com