我一直对GL_LINES(以及GL_LINE_LOOP和STRIP)感到好奇,我想知道GL实现通常如何处理它们。他们是否从端点和线宽推断出一个四边形?它是否做了更原始和专业的事情?
我知道它是特定于实现的,但是考虑到通用的nVidia或ATI驱动程序和Windows硬件,我可以期待GL如何生成那些精细的直线?
答案 0 :(得分:5)
通常使用Bresenham算法的一些变体直接光栅化线条,这比扫描线,原始填充光栅化器快得多(并且更容易实现)。 Bresenham的修改允许使用粗糙的抗锯齿线。
从技术上讲,挑战在于确定缓冲区中哪些片段被基元覆盖。这是通过固定的有线硬件,在细分,几何和顶点着色器之后,但在片段着色器之前发生的。