簡體   English   中英

渲染方法沒有繪制任何內容JAVA LibGDX

[英]Rendering method isn't drawing anything JAVA LibGDX

我正在嘗試使用libGdx並使用MVC模式制作游戲。 我有一個打算一直運行的游戲模型,而不是應用程序中的render方法。 因此,我在將Game從libgdx擴展的類中完成了此操作:首先,我將連續渲染設置為false,並調用將游戲屏幕用作模型偵聽器的渲染方法。

public class MyGame extends Game {

GameModel model;
GameScreen gs;

@Override
public void create() {
    Gdx.graphics.setContinuousRendering(false);
    Gdx.graphics.requestRendering();
    model = new GameModel();
    gs = new GameScreen(this, model);
    model.addPCL(gs);
    setScreen(gs);
    model.runGame();


}  ...

在我的模型中,我只是嘗試一個簡單的循環,最后將一個propertyChangeEvent觸發到我的gameScreen。 一切正常,我調試了打印,表明正在調用我的游戲屏幕渲染方法,並且propertychange正常。 問題出在何時應該在我的render方法中進行繪制,而不是繪制所有東西而導致崩潰,直到模型中的循環結束。 然后,由於窗口上的輸入發生了更改(如果我移動鼠標或單擊等),並且現在正在按原樣顯示圖形,因此調用了我的渲染方法。

在我的GameScreen類中,我嘗試使用似乎什么都沒做的Gdx.graphics.requestRendering()進行操作,在這里我的debbuggin打印件甚至都沒有出現。 我也嘗試過使用MyGame類來觸發其render方法,這至少顯示了我的調試打印結果。

@Override
public void propertyChange(PropertyChangeEvent evt) {
    System.out.println("Event recieved");
    myGame.render();
    //Gdx.graphics.requestRendering();
}
@Override
public void render(float delta) {
    System.out.println("mapscreen render beginning: " + delta);
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    // Stuff that should be drawn happens here      
}

有誰知道會導致我的render方法被調用的原因,但是為什么它實際上沒有執行它在方法中應該執行的操作? 另外,為什么Gdx.graphics.requestRendering()甚至不觸發我的調試打印?

是您的model.runGame();嗎? 阻止操作? 如果是這樣,create()方法將永遠無法完成。 因此,LibGDX主線程卡在那里。 但是LibGDX線程需要在后台運行。

也許您應該在另一個線程中啟動model.runGame()。

暫無
暫無

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

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