有什么线索为什么不显示线条吗?

问题描述 投票:0回答:1

我是 OpenGL 新手,我正在尝试学习基础知识。有什么线索为什么这段代码不画两条线吗?

void renderScene(void) {
    glMatrixMode(GL_PROJECTION);    
    glOrtho(0.0, 1000, 0.0, 1000, 0, 0);   
    glClearColor(0,0,0.5,0);
    glClear(GL_COLOR_BUFFER_BIT); 
    glColor3f(1,1,1); 
    glBegin(GL_LINES);   
    glVertex2i(10, 70); 
    glVertex2i(900, 70);
    glVertex2i(500, 700);
    glVertex2i(500, 10);
    glEnd();    
    glutSwapBuffers();
    glFlush();
}
opengl
1个回答
0
投票

glOrtho
并不是简单地设置一个矩阵,而是将当前矩阵乘以新的正交投影矩阵。由于OpenGL是一个状态引擎,矩阵是跨帧保存的,所以矩阵是逐渐改变的。您必须先加载单位矩阵,然后才能使用
glLoadIdentity
:

定义投影矩阵
glMatrixMode(GL_PROJECTION);  
glLoadIdentity();   
glOrtho(0.0, 1000, 0.0, 1000, 0, 0);   
© www.soinside.com 2019 - 2024. All rights reserved.