OpenGL:如何设置OpenGL只渲染到FBO,不输出到屏幕/窗口/控件?

OpenGL:如何设置OpenGL只渲染到FBO,不输出到屏幕/窗口/控件?,opengl,background,initialization,rendering,fbo,Opengl,Background,Initialization,Rendering,Fbo,首先,我在WPF应用程序中使用OpenTK,但我认为这更像是一个通用的OpenGL 在我的应用程序中,我希望能够将3D材质渲染为纹理。 我不需要输出到窗口或屏幕上的控件-我只想渲染到背景纹理 那么,我应该如何设置OpenGL来实现这一点呢? 通常,应使用devicecontext作为参数创建graphicscontext。 但在我的例子中,我不想输出到devicecontext,我想渲染到一个固定大小的FrameBufferObject,其设置(例如1024x10232bpp 32bits ZB

首先,我在WPF应用程序中使用OpenTK,但我认为这更像是一个通用的OpenGL

在我的应用程序中,我希望能够将3D材质渲染为纹理。 我不需要输出到窗口或屏幕上的控件-我只想渲染到背景纹理

那么,我应该如何设置OpenGL来实现这一点呢? 通常,应使用devicecontext作为参数创建graphicscontext。 但在我的例子中,我不想输出到devicecontext,我想渲染到一个固定大小的FrameBufferObject,其设置(例如1024x10232bpp 32bits ZBuffer)与窗口或显示无关


我希望任何人都有这样的设置经验:)

上下文创建超出了OpenGL API本身的范围。GL上下文由目标图形系统创建,如Windows GDI、X11/GLX、Quartz/AGL。现在有了一个称为pbuffer的概念,它可以用来创建硬件加速的OpenGL上下文,而不绑定到窗口。然而,PBuffer通常只能作为扩展访问,所以您需要一个OpenGL上下文才能访问。解决方案是创建一个虚拟窗口,该窗口不需要在屏幕上可见,通过该窗口创建虚拟GL上下文以获得扩展。然后使用该文件创建PBuffer和该文件上的OpenGL上下文

然而,如果你想使用FBO,那么你不需要跳过PBuffer环。带有OpenGL上下文的不可见虚拟窗口也会执行此任务,因为渲染目标将是FBO