GameDev :: OpenGL @ Урок 2

Урок 2. За работу:

Вы уже знаете, что такое OpenGL (во всяком случае, в прошлом уроке я об этом писал :). В этом уроке мы подготовим наш компилятор к работе с OpenGL. Использовать мы будем Visual C++ 6.

Для того, чтобы все работало нужно иметь несколько библиотек OpenGL, у вас они и так есть, кроме одной. Называется эта библиотека GLUT. Как раз ее мы и будем использовать для работы с окнами. Загрузить эту библиотеку вы сможете здесь (размер 93 кб).

Теперь разархивируйте файлы mui32.lib и glut32.lib в папку Lib, где у вас установлен Visual C++ (скорее всего: C:\Program Files\Microsoft Visual Studio\VC98\Lib). Файл glut.h поместите в папку Include\GL (C:\Program Files\Microsoft Visual Studio\VC98\Include\GL\), a glut32.dll в папку C:\Windows\System. На этом с установкой библиотеки закончили.

Сейчас настроем сам Visual C++.

Откройте Visual C++ и создайте приложение Win32 Console Application.
Теперь нажмите Build\Set Active Configuration, и выберите Win32 Release. Затем, выберите Project\Setting и перейдите на вкладку Link. В строке Object\library modules: допишите следующие библиотеки:
opengl32.lib glu32.lib glaux.lib glut32.lib.

И последнее, нажмите Tools\Options в появившемся окне перейдите на вкладку Directories. В поле Show Directories for: укажите include files и в нижнем окне добавьте такую строку: c:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\INCLUDE\GL.
Вот и все. С настройками компилятора закончили. Будут проблемы- пишите.

Итак, то что мы сегодня сделаем, мы будем использовать во всех будущих приложениях (это будет как бы шаблон для остальных программ). Этот урок будет один из самых сложных. Если вы не разберетесь в этом уроке, то вам будет дальше все труднее и труднее, так что с любыми вопросами по этому уроку обращайтесь ко мне.


Давайте сейчас рассмотрим из чего состоит приложение, написанное на OpenGL. Для работы с окнами мы будем использовать в наших приложениях, как я уже говорил, библиотеку GLUT.
Первым делом нам нужно инициализировать (подготовить для работы) библиотеку OpenGL. Функция main() включает вызовы функций GLUT, с помощью которых мы можем устанавливать параметры окна. Также в фукцию main() мы должны включить функцию Display, с помощью который мы и будем рисовать.
Вот пример функции main():

void main(int argc,char** argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    glutInitWindowSize(400,500);
    glutInitWindowPosition(0,0);
    glutCreateWindow("OpenGL first");
    glutDisplayFunc(Display);
    glutMainLoop();
}

Теперь давайте разберем каждую строчку. Начнем с первой,
glutInit(&argc,argv) Это функция- инициализация. Эта функция проводит необходимые начальный действия по созданию окна.
glutInitDisplayMode(int Mode) С помощью этой функции устанавливаются необходимые режимы отображения информации, которые можно использовать совместно с помощью операции побитового ИЛИ |. Для начала рассмотрим самые необходимые нам пока что режимы:

  • GLUT_RGB Режим RGB. Используется по умолчанию.
  • GLUT_SINGLE Окно с одиночным буфером. Этот режим используется также по умолчанию.
  • GLUT_DOUBLE Окно с двойным буфером.
  • GLUT_DEPTH Окно с буфером глубины.
    Следующая функция у нас идет glutWindowSize(400,500). С ее помощью мы определяем размер нашего окна (в данном случае 400- ширина, 500- высота). Размер задается в пикселях.
    Место, где будет расположено окно (левый верхний угол окна) мы задаем функцией glutWindowPosition(int x, int y). А теперь мы должны создать само окно. Это делается с помощью glutCreateWindow(string), где в скобках мы пишем заглавие окна.
    Функция glutDisplayFunc(название) определяет функцию, в которой мы и будем рисовать, и т.д. В качестве параметра вы должны указать имя вашей функции. Например, вы написали функцию:
    void MyDisplay(void)
    {
    \\что-то
    }

    Тогда наша функция будет иметь вид: glutDisplayFunc(MyDisplay), то есть мы будем рисовать в функции MyDisplay. Контроль всех событий происходит внутри бесконечного цикла glutMainLoop(void).
    Вот сообственно и все! Теперь давайте посмотрим полный листинг нашей программы:

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

    void Display(void)
    {

    }

    void main(int argc,char **argv)
    {
        glutInit(&argc,argv);
        glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
        glutInitWindowSize(400,500);
        glutInitWindowPosition(0,0);
        glutCreateWindow("OpenGL Lesson2");
        glutDisplayFunc(Display);
        glutMainLoop();
    }

    Как вы видите, у нас создалось "прозрачное" некрасивое окно. Как поменять его цвет, и многое другое вы узнаете в следующем уроке!
    Alex Salo

    Навигация
    Назад | Список уроков | Вперед
  • Используются технологии uCoz