所以我一直在做一个项目,但是一段时间以来,我一直在使用libGDX 0.98。
想要使用着色器进行操作,我已更新到libGDX 1.41。然而,现在,在GL10中绘制的纹理,字体,图像不会在GL20中绘制。有些事情有些吸引人,有些事情没有。有些字体呈现,有些字体不呈现。我的整个项目在更新之前工作正常,现在遇到了重大问题。
此外,还有一些非常糟糕的屏幕撕裂正在发生。随着事情在游戏中开始发生,屏幕将像1/4白色一样闪烁,向中间屏幕倾斜一些角度,就像切出的披萨片一样。
我可以在舞台上添加元素,然后告诉舞台画画。有些人会画,有些人不会。它们扩展了相同的类并使用相同的方法绘制,但其中一些只是拒绝绘制。
这里有来自我的渲染线程的一些代码,以防万一有人知道可能会发生什么。我真的不知道该怎么做。代码中有很多注释,因为我正在尝试进行一些调试。
public void render(float delta)
{
super.render(delta);
Gdx.gl.glClearColor(0, 0, 0, 0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
//get debug output info
float x = getShip().getBody().getPosition().x;
float y = getShip().getBody().getPosition().y;
float speed = (float)Math.sqrt(Math.pow(getShip().getBody().getLinearVelocity().x, 2)
+ Math.pow(getShip().getBody().getLinearVelocity().y, 2));
//float angle = Math.abs(ship.getAngleInDegrees()) % 360;
float angle = ship.getAngleInDegrees();
/*if(!isPaused)
{
if(this.game.getSoundController().getPlayingMusic() == null)
{
playRandomTrack();
}
if(this.ship.playerIsDead() || this.levelCompleted)
{
this.time += Gdx.graphics.getDeltaTime();
if(this.time > 10)
{
this.dispose();
if(this.ship.playerIsDead())
this.game.goToMainMenu();
else
this.game.setScreen(this.game.getNextScreen());
}
}
}*/
this.world.step(BOX2D_STEP, 6, 2);
handleInput();
handleAsteroids();
handleShip();
handleShot();
handleEffects();
//debugRenderer.render(this.world, this.debugCamera.combined);
//draws the score text (will draw other UI Text too later)
this.spriteBatch.begin();
this.gameStage.act();
this.gameStage.draw();
this.game.getWindowStage().act();
this.game.getWindowStage().draw();
//handleEffects(this.spriteBatch); //this method must be called between spritebatch begin and end
this.font.setColor(Color.RED);
//this.font.draw(spriteBatch, "TESTTESTTEST", 300, 300);
if(this.debugOutputOn)
{
printDebugOutput(x, y, speed, angle, this.spriteBatch);
}
this.spriteBatch.end();
}
编辑:新信息,虽然我仍然遇到问题:当我尝试强制绘制某些内容但创建它并手动将其添加到舞台时,右上角会出现一个大的白色矩形。这些是我知道可以绘制的项目,因为它们已经在屏幕上绘制,但是试图强制它们在这里绘制似乎会导致一些问题。
答案 0 :(得分:0)
我已经解决了这个问题。我的舞台中有一个对象调用Gl ShapeRenderer。它在GL10 / 11中运行良好,但是当我移植时,它导致了在这个对象之后添加的libGDX阶段中的所有内容,而不是被绘制。当然,它造成了大部分问题。
我不确定这是否是一个libGDX错误,或者它是否与GL20一起出现问题并且在我使用时调用ShapeRenderer。