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

2681
знак
0
таблиц
1
изображение

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

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

Контрольная работа №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;

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

void Display()

{

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();

}


Результаты:

for_second_lab.jpg


Информация о работе «Работа с цветом в библиотеке OpenGL»
Раздел: Информатика, программирование
Количество знаков с пробелами: 2681
Количество таблиц: 0
Количество изображений: 1

Похожие работы

Скачать
52592
2
3

... представляют собой числа с плавающей точкой. Наличие различных форматов позволяет библиотеке OpenGL принимать данные пользователя в его собственном формате данных. Некоторые команды библиотеки OpenGL допускают использование 8 различных типов данных в качестве своих параметров. Буквы, используемые в качестве суффиксов для того, чтобы определить эти типы данных для реализации ISO С библиотеки ...

Скачать
27990
3
11

... . Аналогична поверхность редко бывает окрашена равномерно: чаще на ней бывает какой либо узор. Реалистичность изображения можно повысить путем нанесения узора на поверхность. Само перечисление способов построения реалистичных изображений говорит о том, какой большой объем работы необходимо проделать, чтобы получить что-нибудь, в самом деле, стоящее. И это было бы действительно так если бы не ...

Скачать
41796
0
8

... , комментарии в формате XML. Переняв многое от своих предшественников — языков С++, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++) или вывода типов (реализовано в .NET Framework 3.0). C# ...

Скачать
129055
6
1

... согласно заданному алгоритму. Все ошибочные ситуации были рассмотрены, ошибки – устранены. 4. Применение программы 4.1 Назначение программы Программа предназначена для создания и редактирования сложных графических эффектов частиц. В процессе разработки была обеспечена реализация программой следующего набора функций: - управление динамическим набором эмиттеров (систем частиц); - ...

0 комментариев


Наверх