2017-08-08 7 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 -bufferedウィンドウを要求しているが、あなたのglutDisplayFunc()、コールバックの終わりにglutSwapBuffers()を呼び出すために失敗しています。 glFlush()で十分ではありません。
  • GL_LINEglBegin()の有効な引数ではありません。あなたは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

は、それが動作します、ありがとうございました。 –

関連する問題