2017-08-08 73 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

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