Opengl
This presentation is the property of its rightful owner.
Sponsored Links
1 / 13

OpenGL PowerPoint PPT Presentation


  • 97 Views
  • Uploaded on
  • Presentation posted in: General

OpenGL. Лекция 3 ( 03.10.2013). float ambient[4] = { 0.0, 0.0, 0.0, 1.0}; glLightModelfv (GL_LIGHT_MODEL_AMBIENT , ambient ); // RGBA интенсивность всей сцены glLightModelf (GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE); // Способ вычисления углов зеркального отражения

Download Presentation

OpenGL

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Opengl

OpenGL

Лекция 3 (03.10.2013)


Opengl

float ambient[4] = {0.0, 0.0, 0.0, 1.0};

glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);

// RGBA интенсивность всей сцены

glLightModelf(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE);

// Способ вычисления углов зеркального отражения

glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);

// Выбор между односторонним и двухсторонним освещением

Модель освещения


Opengl

glDepthFunc(GL_LESS);

glEnable(GL_DEPTH_TEST);

glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);

glEnable(GL_LIGHTING);

glDisable(GL_LIGHTING);

glEnable(GL_LIGHT0); … glEnable(GL_LIGHT7);

glDisable(GL_LIGHT0); … glDisable(GL_LIGHT7);

Включение освещения


Opengl

glShadeModel(GL_SMOOTH);

// Освещение и цвет рассчитываются для каждой вершины и интерполируются (Default)

glShadeModel(GL_FLAT);

// Вся грань закрашивается с использованием цвета и освещенности, рассчитанных для ее первой вершины

Тип расчета освещения


Opengl

glEnable(GL_NORMALIZE);

glBegin(GL_QUADS);

glNormal3f(0, 0, +1);

glVertex3f(-1, -1, -1);

glVertex3f(-1, +1, -1);

glVertex3f(+1, +1, -1);

glVertex3f(+1, -1, -1);

glEnd();

Нормаль к поверхности


Opengl

float light_position[] = {0.0, 0.0, 0.0,1.0};

glLightfv(GL_LIGHT1, GL_POSITION, light_position);

// Положение источника света (x, y, z, w)

float light_direction[] = {1.0, 0.0, 0.0};

glLightfv(GL_LIGHT1,GL_SPOT_DIRECTION,light_direction);

// Направление света прожектора (x, y, z)

Положение лампы и направление света


Opengl

glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, 64);

// Экспонента яркости от центра до края конуса

glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 90);

// Угловая ширина светового луча

Параметры прожектора


Opengl

float light_ambient[] = {0.04, 0.04, 0.04, 1.0};

glLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient);

// Интенсивность фонового света

float light_diffuse[] = {1.0, 0.85, 0.85, 1.0};

glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse);

// Интенсивность диффузного света

float light_specular[] = {0.5, 0.45, 0.45, 1.0};

glLightfv(GL_LIGHT1, GL_SPECULAR, light_specular);

// Интенсивность зеркального света

Интенсивность света


Opengl

glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.0);

glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.3);

glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.0);

Fatt = 1 / (Kc + Kl * d + Kq * (d * d))

где:d — расстояние между позицией источника света и экраном,Kc — GL_CONSTANT_ATTENUATION (постоянный фактор ослабления),Kl — GL_LINEAR_ATTENUATION (линейный фактор ослабления),Kq — GL_QUADRATIC_ATTENUATION (квадратичный фактор ослабления).

Ослабление света


Opengl

glEnable (GL_COLOR_MATERIAL);

// Учитывать цвет примитивов

Материал может рассеивать, отражать и излучать свет. Свойства материала устанавливаются при помощи функции

glMaterialfv(GLenumface, GLenumpname, GLtype* params)

Первый параметр определяет грань, для которой устанавливаются свойства. Он может принимать одно из следующих значений:

  • GL_BACK задняя грань

  • GL_FONT передняя грань

  • GL_FRONT_AND_BACK обе грани

Свойства материала


Opengl

Второй параметр функции glMaterialfv определяет свойство материала, которое будет установлено, и может принимать следующие значения.

  • GL_AMBIENT рассеянный свет

  • GL_DIFFUSE тоже рассеянный свет

  • GL_SPECULAR отраженный свет

  • GL_EMISSION излучаемый свет

  • GL_SHININESS степень отраженного света

  • GL_AMBIENT_AND_DIFFUSE оба рассеянных света

    Ambientи diffuse переводятся на русский как "рассеянный". Разница между ними не очень понятна. Третий параметр определяет цвет соответствующего света, кроме случая GL_SHININESS. Цвет задается в виде массива из четырех элементов - RGBA. В случае GL_SHININESS params указывает на число типа float, которое должно быть в диапазоне от 0 до 128.

Свойства материала


Opengl

glEnable(GL_ALPHA_TEST);

glEnable(GL_BLEND);

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

// glBlendFunc(GL_SRC_ALPHA, GL_ONE);

glColor4f(1, 1, 1, 0.75);

Прозрачность


Glblendfunc

void glBlendFunc(GLenumsfactor, GLenumdfactor);

sfactor

Specifies how the red, green, blue, and alpha source blending factors are computed. The following symbolic constants are accepted:

GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR, GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA, and GL_SRC_ALPHA_SATURATE.

The initial value is GL_ONE.

dfactor

Specifies how the red, green, blue, and alpha destination blending factors are computed. The following symbolic constants are accepted:

GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA. GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR, GL_CONSTANT_ALPHA, and GL_ONE_MINUS_CONSTANT_ALPHA.

The initial value is GL_ZERO.

glBlendFunc


  • Login