OpenGL / OpenTK:在OpenGL控件中显示在后台线程上渲染的FBO

时间:2011-01-21 08:56:14

标签: multithreading opengl opentk fbo

我通过OpenTK使用OpenGL,并且我在后台线程中渲染到FramebufferObject。 现在,在每个渲染帧之后,我想在我的UI中的一个或多个OpenGL控件中显示(部分)FBO。

这是如何运作的?

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  • 如果你的驱动程序支持上下文共享,你可以在你的OpenGL控件上绑定FBO纹理并直接显示它(绑定纹理,渲染四边形,完成)。简单快速 - 只需确保将渲染与显示同步。
  • 如果您的驱动程序没有,则必须通过GL.ReadPixels将渲染结果回读到Bitmap对象(或等效对象)中。然后,您可以将它们作为纹理重新上传到其他OpenGL控件,或直接在非OpenGL控件上显示它们。

默认情况下,OpenTK将始终尝试共享上下文。不幸的是,英特尔驱动程序不支持上下文共享,因此您无法使用第一种方法。