考虑以下代码:

glColor4ub(255, 255, 255,255);

glBegin(GL_QUADS);
glVertex2i(100, 100);
glVertex2i(300, 100);
glVertex2i(300, 101);
glVertex2i(100, 101);
glEnd();

glLineWidth(1);

glBegin(GL_LINES);
glVertex2i(100,200);
glVertex2i(300,200);
glEnd();

这导致以下结果,我不理解:

opengl - 为什么GL_LINES模糊?-LMLPHP

我尚未启用GL_LINE_SMOOTH和GL_SMOOTH(实际上已经禁用了)。如果这是全局的抗锯齿“功能”,那么它是否也应该影响GL_QUADS?

最佳答案

这是因为您传递的坐标介于两个像素之间。

对于四边形,像素之间的边界很好,并且可以为您提供漂亮的干净边缘。

对于线,像素之间的顶点会导致线的一半落在每条线上。例如,如果您使用的是glLineWidth(2),那么这将很好地工作(一半的线正好是一个像素,所以每一侧都只有一个像素)。对于glLineWidth(1),您两侧的像素都只有一半。

07-28 04:28