Контрольная работа по предмету "Информатика, программирование"


Работа с цветом в библиотеке OpenGL

Приднестровский Государственный Университет


им. Т.Г.Шевченко


Контрольная работа №2


Тема: «Работа с цветом в библиотеке OpenGL».


Тирасполь, 2010 г.



1. Цель: Научиться работать с цветом, используя графическую библиотеку OpenGL.


2. Задача: Написать программу, отображающую:


1. квадрат, с меняющимся цветом, в зависимости от изменения градиентов (R,G,B).


2. треугольник, вершины которого имеют цвета (0. 1, 1), (1, 0, 1), (1, 1, 0).


3. прямоугольная полоса в виде спектра.


3. Методика решения: Строим поочередно данные фигуры, закрашивая соответствующими цветами.


Решение:


#include <GL/glut.h>


#include <stdlib.h>


#include <math.h>


GLint Width = 800, Height = 600;


GLdouble r = 0, g = 0, b = 0;


//Функция вырисовки на экране


voidDisplay()


{


glClearColor(1, 1, 1, 1);


glClear(GL_COLOR_BUFFER_BIT);


// квадрат, меняющий цвет


glBegin(GL_QUADS);


glColor3d(r, g, b);


glVertex2i(2, 10);


glVertex2i(2, 15);


glVertex2i(7, 15);


glVertex2i(7, 10);


glEnd();


//треугольник


glBegin(GL_TRIANGLES);


glColor3d(0, 1, 1);


glVertex2d(10, 10);


glColor3d(1, 0, 1);


glVertex2d(14, 15);


glColor3d(1, 1, 0);


glVertex2d(19, 10);


glEnd();


// полоска в виде спектра


glBegin(GL_QUAD_STRIP);


//красный


glColor3ub(255, 0, 0);


glVertex2d(2, 5);


glVertex2d(2, 7);


glVertex2d(3, 5);


glVertex2d(3, 7);


//оранжевый


glColor3ub(255, 128, 0);


glVertex2d(5, 5);


glVertex2d(5, 7);


//желтый


glColor3ub(255, 255, 0);


glVertex2d(7, 5);


glVertex2d(7, 7);


//зеленый


glColor3ub(0, 255, 0);


glVertex2d(9, 5);


glVertex2d(9, 7);


//голубой


glColor3ub(0, 255, 255);


glVertex2d(11, 5);


glVertex2d(11, 7);


//синий


glColor3ub(0, 0, 255);


glVertex2d(13, 5);


glVertex2d(13, 7);


//фиолетовый


glColor3ub(128, 0, 255);


glVertex2d(15, 5);


glVertex2d(15, 7);


glEnd();


glFinish();


}


//Функция вызывается при изменении размеров окна


void Reshape(GLint w, GLint h)


{


Width = w;


Height = h;


// устанавливаем размеры области отображения


glViewport(0, 0, w, h);


// отрографическая проекция


glMatrixMode(GL_PROJECTION);


glLoadIdentity();


glOrtho(0, 20, 0, 20, -1, 1);


glMatrixMode(GL_MODELVIEW);


glLoadIdentity();


}


// Функция обработки сообщений с клавиатуры


void Keyboard(unsigned char key, int x, int y)


{


#define ESCAPE '\033'


if (key == ESCAPE)


exit(0);


if (key == 'r')


r -= 0.05;


if (key == 'f')


r += 0.05;


if (key == 't')


g -= 0.05;


if (key == 'g')


g += 0.05;


if (key == 'y')


b -= 0.05;


if (key == 'h')


b += 0.05;


glutPostRedisplay();


}


// Главный цикл приложения


void main(int argc, char* argv[])


{


glutInit(&argc, argv);


glutInitDisplayMode(GLUT_RGB);


glutInitWindowSize(Width, Height);


glutCreateWindow("wtf");


glutDisplayFunc(Display);


glutReshapeFunc(Reshape);


glutKeyboardFunc(Keyboard);


glutMainLoop();


}



Результаты:




Не сдавайте скачаную работу преподавателю!
Данную контрольную работу Вы можете использовать для выполнения своих заданий.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :