1 / 13

OpenGL

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); // Способ вычисления углов зеркального отражения

skah
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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OpenGL Лекция 3 (03.10.2013)

  2. 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); // Выбор между односторонним и двухсторонним освещением Модель освещения

  3. 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); Включение освещения

  4. glShadeModel(GL_SMOOTH); // Освещение и цвет рассчитываются для каждой вершины и интерполируются (Default) glShadeModel(GL_FLAT); // Вся грань закрашивается с использованием цвета и освещенности, рассчитанных для ее первой вершины Тип расчета освещения

  5. 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(); Нормаль к поверхности

  6. 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) Положение лампы и направление света

  7. glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, 64); // Экспонента яркости от центра до края конуса glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 90); // Угловая ширина светового луча Параметры прожектора

  8. 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); // Интенсивность зеркального света Интенсивность света

  9. 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 (квадратичный фактор ослабления). Ослабление света

  10. glEnable (GL_COLOR_MATERIAL); // Учитывать цвет примитивов Материал может рассеивать, отражать и излучать свет. Свойства материала устанавливаются при помощи функции glMaterialfv(GLenumface, GLenumpname, GLtype* params) Первый параметр определяет грань, для которой устанавливаются свойства. Он может принимать одно из следующих значений: • GL_BACK задняя грань • GL_FONT передняя грань • GL_FRONT_AND_BACK обе грани Свойства материала

  11. Второй параметр функции 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. Свойства материала

  12. 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); Прозрачность

  13. 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

More Related