簡體   English   中英

LibGDX-從大型TextureRegion加載TiledMap tileset

[英]LibGDX - Load a TiledMap tileset from a big TextureRegion

我目前正在使用LibGDX開發游戲,並且遇到以下情況:

  1. 游戲在每個級別使用TiledMap映射。 我創建了一個大圖塊集,並將其打包到〜1300x1300 PNG文件(非POT)。 瓷磚為128x128 +天溝。
  2. 使用OrthogonalTiledMapRenderer渲染場景。 實際上,這是對內置OrthogonalTiledMapRenderer的略微修改,它沒有將相機投影設置為SpriteBatch渲染器,從而導致每個循環額外沖洗:

     private class OrthogonalTiledMapRenderer2 extends OrthogonalTiledMapRenderer { public OrthogonalTiledMapRenderer2 (TiledMap map, float unitScale, Batch batch) { super(map, unitScale, batch); } @Override public void setView (OrthographicCamera camera) { //batch.setProjectionMatrix(camera.combined); //This causes an unneeded flush in my case: the projection matrix is already set. float width = camera.viewportWidth * camera.zoom; float height = camera.viewportHeight * camera.zoom; viewBounds.set(camera.position.x - width / 2, camera.position.y - height / 2, width, height); } } 
  3. 在開始渲染tiledMap之前,我還要繪制其他幾個對象(敵人,物品,活動元素)。 由於地圖的所有單元格上都沒有圖塊,因此必須采用這種方式,我希望這些對象隱藏在某些圖塊下。 所有這些對象共享相同的相機投影,因此,當我要渲染這些對象時,我將啟動SpriteBatch ,並在啟動地圖渲染器時將其保持打開狀態。 目前,所有這些對象都打包成大小約為1000x1000的紋理,但是它由許多小對象組成,因此可以將它們包裹在tileet的區域周圍(請參閱下文)。 事情就這樣了:

     @Override public void render(float delta) { Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); batch.setProjectionMatrix(camera.combined); batch.begin(); for (Thing t : things) { t.draw(batch); } orthogonalTiledMapRenderer2.setView(camera); orthogonalTiledMapRenderer2.render(tileLayer); //Uses the same batch //... batch.end(); } 

現在,事情已經很清楚了:我的計划是將所有內容打包為TiledMap切片集和對象表的單個Power-Of-Two二次紋理(以2048x2048的負擔得起的大小),所以我使用單個紋理,我可以最小化批量刷新到GPU。 問題是我找不到使用外部SpriteRegion加載TiledMap方法,甚至沒有使用AtlasTmxTiledMapLoader

誰能指出我正確的方向? 有沒有一種方法可以加載將TextureRegion作為TextureRegion傳遞給TiledMap的方法,而不是創建一個新的,無法訪問的Texture ,而必須為該地圖刷新一次,並為其余的TextureRegion刷新一次?

我還沒有做到這一點,但是您應該能夠將單個的Power-Of-Two紋理圖集傳遞給使用地圖級別的屬性“ atlas”,只要區域的名稱正確即可。

從Javadoc ...

公共類AtlasTmxMapLoader擴展BaseTmxMapLoader

TiledMap加載程序,它從TextureAtlas加載圖塊,而不是從單獨的圖像加載圖塊。 它需要一個稱為“地圖集”的地圖級屬性,其值是TextureAtlas的相對路徑。 地圖集中必須包含以地圖中使用的圖塊集命名的索引區域。 索引應位於圖塊集的本地(而不是全局ID)。 創建圖集時,不應使用帶狀空格和旋轉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM