背景:我正在编写一个创造生成艺术的程序。我关心的是创建一个最终的静态图像,而且我不需要每秒渲染一堆帧。到目前为止它已经是2D了,我在Mac上,所以我一直在使用Core Graphics(又名Quartz)2D绘图API。我已达到它的极限,所以我开始搞乱OpenGL,但到目前为止我对抗锯齿还不满意。
我想知道我是否应该投资学习它,或者它是否不是为了我想要的而建造的。 OpenGL是否更多关于尽可能快地创建移动图形,主要用于游戏?如果我想要最高质量的渲染(高分辨率,平滑曲线,最佳抗锯齿,任意照明和着色算法),我是否需要编写自己的渲染器,或者学习OpenGL是否有意义?我可以用它作为基础吗?
答案 0 :(得分:3)
OpenGL不是通用图形库。
OpenGL是一种API,其设计专注于控制GPU以绘制实时图形。如果您知道如何使用它,您可以使用OpenGL生成高质量,接近真实感的绘图。但要做到这一点需要付出很多努力。
抗锯齿实际上很容易实现高质量:选择具有高子采样密度的多重采样frambuffer格式,启用多重采样和渲染。
然而,您的用例听起来更像是Renderman,Pixie,Yafa-Ray等类似离线渲染器的任务。
答案 1 :(得分:1)
OpenGL是否是最高质量渲染的正确选择,没有时间限制?
没有。正如datenwolf所解释的那样,OpenGL旨在充分利用GPU的功能来进行实时渲染。现有的产品专为极高质量的渲染而设计。
OpenGL是您项目的正确选择吗?
也许。这些功能都不需要高质量的渲染器,所有这些都可以在OpenGL中轻松完成。它不支持的主要内容是光线追踪。*如果您需要渲染光线,那么最好还是选择其他选项。
*理论上可以在OpenGL中进行光线跟踪,但需要做很多工作。
答案 2 :(得分:1)
你想要Pixder的CGI渲染软件RenderMan。您的程序可以生成RIB文件,这些文件旨在成为PostScript文件的3D等效文件;或者您可以直接使用RenderMan C API。
RM拥有更丰富的内置基元,例如二次曲面和细分曲面,因为它专为电影工作而设计,你可以做任何事情,从香椿阴影到照片写实。
3Delight有一个免费/低成本的RM渲染器,您可以在单个系统上使用,Pixar宣布一个月左右,他们将提供免费版本的RenderMan供个人使用Real Soon Now。
Steve Upstill的RenderMan Companion是编程RM的经典指南。最近的一本书是Saty Raghavachary的“为初学者渲染”。
希望这有帮助。
答案 3 :(得分:0)
质量如何?否。
当然,你可以走远,但正如fintelia所说,它不支持光线追踪(可以用OpenCL做到这一点,但那不是真正的OpenGL)。 确实有一些令人印象深刻的OGL / D3D渲染器,但今天看到的大部分渲染都是软件渲染(CPU / Parallelism / CUDA / Compute),V-Ray,Mental Ray,Renderman。