1

人们一直告诉我“GPU 只渲染三角形”。

但是您如何解释 GPU 仅在线框模式下用 4 行渲染一个四边形,因为 GPU 无法理解四边形,它不应该用 5 行渲染它吗?

另一方面,在未来禁用 GL_QUADS 的情况下,我如何模拟四边形?我需要一个着色器吗,我需要为每个对象生成新的线数组,我不能简单地从 GL_FILL 切换到 GL_LINE 吗?

4

2 回答 2

3

线条与填充的基元不同。当切换到glPolygonMode(…, GL_LINE)填充图元启动时(GL_TRIANGLES,GL_QUADS),OpenGL 不会发送填充图元的命令,而是填充图元顶点之间的线。所以 GL_TRIANGLES 转换为 3 个 GL_LINES 的元组,GL_QUADS 转换为 4 个 GL_LINES 的元组。GL_POLYGON 被转换为 GL_LINE_LOOP。当然,这些转换不会发生在 OpenGL 中,但是 OpenGL 驱动程序会向 GPU 发送与发送的命令相同的命令;GL_LINE 多边形模式和发送实际线之间也有一些细微的差异,最明显的是边缘标志的评估。

于 2011-09-22T13:17:52.923 回答
1

我不完全理解你的问题,但从我在这里的理解来看是答案。

有两个概念
1.插值用于确定要在一条线上绘制哪些像素。
2.光栅化用于确定要分配给位于三角形内的像素的属性(颜色、纹理等)。GPU 只能光栅化三角形并且只能插值线。因此,当您处于线框模型中时,只完成了多边形边界的插值。但是当我们在实体几何模型中进行插值时,我们也会对多边形进行栅格化。

于 2011-09-22T18:33:54.083 回答