Продолжим изучение fullscreen OpenGL ;)
Надеюсь, что вы успешно преодолели предыдущий шаг и сделали скелет приложения. (надо отметить, что с точки зрения синтаксических ошибок он самый сложный)
Теперь я не буду полностью приводить весь код (его много и он повторяется), а буду приводить отдельные функции или, если они большие, то буду указывать, что и куда добавить.
Итак в этом шаге мы будем рисовать треугольничек и квадратик. Опять создайте новый проект Win32. Скопируйте туда файл skeleton.cpp и переименуйте его. Настройте проект (т.е. добавьте библиотеки). Замените имя окна и имя класса окна ( это так, приличия ради )
Все, что мы будем делать в этом шаге - это дополним функцию Draw();
GLvoid Draw(GLvoid) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(-1.5f, 0.0f, -5.0f); // модифицируем текущую матрицу ( которая в данный момент единичная). // Посмотрите MSDN по этой функции. Мы будем постоянно ее использовать // ( и функция glRotatef(:) в пре с ней ). Понимание матричных // операций и их реализацию в OpenGL - это ключ к победе. // Главное помнить, что все построения в OpenGL происходят // относительно текушей матрицы (той, которая находится на вершине // матричного стека, но это я забегаю вперед ) glBegin(GL_TRIANGLES); // Начинаем рисовать треугольник glVertex3f( 0.0f, 1.0f, 0.0f); // Top glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right glEnd(); glLoadIdentity(); // Приводим текущую матрицу в единичную ( попробуйте // закомментировать эту строку, получите квадрат, отстоящий // от треугольника на -5.0 ;) Что ж, как говорится: "Учите мат. часть, // товарищ курсант" ) glTranslatef(1.5f, 0.0f, -5.0f); glBegin(GL_QUADS); // Рисуем квадратик glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left glEnd(); }
Вот и все. В следующем шаге мы их покрасим ;)