[英]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.