2011-01-06 30 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。