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

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

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2012, 18:22   #1
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию OpenGL, проблема с освещением

В целом: есть плоскость, есть камера. Камера смотрит в определенную точку плоскости, её можно перемещать и вращать. Есть источник света, с синим ambient-light и белым diffuse-light. После многочисленных экспериментов выяснилось, что diffuse-свет распространяется только в сторону оси z, в независимости от свойств источника света.
Код:
Инициализация:

    glEnable(GL_LIGHTING);
    glEnable(GL_COLOR_MATERIAL);
    float lightAmbient[] = {0.0f, 0.0f, 0.5f, 1.0f};
    float lightDiffuse[] = {1, 1, 1, 1};
    glLightfv(GL_LIGHT1, GL_AMBIENT, lightAmbient);
    glLightfv(GL_LIGHT1, GL_DIFFUSE, lightDiffuse);
    glEnable(GL_LIGHT1);

При отрисовке:

    float lightPosition [] = {camera.X, 10.0f, camera.Z, 1.0f};
    float lightDirection [] = {1, -1, 0, 1.0};
    glLightfv(GL_LIGHT1, GL_POSITION, lightPosition);
    glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, lightDirection);

Видно, что диффузный только влево. Почему так?
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 03.06.2012, 19:20   #2
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
По умолчанию

пробуй float lightPosition [] = {camera.X, 10.0f, camera.Z, -1.0f};
Warn вне форума Ответить с цитированием
Старый 03.06.2012, 19:24   #3
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Так освещение только ambient и работает очень странным образом - перемещается в сторону, обратную камере.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 04.06.2012, 05:41   #4
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
По умолчанию

попробуй еще glShadeModel ( GL_SMOOTH );
у геометрии есть нормали?
Warn вне форума Ответить с цитированием
Старый 04.06.2012, 11:50   #5
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

glShadeModel(GL_SMOOTH) стоит
нормали автоматические glEnable(GL_AUTO_NORMAL);
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 04.06.2012, 13:03   #6
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

А у самого квадрата в вершинах цвета заданы?
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 04.06.2012, 13:27   #7
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

да, конечно. белый
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 05.06.2012, 10:36   #8
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
По умолчанию

Цитата:
нормали автоматические glEnable(GL_AUTO_NORMAL);
попробуй лучше ручками задать для каждой вершины квада нормаль
Warn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с освещением k3rn3l Gamedev - cоздание игр: Unity, OpenGL, DirectX 7 13.01.2011 21:34
Проблема с OpenGL mr-Brown Общие вопросы C/C++ 12 16.11.2010 16:59
Проблема с OpenGL _-Re@l-_ Общие вопросы Delphi 2 21.05.2010 13:07
проблема с OpenGL Willer Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 02.02.2010 14:12
Проблема с движком на OpenGL Granus Мультимедиа в Delphi 11 11.01.2010 15:45