Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2015, 03:22   #1
Lamia
Пользователь
 
Регистрация: 24.08.2014
Сообщений: 15
По умолчанию OpenGL, освещение, странные блики при удалении сцены

Здравствуйте. При задании освещения сцены и параметров отражения материала, а затем удалении сцены с помощью glScalef появляется странное свечение вместо того, "как должно быть" из-за чего это может быть? На первой картинке "как должно быть", то есть с небольшим бликом, а на второй с расширившимся бликом из-за уменьшения сцены.
Параметры света:
Код:
GLfloat Pos[4] = { 0, 3, 0, 0 };
        glLightfv(GL_LIGHT0, GL_POSITION, Pos);

        GLfloat Diffuse[4] = { 0.3, 0.3, 0.3, 1.0 };
        glLightfv(GL_LIGHT0, GL_DIFFUSE, Diffuse);

        GLfloat Ambient[4] = { 0.5, 0.5, 0.5, 1.0 };
        glLightfv(GL_LIGHT0, GL_AMBIENT, Ambient);

        GLfloat Specular[4] = { 0.9, 0.9, 0.9, 1.0 };
        glLightfv(GL_LIGHT0, GL_SPECULAR, Specular);
Параметры сферы:
Код:
 glDisable(GL_COLOR_MATERIAL);
      float dif[4] = { 0.3, 0.3, 0.3, 1.0 };
      float amb[4] = { 0.5, 0.5, 0.5, 1.0 };
      float spec[4] = { 0.9, 0.9, 0.9, 1.0 };
      float emi[4] = { 0.0, 0.0, 0.0, 1.0 };
      float sh = 15;
    glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, dif);
    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, amb);
    glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, spec);
    glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, emi);
    glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, sh);
включенные режимы:
Код:
glEnable(GL_DEPTH_TEST);
        glEnable (GL_POINT_SMOOTH);
        glEnable(GL_ALPHA_TEST);
        glEnable(GL_BLEND);
        glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) ;
Пробовал выносить источник света перед glScale. Не помогло.
Изображения
Тип файла: jpg 1.jpg (27.6 Кб, 40 просмотров)
Тип файла: jpg 2.jpg (23.5 Кб, 34 просмотров)
Lamia вне форума Ответить с цитированием
Старый 25.01.2015, 18:34   #2
Lamia
Пользователь
 
Регистрация: 24.08.2014
Сообщений: 15
По умолчанию

Нужно было включить нормализацию вектора нормали. glEnable(GL_NORMALIZE);
Lamia вне форума Ответить с цитированием
Старый 25.01.2015, 22:30   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Lamia, скорее всего, в скором времени вы решите уйти от устаревшего фиксированного конвейера в пользу программируемого. И возможно в качестве фреймворка выберете Qt. Вот мой пример на современный лад: Пример загрузки текстурного куба (Qt, OpenGL ES, Blender, Assimp, diffuse освещение)

Намного удобнее рисовать объекты в Blender'е, текстуры редактировать в GIMP'е, накладывать текстуры в том же Blender'е, экспортировать модель, например, в *.obj файл, а загружать модель в программу с помощью Assimp (загружает многие форматы). Все эти инструменты бесплатные. Они экономят время и облегчают труд. Желаю успехов!
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
opengl - как добавить освещение при полном фоновом свете? Зойберг Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 21.11.2014 20:00
OpenGl. (Delphi). Освещение novicepro Помощь студентам 0 02.05.2012 21:03
Освещение в OpenGL _PROGRAMM_ Gamedev - cоздание игр: Unity, OpenGL, DirectX 18 29.12.2011 17:29
OpenGL - освещение Артэс Общие вопросы C/C++ 0 12.10.2011 20:46
OpenGL, освещение loozer Мультимедиа в Delphi 3 17.12.2008 19:09