【问题标题】:Porting LWJGL to LibGDX glTranslate replacement将 LWJGL 移植到 LibGDX glTranslate 替换
【发布时间】:2014-05-07 00:28:51
【问题描述】:

您好,我正在制作一款游戏,它的基本引擎是使用 GL11 在 LWJGL 中构建的。我正在考虑将其移植到 LibGDX,但我遇到了渲染问题。

游戏是 2D 自上而下的,使用在 Box2d 世界中移动的网格(网格是块的地图),在 LWJGL 中,我可以简单地将矩阵转换为网格的位置,旋转,然后绘制所有块通过简单地在偏移位置打孔(避免使用大量的触发器)。我一直在研究 LibGDX,但找不到替换 glTranslatef 或 glRotate 的方法。

我只是想知道(或被指向)一个替换函数或类,我可以用它来渲染带有纹理的正方形。类似于 ShapeRenderer 但允许纹理(它具有平移/旋转)。

任何帮助将不胜感激。

【问题讨论】:

  • 使用SpriteBatchOrthographicCamera 然后平移相机并执行batch.setProjectionMatrix(camera.combined)

标签: eclipse libgdx textures lwjgl translate


【解决方案1】:

我认为您遇到了 OpenGL1.1 -> OpenGL ES 2.0 兼容性问题,而不是 LWJGL/LibGDX 兼容性问题。矩阵堆栈在 OpenGL ES 2.0 中已被弃用,因此glRotateglTranslate 等都不是 2.0 之后的 OpenGL ES 的一部分。详情请见http://en.wikibooks.org/wiki/OpenGL_Programming/Migrating_from_1.x_to_2.x

无论如何,我认为至少有两种方法可以解决这个问题。

  1. 使用 Libgdx Matrix classes 进行矩阵操作。

  2. 如果您的目标是渲染带纹理的矩形,请查看Libgdx SpriteBatch。您将需要draw 变体之一,该变体需要您要使用的缩放/旋转参数。有关如何设置的概述,请参阅SpriteBatch wiki

【讨论】:

  • SpriteBatch 是渲染大量数据的正确方法吗?大约 1000 个块。
  • SpriteBatch 在每次渲染时动态构建顶点列表(基本上是每个draw 调用)。为列表分配的底层内存会被重用,所以你最终只会重新复制 1000 个浮点数。所以你可以更有效率(如果你可以构造你的对象以直接使用共享的浮点数组),但如果没有测量很难说它是否值得。 SpriteBatch 肯定会很好地批处理您的 OpenGL 调用(这通常是主要成本)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多