【问题标题】:what program is responsible for projection in computer graphics什么程序负责计算机图形中的投影
【发布时间】:2013-02-08 00:15:11
【问题描述】:

我所说的投影是指获取 3d 模型数据、相机数据等,并将场景投影到将要显示的平面 2d 图像中。

directx / opengl 会这样做吗?他们实际上是为游戏/图形设计师做的,还是您必须使用 opengl / directx 实现 3d 到 2d 投影?这就是我困惑的地方。

【问题讨论】:

  • 这个问题太开放了,无法在这里回答。对于初学者,您可能想查看this question 答案中的链接。
  • 它被称为projection matrix,虽然它只会带你进入标准化设备坐标,OpenGL/DirectX 会处理其余的。

标签: opengl graphics directx projection


【解决方案1】:

嗯,这取决于我们谈论的是哪种计算机图形。例如,您通常可以在视觉效果(如 ILM、Digital Domain、Weta Digital)和计算机动画电影(如皮克斯、梦工厂动画、迪士尼动画、蓝光天空)中看到的图像是由专用渲染器软件离线生成的。这种离线渲染器可以通过多种方式实现。可能有光栅器(与 OpenGL 或 DirectX 3D 不同)或光线追踪器(完全不同),甚至还有混合。

OpenGL 和 DirectX 3D 是通过 光栅化 用于实时图像生成的 API,我将对其进行解释。首先您必须了解的是,从 OpenGL 和 DirectX 3D 的角度来看,没有 3d 模型、没有相机、没有场景。对于他们来说,只有一个帧缓冲区(一个 2d 画布),他们只将点、线或三角形栅格化(=绘制)到该帧缓冲区。在对此类图元进行光栅化时,各种输入数据都会影响该过程,例如控制模拟照明过程的图像(纹理)或参数。

在当前系统中,该过程是 4 折的。

  1. 几何数据被转换为所谓的剪辑空间中的位置。这是由称为顶点着色器的阶段完成的。实际上,它的作用是,对于图元的每个角,它需要一个输入向量(可以是任何东西)并从中计算剪辑空间中的位置。 您询问的投影发生在这一步——但整个事情还有很多。请继续阅读。

  2. (可选)镶嵌着色应用于由上一步中生成的位置定义的图元。 Tesselation 可以被认为是一种程序控制的细化,以使事物看起来更平滑或具有更高的细节。

  3. (可选)几何着色可以将目前生成的图元转换为新的图元。这对于生成模拟头发很有用

  4. 片段着色计算被光栅化的基元覆盖的每个片段的最终颜色。一个像素至少有一个片段,但使用抗锯齿可能会有更多。

现在 OpenGL 和 DirectX 3D 在哪里进入画面?好吧,在 OpenGL-2 和 DirectX-8 之前,上述步骤是硬编码到其中的,所以实际上他们做到了。如今,现代 OpenGL 和 DirectX 3D 更像是一个多功能的图形工具包,熟练的程序员可以使用它来实现自己的图形生成管道。第 1 步到第 4 步由所谓的着色器程序完成,必须由使用 OpenGL 或 DirectX 3D 的程序员编写以使整个程序工作。

【讨论】:

    猜你喜欢
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 2021-06-08
    • 2012-05-14
    • 1970-01-01
    相关资源
    最近更新 更多