3

考虑以下代码:

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_LINES v GL_QUADS

我没有启用(实际上已经禁用)GL_LINE_SMOOTH 和 GL_SMOOTH。如果这是一个全局抗锯齿“功能”,它不应该也影响 GL_QUADS 吗?

哈普?

4

2 回答 2

5

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

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

对于线条,像素之间的顶点会导致一半的线条落在每个顶点上。例如,如果您使用的是glLineWidth(2),那么这将非常有效(一半的线正好是一个像素,所以两边正好有一个像素)。对于glLineWidth(1),您只能在任一侧获得半个像素。

于 2013-05-02T17:36:10.370 回答
1

如果你这样做呢?

glBegin(GL_LINES);
glVertex2f(100, 200.5f);
glVertex2f(300, 200.5f);
glEnd();
于 2013-05-02T17:39:04.573 回答