OpenGl如何实际绘制三角形?

时间:2017-02-13 12:45:52

标签: algorithm opengl graphics opengl-es directx

假设NDCS空间中有一个三角形。 也许OpenGL会进行视口转换并绘制三角形。

在许多图书中,他们介绍了很多绘制填充多边形的方法。 但是,我真的想知道OpenGl是如何工作的。

我相信一个简单的情况(那里没有透明或半透明的物体),Z-Buffer算法就足够了,您认为扫描线填充算法和其他算法需要吗?

我认为我们可以通过z-buffer算法确定像素的颜色。

请告诉我这个过程的详细信息。

1 个答案:

答案 0 :(得分:0)

来自OpenGL规范:

  

...栅格化一个原语由两部分组成。首先是   确定窗口坐标中整数网格的哪些方格   由原始人占据。第二个是分配深度值和   每个这样的正方形的一个或多个颜色值

基元(例如三角形)在窗口中生成区域。我们可以说它可以包含在一个像素矩形内。确定哪些像素属于原语取决于实现。来自不同基元的矩形可以重叠,因此可以生成像素。由几个原始人。

一旦像素被接受"它可能会产生几个碎片,可能是由于抗锯齿规则。

这些片段被发送到片段着色器(每个生成它们的基元一次)。取决于他们的位置"特征" (颜色,深度或其他任何' out'值在着色器中设置)根据"特征"进行插值。原语的顶点。

每个片段着色器(如果不丢弃片段,并通过其他测试,如模板,剪刀等)将其像素的结果与实际的帧缓冲结合,后者具有最后的组合结果。最后一个片段。