gluOrtho2D
定义二维正交投影矩阵。但它还将矩阵堆栈上的当前矩阵与正交投影矩阵相乘,并用乘积替换当前矩阵。
注意,在OpenGL固定函数管道中,所有矩阵操作都是这样工作的(除了
glPushMatrix
,
glPopMatrix
,
glLoadMatrix
和
glLoadIdentity
).
这意味着您必须用单位矩阵替换当前矩阵(
glLoadIdentity
),在应用正交投影矩阵之前:
glLoadIdentity();
gluOrtho2D(0, 500, 0, 500);
或者你会
gluOrtho2D
在主功能中启动主循环之前,只需执行一次:
gluOrtho2D(0, 500, 0, 500);
glutMainLoop();
由于调用了显示功能(
drawScene
)应连续使用本地控制变量,而不是修改
X1
和
Y1
:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, 500, 0, 500);
glClearColor(0.0, 0.0, 0.0, 0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0.0, 0.0);
//start bresenham algo
int x = X1, y = Y1;
glBegin(GL_LINES);
glVertex2f(100, 400);
glVertex2f(400, 100);
glEnd();
glBegin(GL_POINTS);
glVertex2f(x, Y1);
while(x <= X2) {
x ++;
if(pi < 0) {
glVertex2f(x, y);
}
else {
y ++
glVertex2f(x, y);
}
}
int flag = (pi >= 0);
pi = pi + 2*dely - 2*delx*flag;
glEnd();