Algorithm OpenGl实际上是如何绘制三角形的?

Algorithm OpenGl实际上是如何绘制三角形的?,algorithm,opengl,graphics,opengl-es,directx,Algorithm,Opengl,Graphics,Opengl Es,Directx,假设NDCS空间中有一个三角形。 也许OpenGL会进行视口转换并绘制三角形 在许多图形学书籍中,他们介绍了许多绘制填充多边形的方法。 然而,我真的很想知道OpenGl是如何工作的 我相信在一个简单的情况下(那里没有透明或半透明的对象),Z-Buffer算法就足够了,你认为扫描线填充算法和其他算法需要吗 我认为我们可以通过z-buffer算法来确定像素的颜色 请让我知道这个过程的细节 来自OpenGL规范: …光栅化基本体由两部分组成。首先是 确定窗口坐标中整数网格的哪些平方是 被原始人占据。第

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

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

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

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


请让我知道这个过程的细节

来自OpenGL规范:

…光栅化基本体由两部分组成。首先是 确定窗口坐标中整数网格的哪些平方是 被原始人占据。第二种方法是指定深度值和 将一个或多个颜色值添加到每个这样的正方形

基本体(例如三角形)在窗口中生成一个区域。假设它可以被封闭在一个像素矩形内。确定这些像素中哪些属于基元取决于实现。来自不同基本体的矩形可能重叠,因此一个像素可能由多个基本体“生成”。 一旦像素被“接受”,它可能会生成多个片段,这可能是由于抗锯齿规则。 这些片段被发送到片段着色器(每个生成它们的基元一次)。根据它们的位置,“特征”(颜色、深度或着色器中设置的任何“out”值)从基本体顶点的“特征”进行插值。
每个片段着色器(如果不丢弃片段,并通过其他测试,如模具、剪刀等)将其像素结果与实际帧缓冲区相结合,实际帧缓冲区具有最后处理片段的最后组合结果。

OpenGL不需要任何特定算法,它只是描述了光栅化的一些形式化要求,实现可以自由使用任何他们认为合适的算法。我认为你们的问题是对堆栈溢出的一种概括。然而,Fabian Giesen的博客系列可能是一本不错的读物,因为它描述了GPU的实际功能。是关于光栅化的。回答“细节”是许多书值得的材料。这么说你不会得到一个好答案的。仅OpenGL ES的规范就有400页,这只是描述了“什么”,而不是“如何”。这本书很好:如果你不介意,你能解释一下具体的算法吗?好的,假设我发三个三角形,那么怎么画呢?如何确定颜色和其他东西?请解释细节。如果你问我写的“取决于实现”,那么“derhass”和“solidpixel”给了你一些参考资料。如果你的问题是另一个问题,请更准确地说出你想知道的内容。