2015-02-12 3 views
2

Я использую орто-камеру и FitViewport в своем проекте.Libgdx - рендеринг FrameBuffer и FitViewport

В моем методе визуализации() я создать 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 doesen't работы. Когда я удаляю создание frameBuffer из метода визуализации, FitViewport отлично работает. Может ли кто-нибудь сказать мне, что не так с моим кодом или целым понятием?

ответ

1

Попробуйте это:

// 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());