2012-06-06 63 views
1

我對這個主題進行了一些搜索,每個人似乎都相信其他網頁會做這樣的事情,比如將內容從Backbuffer複製到Frontbuffer,而不調用SwapBuffers,不是可能。將Backbuffer中的數據複製到前緩衝區

有一些workarround創建一個輔助的額外緩衝區(如pBuffer),渲染並複製內容到紋理中,然後顯示紋理。

但我想知道是否真的沒有機會渲染Opengl的Backbuffer,並將內容複製到前緩衝區。我想要實現這一點,因爲在SwapBuffers的兩次調用之間,我的許多渲染場景保持不變,並且只有一小部分(矩形)已被更改,所以我想避免不必要地渲染場景的其他90%每次。

像素緩衝區對象似乎幫助我們使用直接內存訪問將像素從FrameBuffer複製到像素緩衝區對象。我的機器不支持它,但即使這樣做,我們也再次分配一個額外的緩衝區。

那麼是真的絕對沒有辦法複製窗口的Back和Front緩衝區之間的內容或部分內容?

回答

0

你打算做的不是什麼雙緩衝設計。

但是,如果每次更新只有一部分圖像需要更新,則不要清除緩衝區並繪製矩形。

+0

但在這種情況下,我將有dissyncronized圖片,因爲如果我畫,在第1次,當我打電話給SwapBuffers,我的繪圖將不會再存在於第二個緩衝區(這將成爲前緩衝區) – filipehd

0

如下(可用時或更早版本通過擴展)你能做到這一點,因爲OpenGL 3.0的:

glReadBuffer(GL_BACK); 
glDrawBuffer(GL_FRONT); 
glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, 
    dstX0, dstY0, dstX1, dstY1, GL_COLOR_BUFFER_BIT, GL_NEAREST); 
相關問題