OpenGL渲染(只是实时)?

时间:2012-04-21 16:34:29

标签: c++ opengl

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

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

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

3 个答案:

答案 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的场景来获得“非实时”渲染,然后将这些结果保存为某些电影文件或文件序列格式,可以在以后的日期。