2011-01-06 31 views
4

首先,我在WPF應用程序中使用OpenTK,但我認爲這更像是一個通用的OpenGL事物。OpenGL:如何設置OpenGL來呈現給FBO,沒有輸出到屏幕/窗口/控件?

在我的應用程序中,我希望能夠將3D材質渲染到紋理。 我不需要輸出到窗口或控制屏幕上 - 我只想渲染到背景紋理。

那麼,我應該如何設置OpenGL來做到這一點? 通常,應該使用devicecontext作爲參數來創建一個graphicscontext。 但在我的情況下,我不想輸出到設備上下文,我想渲染到與窗口或顯示無關的設置(f.e. 1024x1024,32bpp,32位ZBuffer)的固定大小的FrameBufferObject。

我希望任何人有一個設置任何經驗這樣:)

回答

3

背景創作是OpenGL的API本身的範圍之外。 GL上下文由目標圖形系統創建,如Windows GDI,X11/GLX,Quartz/AGL。現在有一個叫PBuffers的概念,它可以用來創建不依賴於窗口的HW加速OpenGL上下文。然而,PBuffers通常只能作爲擴展訪問,所以你需要一個OpenGL上下文才能獲得。解決方案是創建一個虛擬窗口,該虛擬窗口永遠不需要在屏幕上可見,使用該虛擬窗口創建虛擬GL上下文以獲取擴展。然後使用那個PBuffer和一個OpenGL上下文創建。

但是,如果你想使用FBO,那麼你不需要跳過PBuffer箍。帶有OpenGL上下文的不可見虛擬窗口也會完成這項工作,因爲渲染目標將是FBO。