繁体   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