簡體   English   中英

LibGDX:在render方法中創建並處理ShapeRenderer嗎?

[英]LibGDX: Create and dispose ShapeRenderer in render method?

我正在使用ShapeRenderer對象在游戲中創建顏色漸變( Screen類)。 分配的內存用於永久增長,直到每次調用后我開始處置ShapeRenderer對象。 如何重用我的色彩漸變? 有沒有一種方法可以將漸變繪制到紋理中(只能在render方法中重復使用一次)?

public void render(float deltaTime) {
    camera.update();
    batch.setProjectionMatrix(camera.combined);

    ShapeRenderer shapeRenderer = new ShapeRenderer();
    shapeRenderer.setProjectionMatrix(camera.combined);
    shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
    shapeRenderer.rect(0, 0, screenWidth, screenHeight, topColor, topColor, bottomColor, bottomColor);
    shapeRenderer.end();
    shapeRenderer.dispose();

    batch.begin();
    ...
    batch.end();
}

盡管看來您已經解決了問題,但是這里只是給您和任何人在類似問題上絆腳而過的小紙條。

請勿在每次循環運行期間不惜一切代價實例化新的對象(任何類型)。 您遇到減速的原因就是因為這個。 每次實例化一個新對象然后停止使用它時,JVM的垃圾收集器都需要擺脫該對象。 您應該始終嘗試重用對象。 這就是為什么內存管理通常如此重要的原因(這些鏈接專門針對LibGdx)。

你的想法做一個現場的ShapeRenderer是好的,只是不要忘記dispose()它在你的游戲dispose()方法。

暫無
暫無

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

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