1

背景:我正在编写一个创建生成艺术的程序。我关心创建一个最终的静态图像,我不需要每秒渲染一堆帧。到目前为止它是 2D 的,我在 Mac 上,所以我一直在使用 Core Graphics(又名 Quartz)2D 绘图 API。我已经达到了它的极限,所以我开始弄乱 OpenGL,但到目前为止我对抗锯齿并不满意。

我想知道我是否应该投资学习它,或者它是否不是为我想要的而构建的。OpenGL 是否更注重尽可能快地创建移动图形,主要用于游戏?如果我想要最高质量的渲染(高分辨率、平滑曲线、最佳抗锯齿、任意光照和着色算法),我需要编写自己的渲染器,还是学习 OpenGL 有意义?我可以用它作为基础吗?

4

4 回答 4

4

OpenGL 不是一个通用的图形库。

OpenGL 是一种 API,其设计专注于控制 GPU 以绘制实时图形。如果您知道如何使用它,您可以使用 OpenGL 生成高质量、接近照片级的绘图。但要做到这一点,需要付出很大的努力。

抗锯齿实际上很容易实现高质量:选择具有高二次采样密度的多重采样帧缓冲区格式,启用多重采样和渲染。

但是,您的用例听起来更像是 Renderman、Pixie、Yafa-Ray 等离线渲染器的任务。

于 2014-07-17T18:37:33.093 回答
2

您需要 RenderMan,皮克斯的 CGI 渲染软件。您的程序可以生成 RIB 文件,这些文件旨在成为 PostScript 文件的 3D 等效文件;或者您可以直接使用 RenderMan C API。

RM 具有更丰富的内置基元集,例如二次曲面和细分曲面,并且由于它是为电影工作而设计的,因此您可以执行从卡通着色到照片写实的所有操作。

3Delight 有一个免费/低成本的 RM 渲染器,您可以在单个系统上使用,而 Pixar 大约一个月前宣布,他们将提供免费版本的 RenderMan 供个人使用 Real Soon Now。

Steve Upstill 的 RenderMan Companion 是 RM 编程的经典指南。最近的一本书是 Saty Raghavachary 的《初学者渲染》。

希望这可以帮助。

于 2014-07-18T01:15:34.873 回答
1

OpenGL 是没有时间限制的最高质量渲染的正确选择吗?

不会。正如 datenwolf 所解释的,OpenGL 旨在充分利用 GPU 的能力来进行实时渲染。现有的产品专为极高品质的渲染而设计。

OpenGL 是您项目的正确选择吗?

也许。这些功能都不需要高质量的渲染器,所有这些都可以在 OpenGL 中轻松完成。它不支持的主要内容是光线追踪。*如果您需要对渲染进行光线追踪,那么您最好查看其他选项。

*理论上可以在 OpenGL 中进行光线追踪,但工作量很大。

于 2014-07-17T19:06:24.993 回答
0

为了质量?不。

当然,你可以走得更远,但正如 fintalia 所说,它不支持光线追踪(可以用 OpenCL 做到这一点,但那不是真正的 OpenGL)。确实有一些令人印象深刻的 OGL/D3D 渲染器,但今天看到的大多数渲染器都是软件渲染器(CPU/Parallelism/CUDA/Compute)、V-Ray、Mental Ray、Renderman。

于 2014-07-17T22:13:16.673 回答