无图形API的可移植实时渲染器窗口



我正在使用C++在CPU和GPU上(使用Cuda(编写渲染器。我不使用DirectX、Vulkan或OpenGL,我自己编写整个渲染管道作为练习。目前,渲染结果将保存为PNG文件。

但是,我想在窗口中实时显示渲染结果,但我不知道如何做到这一点。例如,在英伟达OptiX示例中(https://github.com/nvpro-samples/optix_advanced_samples),他们使用glfw3创建一个窗口,然后创建OpenGL上下文,并在OpenGL上下文中的一个简单纹理上显示OptiX渲染的结果。我也想做同样的事情,但我不想创建OpenGL上下文,因为我想要一个不使用任何图形API的可移植解决方案(Windows和Linux(。我不想依赖OpenGL,尤其是如果它只是用于显示。

是否有可移植的C++库用于管理窗口并实时显示纹理,而无需使用任何主要的图形API(DirectX、Vulkan、OpenGL(?

编辑:谢谢你的回答。我最初的问题可能不太清楚。我想使用GUI,但我不想使用硬件加速的API,如OpenGL。因为我每秒刷新60次内存中的缓冲区,其中包含我的场景渲染(一个由8位无符号int组成的数组,具有简单的RGB表示,每个像素3个值(,我只想每秒在窗口中显示60次这个缓冲区。

有一些独立的库,如Window-API,将提供跨平台窗口管理(在这种情况下是Linux+Windows(。

有一些像Qt和wxWidgets这样的框架可以做到这一点,还有更多,比如为你提供厨房水槽、冰箱、后院火箭发射台等。

您仍然需要使用"图形化"API或某种框架(因此是GUI、图形用户界面(,但您当然可以在硬件加速的3D图形渲染上下文(如OpenGL、Vulkan或DirectX(之外显示图像、动画、视频等。

对于Windows,只需使用User32和GDI。(或gdiplus等其他DLL(

对于Linux发行版,您可以使用GTK或KDE。

此外,还有像SDL这样的跨平台库。

这些库支持高级窗口api。因此,您可以获得小部件(或窗口(的画布(或曲面(,并且可以简单地复制渲染结果。只需复制位图。

或者,您可以直接使用像EGL这样的底层图形基础库来获得显示表面。

最新更新