【发布时间】:2018-11-08 06:12:41
【问题描述】:
我正在使用 C++ 在 CPU 和 GPU(使用 Cuda)上编写渲染器。我不使用 DirectX、Vulkan 或 OpenGL,我自己编写整个渲染管道作为练习。目前,渲染结果保存为 PNG 文件。
但是,我想在一个窗口中实时显示渲染结果,但我不知道该怎么做。 例如,在 Nvidia OptiX 示例 (https://github.com/nvpro-samples/optix_advanced_samples) 中,他们使用 glfw3 创建一个窗口,然后创建一个 OpenGL 上下文,并在 OpenGL 上下文中的简单纹理上显示 OptiX 渲染的结果。我也想做同样的事情,但我不想创建 OpenGL 上下文,因为我想要一个不使用任何图形 API 的可移植解决方案(Windows 和 Linux)。我不想依赖 OpenGL,尤其是如果它只是为了显示。
是否有一个可移植的 C++ 库来管理窗口并实时显示纹理而不使用任何主要的图形 API(DirectX、Vulkan、OpenGL)?
编辑:感谢您的回答。我最初的问题可能不太清楚。我想使用 GUI,但不想使用 OpenGL 等硬件加速 API。因为我每秒刷新 60 次内存中的缓冲区,其中包含我的场景渲染(一个 8 位无符号整数数组,具有简单的 RGB 表示,每个像素 3 个值),我只想在窗口中显示这个缓冲区每秒 60 次。
【问题讨论】:
-
把你的渲染图像想象成一个位图。你将如何显示位图?在某些时候,您需要调用特定于操作系统的函数来执行此操作。
-
我怀疑您是否能够仅使用 WinAPI/Xlib 实时显示渲染的 png(这取决于您将实时定义为 ^^ 的内容)。
-
在这里请求图书馆被认为是题外话。也就是说,我推荐 SDL2。
标签: c++ linux graphics window renderer