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