2010-07-31 58 views
1

我想用下面的OpenGL來畫點,但它只顯示一個黑色的窗口。有人能告訴我什麼是錯誤?點在OpenGL中不顯示

#include "stdafx.h" 

#include <gl/GL.h> 
#include <gl/GLU.h> 
#include <gl/glut.h> 

void init(void) 
{ 
    glClearColor(0.0,0.0,0.0,0.0); 

    glColor3f(1.0,0,1.0); 
    glPointSize(10); 
    //glShadeModel(GL_FLAT); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    gluOrtho2D (0.0,0.0,400, 150); 
} 

void display(void) 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 
    float pointSize = 5; 
    glPointSize(10); 
    glBegin(GL_POINTS); // render with points 
    glVertex2i(50,40); //display a point 
    glEnd(); 
    glFlush(); 
} 

void reshape(int w,int h) 
{ 
    glViewport(0,0,(GLsizei)w,(GLsizei)h); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(0.0,(GLdouble)w,0.0,(GLdouble)h,-1.0,1.0); 
} 

int _tmain(int argc, char* argv[]) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); 
    glutInitWindowPosition(100, 100); 
    glutInitWindowSize(400, 150); 
    glutCreateWindow("Draw Simple Object"); 
    init(); 
    glutDisplayFunc(display); 
    glutMainLoop(); 
    return 0; 
} 

回答

1

您傳遞給gluOrtho2d的參數看起來不對。訂單是左,右,上,下。您已將左右兩側設置爲0.0。根據你的glutInitWindowSize電話,我猜你想要的是類似gluOrtho2d(0.0, 400.0, 0.0, 150.0);(或者可能是gluOrtho2d(0.0, 400.0, 150.0, 0.0);)。

+0

對,這應該使它工作。好的工作發現! – Rekin 2010-07-31 16:01:10

+0

非常感謝您的幫助。我花了很多時間來解決它。 – 2010-07-31 16:06:19

0

難道你畫的點是黑色的,背景也是? 您是否嘗試將此線添加到顯示功能的開頭:

glClearColor(1.0f,1.0f,1.0f,1.0f);