gpt4 book ai didi

android - Libgdx 渲染纹理与 Sprite

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:01 26 4
gpt4 key购买 nike

我正在尝试使用 Libgdx 和 Box2d 构建我的第一款游戏。该游戏的概念与 Flappy Bird 相似。我的问题是渲染管道。

我已经尝试绘制矩形,然后绘制新的 Sprite ,每次调用渲染方法时我都可以将其缩小到不同的管道尺寸。这样做的问题是,一旦矩形离开屏幕,我就无法处理纹理,因为它会使所有其他仍然可见的矩形失去它们的纹理。如果我在纹理离开屏幕后不处理它,它将在 20 秒后使游戏变得非常慢。

另一种选择是为不同的管道尺寸使用大约 10 种不同的纹理,但仍然存在处理纹理的问题。

如果有任何关于如何有效渲染不同管道尺寸的建议,我将不胜感激。我在下面附上了我的渲染代码

  @Override
public void render(float delta) {
Gdx.gl.glClearColor(0,0,0,0);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

world.step(BOX_STEP, BOX_VELOCITY_ITERATIONS, BOX_POSITION_ITERATIONS);

batch.setProjectionMatrix(camera.combined);

batch.begin();
//background.setPosition(camera.position.x-camera.viewportWidth/2, camera.position.y-14);
//background.draw(batch);
batch.end();

//bg1.update();
//bg2.update();

updateAnimation();

if((TimeUtils.nanoTime()/10) - (lastDropTime/10) > 300000000)
createPipes();

batch.begin();

for(Rectangle raindrop: raindrops) {
pipe_top.setSize(4, raindrop.height);
pipe_top.setPosition(raindrop.x, raindrop.y);
pipe_top.draw(batch);

pipe_bottom.setSize(4, raindrop.height);
pipe_bottom.setPosition(raindrop.x, camera.position.y + (camera.viewportHeight/2-pipe_bottom.getHeight()));
pipe_bottom.draw(batch);

}
batch.end();

if(pipe.getX() < 0){
pipe.getTexture().dispose();
}

Iterator<Rectangle> iter = raindrops.iterator();
while(iter.hasNext()) {
Rectangle raindrop = iter.next();
raindrop.x -= 4 * Gdx.graphics.getDeltaTime();

if(raindrop.x < -35) iter.remove();

}

debug.render(world, camera.combined);
}

最佳答案

您必须尽快维护 render() 方法。加载资源非常慢,因此您应该在 create() 方法中创建纹理和 Sprite 。

此外,您不需要像雨滴那样多的 sprite,您可以重复使用同一个 sprite,改变它的位置和大小,然后多次绘制它。

希望这对您有所帮助。

关于android - Libgdx 渲染纹理与 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21857420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com