2016-09-17 40 views
1

我在openGL中制作了一个C++代码来绘制七个顶点。我的示例代码如下:在openGL中绘制点时丢失了一些点

#include <GL/glut.h> 

void init2D(float r, float g, float b) 
{ 
    glClearColor(r, g, b, 0.0); 
    glMatrixMode(GL_PROJECTION); 
    gluOrtho2D(0.0, 200.0, 0.0, 150.0); 
    glPointSize(4.0); 
} 

void display(void) 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 
    glColor3f(1.0, 0.0, 0.0); 

    //draw two points 
    glBegin(GL_POINTS); 
    glVertex2i(30, 30); 
    glVertex2i(47, 76); 
    glVertex2i(76, 150); 
    glVertex2i(130, 240); 
    glVertex2i(300, 200); 
    glVertex2i(250, 50); 
    glVertex2i(60, 20); 
    glEnd(); 

    glFlush(); 
} 

void main(int argc, char *argv[]) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 
    glutInitWindowSize(500, 500); 
    glutInitWindowPosition(100, 100); 
    glutCreateWindow("points and lines"); 
    init2D(0.0, 0.0, 0.0); 
    glutDisplayFunc(display); 
    glutMainLoop(); 
} 

但是,当我运行的代码,我只得到他们4。代码中有什么错误?有没有显示所有点的方法?

回答

1
gluOrtho2D(0.0, 200.0, 0.0, 150.0); 

要设置你的投影,使得(0,0)映射到左下角,和(200,150)的右上角,因此

glVertex2i(130, 240); 
glVertex2i(300, 200); 
glVertex2i(250, 50); 

都在视图体积之外。

+0

我将如何使所有点可见? @derhass – user6843794

+0

@ user6843794:调整'gluOrtho2D()'调用,以便查看截锥体包含所有点。 – genpfault