据我所知,您通常会在Blender或其他3D建模软件中创建复杂的3D模型,然后将其导出为.obj。这个.obj文件被解析到你的程序中,openGL将渲染它。据我所知,实时渲染。
现在我想知道是否有类似预渲染对象的东西。我有点困惑,因为有很多关于实时渲染的文章/视频,但我没有找到任何关于没有实时渲染的信息。这样的事情是否存在?我认为唯一没有实时渲染的东西就是视频。
我想这几乎是一个肯定或没有问题:)但如果它存在,也许有人可以指向一些有解释的网站。
答案 0 :(得分:1)
“实时渲染”意味着帧的生成速度与可以显示的速度一样快。 “非实时渲染”或“离线渲染”意味着一次一个地生成帧,花费尽可能多的时间来实现期望的图像质量,然后将它们组装成电影。视频游戏的质量视频可以实时呈现;然而,像皮克斯电影那样复杂的东西必须在离线模式下完成。单个帧仍然需要数小时的渲染时间!
答案 1 :(得分:0)
“预渲染对象”的含义并不完全清楚,但有些东西称为VBO和顶点阵列,它们将对象的几何体存储在VRAM中,以便不必使用glVertex3f()
将其加载到渲染管道中或每个帧类似。这称为立即模式。
使用VBO和Vertex数组而不是立即模式,因为它们远比调用图形驱动程序将数据加载到每个顶点的VRAM更快,因为它们保存在VRAM中,这比普通的RAM,准备启动到渲染管道。
页面here也可能会有所帮助。
答案 2 :(得分:0)
没有什么可以阻止你渲染到off-screen frame-buffer (i.e., an FBO),然后将其保存到磁盘而不是将其显示到屏幕上。例如,这就是GPUDU技术在CUDA,OpenCL等出现之前的工作原理......您可以将数据作为未过滤的浮点纹理加载,使用FBO上的像素着色器执行计算,然后保存结果回到磁盘。
在我上面发布的链接中,它在概述中说明:
此扩展定义了一个用于绘制到渲染的简单界面 除了由GL提供给GL的缓冲区以外的目的地 窗口的系统。
然后继续陈述,
允许使用帧缓冲可附加图像作为渲染 目的地,此扩展程序启用了一种“屏幕外”渲染形式。
因此,您可以通过在屏幕外渲染一些渲染速度低于30fps的场景来获得“非实时”渲染,然后将这些结果保存为某些电影文件或文件序列格式,可以在以后的日期。