2012-03-06 61 views
3

我正在練習從我的課本練習,但我無法得到我應該輸出的內容。OpenGL線條圖

以下是我有:

#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的一部分,它是一個額外的庫,所以我已經添加了一個標籤。 – 2012-03-06 12:03:54

+0

抱歉,錯過了。謝謝。 – 2012-03-06 12:04:37

回答

8

我也不是OpenGL的專家,但問題是你沒有設置視口到你的場景應該投影到哪裏。你應該初始化看起來有點像這樣:

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回答,但它並沒有解決我的問題。 – 2012-03-06 12:11:58

+2

我剛纔看到你也忘了glFlush你的渲染。 – Julian 2012-03-06 12:18:14

+2

thx,glFlush解決了我的問題。請修改您的帖子,以便我可以接受您的回答。 (爲他人) – 2012-03-06 12:19:52