2015-03-24 4 views
0

desired outputacutal output Я использую glClearColor внутри begin() и end() в framebuffer, но очищает весь цвет экрана, я делаю что-то не так?Framebuffer в Libgdx, используя glclearcolor() очищает весь экран

public class FrameBufferTest implements ApplicationListener{ 

    OrthographicCamera camera; 
    SpriteBatch batcher; 
    FrameBuffer fbo; 
    Texture tex; 
    @Override 
    public void create() { 
     batcher = new SpriteBatch(); 

     camera = new OrthographicCamera(800, 480); 
     camera.position.set(camera.viewportWidth/2f, camera.viewportHeight/2f, 0); 

     fbo = new FrameBuffer(Format.RGBA8888, 100, 100,false); 

     camera.position.set(camera.viewportWidth/2f, camera.viewportHeight/2f, 0); 
     tex = new Texture("data/bg.png"); 
    } 

    @Override 
    public void render() { 
     GL20 gl = Gdx.graphics.getGL20(); 
     gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
     gl.glClearColor(0.5f,0.5f,0.5f,0.5f); // grey color 

     camera.update(); 
     batcher.setProjectionMatrix(camera.combined); 

     batcher.enableBlending(); 
     batcher.begin(); 
      batcher.draw(tex, 0, 0, 256, 256); 
     batcher.end(); 

     fbo.begin(); 
      gl.glClearColor(1f,0,0,1f); 
      gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
     fbo.end(); 

     batcher.begin(); 
      batcher.draw(fbo.getColorBufferTexture(), 512, 0, 100, 100); 
     batcher.end(); 
    } 

ответ

2

Своп эти две строк в начале вашей визуализации методы:

gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
gl.glClearColor(0.5f,0.5f,0.5f,0.5f); // grey color 

В порядке у вас есть, это клиринговый цвет, используя самый последний набор ясного цвета, который является красным что вы ставите дальше в методе рендеринга (так как это цикл).

+0

Есть ли способ использовать цвет фреймбуфера без использования сетки или shape_renderer. – jpm

+0

Разве это не то, что вы уже сделали? Вы сделали красный буфер кадра. – Tenfour04

Смежные вопросы