2012-03-06 20 views
3

私は教科書から練習を練習していますが、私は必要な出力を得ることができませんでした。ここでOpenGL Line Drawing

は私が持っているものです。

#include <math.h> 
#include <GLUT/glut.h> 
#include <OpenGL/OpenGL.h> 

//Initialize OpenGL 
void init(void) { 
    glClearColor(0.0,0.0,0.0,0.0); 
    glMatrixMode(GL_PROJECTION); 
    gluOrtho2D(0.0,300.0,0.0,300.0);  
} 

void drawLines(void) { 
    glClear(GL_COLOR_BUFFER_BIT); 
    glColor3f(0.0,0.4,0.2); 
    glPointSize(3.0); 

    glBegin(GL_LINES); 
    glVertex2d(180, 15); 
    glVertex2d(10, 145); 
    glEnd(); 
} 

int main(int argc, char**argv) { 
    glutInit(&argc, argv); 
    glutInitWindowPosition(10,10); 
    glutInitWindowSize(500,500); 
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 

    glutCreateWindow("Example"); 
    init(); 
    glutDisplayFunc(drawLines); 
    glutMainLoop(); 
} 

私は、コードのこの部分を実行すると、私は完全に空白の画面を取得します。

+0

glutはopenglの一部ではありません。余分なライブラリなので、これをタグとして追加しました。 –

+0

それを忘れて申し訳ありません。ありがとうございました。 –

答えて

8

私はOpenGLのエキスパートではありませんが、問題は、シーンを投影する場所にビューポートを設定していないことです。あなたのinitは次のようになります:

glClearColor(0, 0, 0, 0); 

glViewport(0, 0, 500, 500); 

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 

glOrtho(0, 500, 0, 500, 1, -1); 

glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 

また、glFlush();あなたの絵の後に。

void drawLines(void) { 
    ... 
    glFlush(); 
} 
+0

答えのためのthxしかしそれは私の問題を解決しなかった。 –

+2

私は、レンダリングをglFlushすることも忘れてしまったことを知りました。 – Julian

+2

thx、glFlushは私の問題を解決しました。私はあなたの答えを受け入れることができるようにあなたの投稿を編集してください。 (ほかの人のため) –