2017-08-08 70 views
-1

線路未顯示。代碼有什麼問題?OpenGL中的顯示窗口和線段

#include<windows.h> 
//#ifdef __APPLE__ 
//#include <GLUT/glut.h> 
//#else 
#include <GL/glut.h> 
//#endif 
//#include <stdlib.h> 

void init(void){ 
    glClearColor(1.0, 1.0,1.0,0.0); 
    glMatrixMode(GL_PROJECTION); 
    gluOrtho2D(0.0, 200.0, 0.0,150.0); 
} 

void lineSegment(void){ 
    glClear(GL_COLOR_BUFFER_BIT); 
    glColor3f(1.0f, 0.0f, 0.0f);  // Red 

    //glColor3f(0.2, 0.4, 0.2); 
    glBegin(GL_LINE); 
    glVertex2i(180,15); 
    glVertex2i(10,145); 
    glEnd(); 
    glFlush(); 
} 


int main(int argc, char* argv[]){ 
    glutInit(&argc,argv); 
    glutInitDisplayMode(GLUT_DOUBLE); // Enable double buffered mode 
    //glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); 
    glutInitWindowPosition(50,100); 
    glutInitWindowSize(400,300); 
    glutCreateWindow("An example OpenGL Program"); 
    init(); 
    glutDisplayFunc(lineSegment); 
    glutMainLoop(); 
return 0; 
} 

回答

0
  • 你請求GLUT_DOUBLE緩衝的窗口,但未能在您glutDisplayFunc()回調結束調用glutSwapBuffers()glFlush()是不夠的。
  • GL_LINE對於glBegin()不是有效的參數。你正在考慮GL_LINES

一起:

#include <GL/glut.h> 

void init() 
{ 
    glClearColor(1.0, 1.0, 1.0, 0.0); 
    glMatrixMode(GL_PROJECTION); 
    gluOrtho2D(0.0, 200.0, 0.0, 150.0); 
} 

void lineSegment() 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 
    glColor3f(1.0f, 0.0f, 0.0f);  // Red 
    glBegin(GL_LINES); 
    glVertex2i(180, 15); 
    glVertex2i(10, 145); 
    glEnd(); 
    glutSwapBuffers(); 
} 

int main(int argc, char* argv[]) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_DOUBLE); // Enable double buffered mode 
    glutInitWindowSize(400, 300); 
    glutCreateWindow("An example OpenGL Program"); 
    init(); 
    glutDisplayFunc(lineSegment); 
    glutMainLoop(); 
    return 0; 
} 
+0

太感謝你了,它的工作原理。 –