gpt4 book ai didi

opengl - libgdx 中帧缓冲区的结果不明确

转载 作者:行者123 更新时间:2023-12-02 02:44:06 25 4
gpt4 key购买 nike

我通过 FrameBuffer 得到以下奇怪的结果libgdx 中的类。

enter image description here

以下是产生此结果的代码:

// This is the rendering code
@Override
public void render(float delta) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);

stage.act();
stage.draw();

fbo.begin();
batch.begin();
batch.draw(heart, 0, 0);
batch.end();
fbo.end();

test = new Image(fbo.getColorBufferTexture());
test.setPosition(256, 256);
stage.addActor(test);
}

//This is the initialization code
@Override
public void show() {
stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false);
atlas = Assets.getAtlas();
batch = new SpriteBatch();

background = new Image(atlas.findRegion("background"));
background.setFillParent(true);
heart = atlas.findRegion("fluttering");
fbo = new FrameBuffer(Pixmap.Format.RGBA8888, heart.getRegionWidth(), heart.getRegionHeight(), false);

stage.addActor(background);
Image temp = new Image(new TextureRegion(heart));
stage.addActor(temp);
}

尽管帧缓冲区的宽度和高度与图像的宽度和高度相同(71 x 72),为什么我在帧缓冲区上绘制的心会翻转并小于原始的心。

最佳答案

您的 SpriteBatch 使用了错误的投影矩阵。由于您要渲染到自定义大小的 FrameBuffer,因此您必须手动设置一个。

projectionMatrix = new Matrix4();
projectionMatrix.setToOrtho2D(0, 0, heart.getRegionWidth(), heart.getRegionHeight());
batch.setProjectionMatrix(projectionMatrix);

关于opengl - libgdx 中帧缓冲区的结果不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14729961/

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