90 likes | 251 Views
OpenGL . Лекция 5 ( 2 4 .10.201 3 ). Туман. GLfloat fogColor [4]= {0.5f, 0.5f, 0.5f, 1.0f}; // Цвет тумана glClearColor (0.5f,0.5f,0.5f,1.0f); // Будем очищать экран, заполняя его цветом тумана . glEnable (GL_FOG); // Включает туман
E N D
OpenGL Лекция 5 (24.10.2013)
Туман • GLfloatfogColor[4]= {0.5f, 0.5f, 0.5f, 1.0f}; // Цвет тумана • glClearColor(0.5f,0.5f,0.5f,1.0f); // Будем очищать экран, заполняя его цветом тумана. • glEnable(GL_FOG); // Включает туман • glDisable(GL_FOG); // Выключает туман
Тип тумана • glFogi(GL_FOG_MODE, GLintparam); // Выбираем тип тумана GL_EXP- Обычный туман, заполняющий весь экран. Во многом он напоминает туман отдаленно, но легко справляется со своей работой даже на старых PC. GL_EXP2- Это следующий шаг после GL_EXP. Затуманит весь экран, за то придает больше глубины всей сцене. GL_LINEAR- Это лучший режим прорисовки тумана. Объекты выходят из тумана и исчезают в нем гораздо лучше.
Цвет и плотность тумана • glFogfv(GL_FOG_COLOR, fogColor); // Устанавливаем цвет тумана • glFogf(GL_FOG_DENSITY, 0.35f); // Насколько густым будет туман
Вспомогательная установка тумана • glHint(GL_FOG_HINT, GLenumhintval); • hintvalможет быть: GL_DONT_CARE, GL_NICEST или GL_FASTEST GL_DONT_CARE - позволяет OpenGL выбрать формулу для расчета тумана (по вершинам или по пикселям). GL_NICEST - Создает туман по пикселям (хорошо смотрится). GL_FASTEST - Вычисляет туман по вершинам (быстрее, но не так красиво)) .
Глубина тумана • glFogf(GL_FOG_START, 1.0f); // Глубина, с которой начинается туман • glFogf(GL_FOG_END, 5.0f); // Глубина, где туман заканчивается
Пример программы с туманом GLuintfogMode[]= { GL_EXP, GL_EXP2, GL_LINEAR }; GLuintfogfilter= 0; GLfloatfogColor[4]= {0.5f, 0.5f, 0.5f, 1.0f}; glClearColor(0.5f,0.5f,0.5f,1.0f); glEnable(GL_FOG); glFogi(GL_FOG_MODE, fogMode[fogfilter]); glFogfv(GL_FOG_COLOR, fogColor); glFogf(GL_FOG_DENSITY, 0.35f); glHint(GL_FOG_HINT, GL_DONT_CARE); glFogf(GL_FOG_START, 1.0f); glFogf(GL_FOG_END, 5.0f); // Рисованиеобъектов
Воспроизведение звука • BOOL PlaySound( LPCTSTR pszSound, HMODULE hmod, DWORD fdwSound); • pszSound • NULL => прекратить воспроизведение всех мелодий • Либо имя файла/ресурса/системного события/адрес памяти • fdwSound • SND_ALIAS => мелодия системного события • SND_FILENAME=> мелодия из файла • SND_RESOURCE => мелодия из ресурса exe • SND_MEMORY => взять мелодию из памяти
Воспроизведение звука • fdwSound • SND_ASYNC => асинхронное воспроизведение (не ждать окончания воспроизведения) • SND_SYNC=> синхронное воспроизведение (подождать окончания воспроизведения) • SND_LOOP=> воспроизведение в цикле • SND_PURGE=> остановить мелодию не из wav-файла • hmod • Handle файла, из которого брать мелодию (если воспроизводим из ресурсов) иначе NULL