我知道你通常在搅拌机或其他3D建模软件中创建复杂的3D模型,然后将其导出为.obj。这个.obj文件被解析到您的程序中,openGL将呈现它。这就是我对实时渲染的理解。
现在我想知道是否有类似于预渲染对象的东西。我有点困惑,因为有太多关于实时渲染的文章/视频,但我还没有找到任何关于非实时渲染的信息。像这样的东西存在还是不存在?我唯一想到的不是实时渲染的东西就是一个视频。
我猜这几乎是一个是或否的问题:)但如果它存在,也许有人可以告诉我一些网站的解释。
发布于 2012-04-21 16:42:02
“实时渲染”意味着帧的生成速度与显示的速度一样快。“非实时渲染”或“离线渲染”意味着一次生成一个帧,花费尽可能多的时间来达到所需的图像质量,然后将它们组装成一部电影。视频游戏质量的视频可以实时呈现;但是,像Pixar电影这样精致的东西必须在离线模式下完成。单独的帧仍然需要几个小时的渲染时间!
发布于 2012-04-21 16:36:58
不完全清楚你所说的“预渲染对象”是什么意思,但是有一些叫做VBO和顶点数组的东西,它们将对象的几何体存储在VRAM中,这样就不必使用glVertex3f()
或类似的每一帧将其加载到渲染管道中。这就是所谓的即时模式。
使用VBO和顶点数组而不是立即模式是因为它们比调用图形驱动程序将每个顶点的数据加载到VRAM中要快得多,因为它们保存在VRAM中,VRAM比普通RAM更快,随时可以引导到渲染管道中。
页面here也可能会有所帮助。
发布于 2012-04-21 16:42:09
没有什么可以阻止您渲染到off-screen frame-buffer (i.e., an FBO),然后将其保存到磁盘,而不是显示到屏幕上。例如,在CUDA、OpenCL等出现之前,GPGPU技术就是这样工作的。可以将数据作为未过滤的浮点纹理加载,使用FBO上的像素着色器执行计算,然后将结果保存回磁盘。
在我上面发布的链接中,它在概述中说明:
此扩展定义了一个简单的接口,用于绘制渲染目标,而不是窗口系统提供给GL的缓冲区。
然后它继续到状态,
通过允许使用可附加帧缓冲区的图像作为渲染目标,此扩展支持一种“屏幕外”渲染形式。
因此,您可以通过在屏幕外渲染一些渲染速度低于30fps的场景,然后将这些结果保存为某些电影文件或文件序列格式,以便稍后播放,从而获得您的“非实时”渲染。
https://stackoverflow.com/questions/10260900
复制相似问题