簡體   English   中英

是否可以將默認幀緩沖區復制到 OpenGL 中的另一個幀緩沖區 object?

[英]is it possible to copy the default framebuffer to another framebuffer object in OpenGL?

我正在嘗試將渲染到屏幕后的默認幀緩沖區復制到 OpenGL 中的另一個自定義幀緩沖區。 下面是我的代碼。 你看有什么不對嗎? BLit 調用成功,但我沒有看到任何渲染。

void drawDisplayList() {

    setNormalDraw();
    clear();
    drawDisplayLists();
    drawDisplayLists();
    
    glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
    glReadBuffer(GL_FRONT);
    glBindFramebuffer(GL_FRAMEBUFFER, geomFBO);
    glBindFramebuffer(GL_DRAW_FRAMEBUFFER, geomFBO);
    glDrawBuffer(GL_COLOR_ATTACHMENT0);
    glBlitFramebuffer(0, 0, _scrWidth, _scrHeight, 0, 0, _scrWidth, _scrHeight, GL_COLOR_BUFFER_BIT, GL_NEAREST);
    GLenum errorCode1;
    errorCode1 = glGetError();
    if (errorCode1 != GL_NO_ERROR) {
        printf("glBlitFramebuffer Success!");
    }

    glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
    glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);

}

我的 FBO 初始化

void createFboBuffers()
{
      
    glGenFramebuffers(1, &geomFBO);
    glBindFramebuffer(GL_FRAMEBUFFER, geomFBO);

    glGenRenderbuffers(1, &color_rbo);
    glBindRenderbuffer(GL_RENDERBUFFER, color_rbo);
    glRenderbufferStorage(GL_RENDERBUFFER, GL_RGB, this->size().width(), this->size().height());
    glBindRenderbuffer(GL_RENDERBUFFER, 0);
    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, color_rbo);

        
    glGenRenderbuffers(1, &depth_rbo);
    glBindRenderbuffer(GL_RENDERBUFFER, depth_rbo);
    glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, _scrWidth, _scrHeight);
    glBindRenderbuffer(GL_RENDERBUFFER, 0);
    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth_rbo);
    
 }   
 

請任何指點。 看起來沒有任何內容被復制到另一個 FrameBuffer。

指令glBindFramebuffer(GL_FRAMEBUFFER, geomFBO)將幀緩沖區 object 綁定到讀取和繪制幀緩沖區目標(請參閱glBindFramebuffer )。 這會破壞默認幀緩沖區與讀取幀緩沖區目標的綁定。 只需刪除:

glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
glReadBuffer(GL_FRONT);
// glBindFramebuffer(GL_FRAMEBUFFER, geomFBO);   <-- DELETE
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, geomFBO);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM