OpenGL 渲染(仅限实时)

OpenGL rendering (only real-time)?

本文关键字:实时 渲染 OpenGL      更新时间:2023-10-16

我知道您通常在Blender或其他3D建模软件中创建复杂的3D模型,并将其导出为.obj。 这个.obj文件被解析到你的程序中,openGL将渲染它。据我所知,这是实时渲染。

现在我想知道是否有类似预渲染对象的东西。我有点困惑,因为有很多关于实时渲染的文章/视频,但我还没有找到任何关于实时渲染的信息。这样的东西存在与否?由于没有实时渲染,我唯一想到的是视频。

我想这几乎是一个是或否的问题:)但如果它存在,也许有人可以指出我一些带有解释的网站。

"实时渲染"意味着帧的生成速度与显示帧的速度一样快。"非实时渲染"或"离线渲染"是指一次生成一个帧,花费尽可能多的时间来实现所需的图像质量,然后将它们组装成电影。视频游戏质量的视频可以实时渲染;不过,像皮克斯电影这样精致的东西必须在离线模式下完成。单个帧仍可能需要数小时的渲染时间!

目前还不完全清楚"预渲染对象"是什么意思,但是有一些称为 VBO 和顶点数组的东西将对象的几何存储在 VRAM 中,这样就不必使用glVertex3f()或类似的每一帧将其加载到渲染管道中。这称为即时模式。

使用 VBO 和顶点数组代替即时模式,因为它们比调用图形驱动程序为每个顶点将数据加载到 VRAM 中要快得多,因为它们保存在 VRAM 中,这比普通 RAM 更快,准备启动到渲染管道中。

这里的页面也可能有所帮助。

没有什么能阻止您渲染到屏幕外的帧缓冲区(即FBO),然后将其保存到磁盘而不是将其显示在屏幕上。 例如,这就是GPGPU技术在CUDA,OpenCL等出现之前的工作方式。您可以将数据加载为未过滤的浮点纹理,使用 FBO 上的像素着色器执行计算,然后将结果保存回磁盘。

在我上面发布的链接中,它在概述中指出:

此扩展定义了用于绘制到渲染的简单接口 除 GL 提供给 GL 的缓冲区之外的目标 窗口系统。

然后它继续说,

通过允许使用帧缓冲可附加图像作为渲染 目标,此扩展启用一种"屏幕外"渲染形式。

因此,您可以通过在屏幕外渲染一些渲染速度低于 30fps 的场景,然后将这些结果保存为某种电影文件或文件序列格式来获得"非实时"渲染,以便以后播放。