Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Вывод примитивов


Автор: student0511 20.4.2007, 00:58
Решил немного изучить OpenGL, с самых основ. До этого не сталкивался с графическими приложениями, вообщем, не работал даже с примитивами. Вот стало интересно. Возникла сразу же проблема: после инициализации OpenGL (использовал учебник "Графическая библиотека OpenGL", Юрий Баяковский, Игнатенко Алексей, Фролов Антон) решил начать с самого простого и нарисовать точку. Вроде всё сделал верно, но результат - обыкновенное окно, заполненное чёрным. 
Вот текст программки:
Код

#include <stdlib.h>
#include <gl/glut.h>

//íначал размер окна
GLint Width = 512, Height = 512;
// вывод точки на экран
void Display(void)
{

    glClearColor(0, 0, 0, 1);
    glClear(GL_COLOR_BUFFER_BIT);
    
    
    glBegin(GL_POINTS);
      glColor3f(1.0,0.0, 0.0);//red
      glVertex2f(0.0, 0.0);
    glEnd();

    glFinish();
}

// функция изм. окна
void Reshape(GLint w, GLint h)
{
    Width = w;
    Height = h;

    //oбл. отображения
    glViewport(0, 0, w, h);

    //ортографическая проекция
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, w, 0, h, -1.0, 1.0);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB);
    glutInitWindowSize(Width, Height);
    glutCreateWindow("Red square example");

    glutDisplayFunc(Display);
    glutReshapeFunc(Reshape);
    glutKeyboardFunc(Keyboard);

    glutMainLoop();
}

И что значат магические слова  smile : "...ортографическая проекция" ? (комменты взяты с учебника).

Автор: Rickert 20.4.2007, 05:14
Код

void Display(void)
{
    glClearColor(0, 0, 0, 1);
    glClear(GL_COLOR_BUFFER_BIT);
    glLookAt(4, 12, 4, 0, 0, 0, 0, 1, 0);
    
    glColor3f(1.0, 0.0,  0.0);//red
    glBegin(GL_POINTS);
      glVertex3f(0.0, 0.0);
    glEnd();
}

А так?

Автор: student0511 20.4.2007, 07:50
To Ricket
Неа, выдаёт ошибку: "error C2065: 'glLookAt' : undeclared identifier". Заменил на gluLookAt - ошибка исчезла, но ничего в результате не изменилось. 

Автор: Rickert 20.4.2007, 08:51
Ну да, это я неправильно имя написал. Без компилера для винды под рукой.
Я домой приду - проверю твой код. А вообще, почему ты всё через glut делаешь?
Иди в яндекс и пиши "Уроки NeHe". Первым же уроком всё поймёшь и разберёшься.

Автор: sgi1981 21.4.2007, 01:15
Чуть подправил код. Не тестировал.
Код

#include <stdlib.h>
#include <gl/glut.h>
//íначал размер окна
GLint Width = 512, Height = 512;
// вывод точки на экран
void Display(void)
{
    glClearColor(0, 0, 0, 1);
    glClear(GL_COLOR_BUFFER_BIT);
    
    
    glBegin(GL_POINTS);
      glColor3f(1.0,0.0, 0.0);//red
      glVertex2f(0.0, 0.0);
    glEnd();
    glFinish();
}
// функция изм. окна
void Reshape(GLint w, GLint h)
{
    Width = w;
    Height = h;
    //oбл. отображения
    glViewport(0, 0, w, h);
    //ортографическая проекция
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-w, w, -h, h, 1.0, -1.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}
main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB);
    glutInitWindowSize(Width, Height);
    glutCreateWindow("Red square example");
    glutDisplayFunc(Display);
    glutReshapeFunc(Reshape);
    glutKeyboardFunc(Keyboard);
    glutMainLoop();
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)