Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 什么程序负责计算机图形学中的投影_Opengl_Graphics_Directx_Projection - Fatal编程技术网

Opengl 什么程序负责计算机图形学中的投影

Opengl 什么程序负责计算机图形学中的投影,opengl,graphics,directx,projection,Opengl,Graphics,Directx,Projection,通过投影,我的意思是,获取3d模型数据、相机数据等,并将场景投影到将要显示的平面2d图像中 directx/opengl能做到这一点吗?他们真的是为游戏/图形设计师设计的,还是你必须用opengl/directx实现从3d到2d的投影?这就是我困惑的地方。好吧,这取决于我们谈论的是哪种计算机图形。例如,您通常可以在视觉效果(如ILM、Digital Domain、Weta Digital)和计算机动画电影(如Pixar、Dreamworks动画、迪士尼动画、Blu Sky)中看到的图像由专用渲染

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


directx/opengl能做到这一点吗?他们真的是为游戏/图形设计师设计的,还是你必须用opengl/directx实现从3d到2d的投影?这就是我困惑的地方。

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

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

在目前的系统中,这个过程是四重的

  • 几何体数据将转换为所谓剪辑空间中的位置。这是由一个称为顶点着色器的阶段完成的。实际上,它所做的是,对于基本体的每个角点,它获取一个输入向量(可以是任何向量)并根据该向量计算剪辑空间中的位置。你所问的投影,就发生在这一步——但整个过程还有很多。请继续读下去

  • (可选)细分着色应用于由上一步中生成的位置定义的基本体。细分可以被认为是一种程序控制的细化,使事物看起来更平滑或更详细

  • (可选)几何体着色可以将迄今为止生成的基本体转换为新的基本体。例如,这对于生成模拟头发非常有用

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


  • 现在OpenGL和DirectX 3D在哪里输入图片?嗯,在OpenGL-2和DirectX-8之前,上面描述的步骤都是硬编码到它们中的,所以在所有实际操作中,它们都是这样做的。今天,现代OpenGL和DirectX 3D更像是一个多功能的图形工具包,熟练的程序员可以使用它来实现自己的图形生成管道。步骤1到步骤4由所谓的着色器程序完成,必须由使用OpenGL或DirectX 3D的程序员编写。

    这个问题完全没有限制,无法在这里回答。对于初学者,您可能想看看答案中的链接。它被称为a,虽然它只带您到标准化设备坐标,但OpenGL/DirectX将处理其余部分。