请考虑以下代码:
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();
导致以下结果,我不明白:
我没有启用(实际上已经禁用了)GL_LINE_SMOOTH和GL_SMOOTH。如果这是一个全局抗锯齿“功能”,它不应该影响GL_QUADS吗?
HALP?
答案 0 :(得分:5)
这是因为您传递了一个位于两个像素之间的坐标。
对于四边形,像素之间的边界很好,并为您提供干净的边缘。
对于线条,像素之间的顶点会导致每条线的一半落在线上。例如,如果你使用glLineWidth(2)
,那么这将非常有效(一半的线就是一个像素,因此任何一侧都只有一个像素)。对于glLineWidth(1)
,你只能获得半个像素。
答案 1 :(得分:1)
如果你这样做怎么办?
glBegin(GL_LINES);
glVertex2f(100, 200.5f);
glVertex2f(300, 200.5f);
glEnd();