Перейти на главную   
  helloworld.ru - документация и книги по программированию  
helloworld.ru - документация и книги по программированию
    главная     хостинг    
Поиск по сайту:  
Смотрите также
Языки программирования
C#
MS Visual C++
Borland C++
C++ Builder
Visual Basic
Quick Basic
Turbo Pascal
Delphi
JavaScript
Java
PHP
Perl
Assembler
AutoLisp
Fortran
Python
1C

Интернет-технологии
HTML
VRML
HTTP
CGI
FTP
Proxy
DNS
протоколы TCP/IP
Apache

Web-дизайн
HTML
Дизайн
VRML
PhotoShop
Cookie
CGI
SSI
CSS
ASP
PHP
Perl

Программирование игр
DirectDraw
DirectSound
Direct3D
OpenGL
3D-графика
Графика под DOS

Алгоритмы
Численные методы
Обработка данных

Сис. программирование
Драйверы

Базы данных
MySQL
SQL

Другое

Хостинг


Друзья
demaker.ru
Реклама

Лучший хостинг. Аренда серверов




helloworld.ru

Цвет


 Каждый пиксел на экране имеет 3 составляющих - R, G, B .
Информация о пикселах может быть записана в 2 режимах - RGBA mode или
color-index mode , в котором цвет представлен единственным числом .
Таблица со значениями индексов называется color map . Изменять значения
в этой таблице во время работы приложения нельзя , во всяком случае
с использованием GLUT .
 Каждый пиксел занимает определенное количество памяти для хранения
информации о его цвете . Память для хранения пикселов называется
color buffer . 8-битовый буффер отводит на каждый пиксел по 8 бит -
это 256 цветов .
 Команды для определения цвета просты :

glColor3f (1.0, 0.0, 0.0);
glBegin (GL_POINTS);
    glVertex3fv (point_array);
glEnd ();

 После того , как дисплей установлен в один из режимов  RGBA mode или
color-index , в дальнейшем он не может быть изменен .
 Для того , чтобы каждый обьект был нарисован своим цветом , использцйте примерно
такую схему :

set_color(RED);
draw_item(A);
draw_item(B);
set_color(GREEN);
set_color(BLUE);
draw_item(C);

 Цвет устанавливается командой glColor() , которая указывает численные значения для
цветовых составляющих или указывает на цветовой массив :

void glColor3 (TYPEr, TYPEg, TYPEb);
void glColor4 (TYPEr, TYPEg, TYPEb, TYPEa);
void glColor3 (const TYPE*v);
void glColor4 (const TYPE*v);

 Полигон может быть нарисован единственным цветом (flat shading) или с оттенками
(smooth shading или Gouraud shading). Шадинг устанавливается командой glShadeModel()
с  параметром . По умолчанию стоит параметр GL_SMOOTH   .
При шадинге цвет каждой вершины индивидуален , при прорисовке линии цвет
интерполируется между вершинами .

 Следующий пример рисует smooth-shaded треугольник (GLUT) :

#include < GL/gl.h >
#include < GL/glut.h >

void init(void)
{
   glClearColor (0.0, 0.0, 0.0, 0.0);
   glShadeModel (GL_SMOOTH);
}

void triangle(void)
{
   glBegin (GL_TRIANGLES);
   glColor3f (1.0, 0.0, 0.0);
   glVertex2f (5.0, 5.0);
   glColor3f (0.0, 1.0, 0.0);
   glVertex2f (25.0, 5.0);
   glColor3f (0.0, 0.0, 1.0);
   glVertex2f (5.0, 25.0);
   glEnd();
}

void display(void)
{
   glClear (GL_COLOR_BUFFER_BIT);
   triangle ();
   glFlush ();
}

void reshape (int w, int h)
{
   glViewport (0, 0, (GLsizei) w, (GLsizei) h);
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
   if (w <= h)
      gluOrtho2D (0.0, 30.0, 0.0, 30.0*(GLfloat) h/(GLfloat) w);
   else
      gluOrtho2D (0.0, 30.0*(GLfloat) w/(GLfloat) h, 0.0, 30.0);
   glMatrixMode(GL_MODELVIEW);
}

int main(int argc, char** argv)
{
   glutInit(&argc, argv);
   glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
   glutInitWindowSize (500, 500);
   glutInitWindowPosition (100, 100);
   glutCreateWindow (argv[0]);
   init ();
   glutDisplayFunc(display);
   glutReshapeFunc(reshape);
   glutMainLoop();
   return 0;
}



[ Назад | Оглавление ]










helloworld.ru © 2001-2021
Все права защищены