2014-05-07 31 views
1

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

使用在Box2d世界中移动的网格(网格是块的映射),在LWJGL中,我可以简单地将矩阵转换为网格的位置,然后旋转,然后绘制所有的只需在偏移位置打孔即可(避免使用重度触发)。我一直在使用LibGDX,但我找不到替代glTranslatef或glRotate的方法。

我只是想知道(或被指出)一个替换函数或类,我可以用它来渲染与纹理正方形。像ShapeRenderer,但允许纹理(它已翻译/旋转)。

任何帮助,将不胜感激。

+0

使用'SpriteBatch'和'OrthographicCamera'再转换成相机和做'batch.setProjectionMatrix(camera.combined)' – noone

回答

0

我想你会遇到OpenGL1.1-> OpenGL ES 2.0兼容性问题,而不是LWJGL/LibGDX兼容性问题。矩阵堆栈在OpenGL ES 2.0中不推荐使用,所以glRotate,glTranslate等都不是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

+0

是SpriteBatch呈现大量的正确方法?按1000块的顺序排列。 – Newhb

+0

SpriteBatch在每个渲染器上动态构建顶点列表(基本上每个“draw”调用)。为列表分配的底层内存得到了重用,所以您最终会重新复制1000次浮动内容。所以你可以更有效率(如果你可以直接使用共享浮点数组来构造对象),但是如果没有度量它的价值就很难说了。 SpriteBatch绝对能够很好地批量OpenGL调用(这通常是主要的成本)。 –