Libgdx - FrameBuffer 渲染和 FitViewport

标签 libgdx framebuffer

我在项目中使用正射相机和 FitViewport。

在我的 render() 方法中,我创建了一个 fremeBuffer 来存储我游戏的实际状态,然后创建该缓冲区的像素图,最后我设置了一个新的着色器并使用该帧进行后期处理:

//--- render frame to buffer
screenBuffer.begin();
camera.update();
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(img, 0, 0);
batch.end();
stage.draw();
//--- create pixmap from that buffer
pixmap = ScreenUtils.getFrameBufferPixmap(0, 0,screenBuffer.getWidth(), screenBuffer.getHeight());
batch.flush();
screenBuffer.end();
//--- create texture from pixmap   
renderedScreenTexture = new Texture(pixmap);
//--- finally render frame with postprocess shader
camera.update();
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.setShader(monoShader);
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(renderedScreenTexture, 0,0);
batch.draw(renderedScreenTexture, 0, 0, 640, 320, 0, 0, 640, 320, false, true);
batch.end();

在我的调整大小方法中,我有:

viewport.update(width, height);
camera.position.set(camera.viewportWidth / 2,camera.viewportHeight / 2, 0);

问题是调整窗口大小后 FitViewport 不起作用。 当我从渲染方法中删除创建的 frameBuffer 时,FitViewport 工作正常。 谁能告诉我我的代码或整个概念有什么问题?

最佳答案

试试这个:

// the viewPort you are using
FitViewport v = viewport; 
// end your buffer with your viewPort's position and size
screenBuffer.end(v.getScreenX(),v.getScreenY(),
    v.getScreenWidth(),v.getScreenHeight());

关于Libgdx - FrameBuffer 渲染和 FitViewport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28487736/

相关文章:

android - 使用 libgdx 绘画会使物体闪烁

java - rayHandler.render() 导致 box2DLightsVersion 黑屏

java - 强制 android libgdx 进入沉浸模式

java - 缩放 ImageButton 的图像,然后将其居中

winapi - 使用 Windows API 渲染时屏幕撕裂

webgl - 使用 WebGL 渲染全屏四边形

c++ - 如何使用c语言在framebuffer中绘制图形..?

java - 使用帧缓冲区将深度缓冲区渲染到纹理中

linux - 将帧保存到文件(Linux 脚本)

java - 如何使用 libGDX 中的 I18NBundle 更改游戏中的语言?