на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Работа с цветом в библиотеке OpenGL

Работа с цветом в библиотеке 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;

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

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

}

Результаты:



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.