2010-07-31 2 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

+0

Большое спасибо за вашу помощь. Мне потребовалось много времени, чтобы решить эту проблему. –

0

Не может быть, что очки, которые вы нарисовали, черные и фон тоже? Вы пытались добавить эту строку в начало вашей функции отображения:

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

Смежные вопросы