Рисуем с помощью примитивов OPENGL
1. Звездное небо
#include <stdlib.h>
#include <GL/glut.h>
void Display() {
glClear(GL_COLOR_BUFFER_BIT);
//черный фон
glColor3f(1.0, 1.0, 1.0);
//Определяем примитив
glBegin(GL_POINTS);
for (int i=0;i<100;i++)
//сто белых точек со случайными координатами от 0 до 100
glVertex2f(rand()%100, rand()%100);//координаты точки
glEnd();
glFlush();
}
void Initialize() {
//черный фон
glClearColor(0.0, 0.0, 0.0, 1.0);
//создаем двумерную проекцию
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 100.0, 0.0, 100.0);
}
int main(int argc, char ** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(800, 600);
glutInitWindowPosition(100, 200);
glutCreateWindow("GLUT CREATE STARS");
glutDisplayFunc(Display);
Initialize();
glutMainLoop();
return 0;
}
В следующей таблице указаны типы примитивов
2. Рисуем треугольник
#include <stdlib.h>
#include <GL/glut.h>
void Display() {
glClear(GL_COLOR_BUFFER_BIT);
//черный фон
glColor3f(1.0, 1.0, 1.0);
//Определяем примитив
glBegin(GL_TRIANGLES);
glVertex2f(90, 10);
glVertex2f(10, 10);
glVertex2f(50, 90);
glEnd();
glFlush();
}
void Initialize() {
//черный фон
glClearColor(0.0, 0.0, 0.0, 1.0);
//создаем двумерную проекцию
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 100.0, 0.0, 100.0);
}
int main(int argc, char ** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(800, 600);
glutInitWindowPosition(100, 200);
glutCreateWindow("GLUT CREATE STARS");
glutDisplayFunc(Display);
Initialize();
glutMainLoop();
return 0;
}
3. Раскрашиваем треугольник
#include <stdlib.h>
#include <GL/glut.h>
void Display() {
glClear(GL_COLOR_BUFFER_BIT);
//черный фон
glColor3f(1.0, 1.0, 1.0);
//Определяем примитив
glBegin(GL_TRIANGLES);
//Задаем цвет каждой вершине
glColor3f(1,0,0);
glVertex2f(90, 10);
glColor3f(1,1,0);
glVertex2f(10, 10);
glColor3f(1,0,1);
glVertex2f(50, 90);
glEnd();
glFlush();
}
void Initialize() {
//черный фон
glClearColor(0.0, 0.0, 0.0, 1.0);
//создаем двумерную проекцию
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 100.0, 0.0, 100.0);
}
int main(int argc, char ** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(800, 600);
glutInitWindowPosition(100, 200);
glutCreateWindow("GLUT TRIANGLE");
glutDisplayFunc(Display);
Initialize();
glutMainLoop();
return 0;
}
Для самостоятельной работы:
1. Напишите программу используя 3-4 примитива для рисования.
2. Нарисуйте в программе самолет.