2017-08-08 5 views
-1

La ligne n'apparaît pas. Quel est le problème avec le code?Fenêtre d'affichage et segment de ligne dans 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; 
} 

Répondre

0
  • Vous vous demandez une GLUT_DOUBLE fenêtre -buffered mais ne parviennent pas à appeler glutSwapBuffers() à la fin de votre rappel glutDisplayFunc(). glFlush() n'est pas suffisant.
  • GL_LINE n'est pas un argument valide pour glBegin(). Vous pensez à GL_LINES.

Tous ensemble:

#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

Merci beaucoup, cela fonctionne. –