2014-05-07 30 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調用(這通常是主要的成本)。 –