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

Render OpenGL scene at two different locations

本文关键字:位置 场景 OpenGL 两个      更新时间:2023-10-16

我正在编写一个渲染OpenGL场景的应用程序。此应用程序有两个窗口:

  1. 仅显示渲染场景的大窗口
  2. 一个"控制窗口",提供多种设置和渲染场景的预览

此应用程序是用 .NET(用于控件窗口部分(编写的,并使用本机C++ DLL 创建呈现窗口并执行实际的 OpenGL 呈现。

这工作正常,但仍然缺少一个重要部分:将渲染场景的实时预览到我的 .NET 控件窗口中。

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

  1. 不仅将场景渲染到屏幕,还渲染到内存。然后将那团内存推到我的 .NET WinForm 中。最后将图像绘制到图片框或其他东西。<-这听起来非常慢!
  2. 让我的本机 OpenGL 渲染器将场景渲染两次,一次渲染到本机全尺寸窗口,一次渲染到我的 .NET 窗体上的控件(面板?

选项 2 听起来更快,但我不知道它是否/如何工作。 这能做到吗?有更好的选择吗?

查看有关帧缓冲的文档。它基本上是渲染的目的地,默认情况下它是您的视口(或后台缓冲区,一旦准备就绪,它就会与显示的缓冲区一起切换(。

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