在两个不同的位置渲染OpenGL场景

时间:2018-05-04 13:20:56

标签: c# c++ .net opengl

我正在编写一个呈现OpenGL场景的应用程序。这个应用程序有两个窗口:

  1. 一个只显示渲染场景的大窗口
  2. A"控制窗口"它提供了几种设置和渲染场景的预览
  3. 此应用程序是用.NET编写的(用于控制窗口部分),并使用本机C ++ DLL创建渲染窗口并进行实际的OpenGL渲染。

    这很好用,但仍然缺少一个重要的部分:将渲染场景的实时预览到我的.NET控制窗口中。

    到目前为止,我可以想到两个解决方案:

    1. 不仅将场景渲染到屏幕,还渲染到内存。然后把那块内存推到我的.NET WinForm上。最后将图像绘制到PictureBox或其他东西。 < - 听起来非常慢!
    2. 让我的原生OpenGL渲染器渲染场景两次,一次渲染到本机全尺寸窗口,一次渲染到我的.NET窗体上的控件(面板?)。
    3. 选项2听起来更快,但我不知道是否/如何工作。 可以这样做吗?还有更好的选择吗?

1 个答案:

答案 0 :(得分:0)

查看framebuffers上的文档。它基本上是渲染的目的地,默认情况下它是您的视口(或后备缓冲区,它会在显示的缓冲区准备好后切换)。

第一个选项通常应该更快,因为您渲染场景一次,然后基本上复制纹理。