Cfyz писал(а):hexMer писал(а):В моём опенджиэле нет ф-и glBlendColor, добавил загрузку расширения.
glBlendcolor не нужен. OpenGL смешивает цвета по формуле
S * SF + D * DF, где
S и
D -- это смешиваемые цвета пикселей (который уже на экране и который сейчас выводится), а SF и DF -- коэффициенты, задаваемые в
glBlendFunc. Расширение GL_EXT_color_blend позволяет добавить в список возможных коэффициентов свой: GL_BLEND_COLOR. Однако фишка в том, что для правильного смешения цветов (с учетом цветов в картинке тайла; цвета тайла и альфы, выставленных через
glColor) достаточно
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);.
совершенно верно. у меня и не использовался. остался от старых экспериментов. теперь выкашено.
@Cfyz
увеличил интенсивность света и добавил его анимацию (теперь со временем меняется яркость). но, опятьже, пока не закончено. так как при расчете света, нужно учитывать вектор направления источника света и вектор направления на игрока (пока этого не делал). чтобы не видеть освещение стены с противоположной стороны. но на работе - нужно работать. позже добавлю проверку.
зы. пока, скорость смены интенсивности завязана на смену кадра анимации костра. частота в секундах вбита - в /map/level_map.cpp строка 145
интенсивность же света, от кадра и расстояния до источника, в /map/level_map.cpp строка 89
Код: Выделить всё
int ret=strength-distance-dynamic_tile->GetCurrentFrame();
можно попробовать такой вариант:
Код: Выделить всё
int ret=strength-distance-1+dynamic_tile->GetCurrentFrame()%2;
на самом деле, это номер материала "света", который назначается тайлу при рендере. может быть от 0 до 9.
функция, которая свет в текущем вьюпорте считает -
Код: Выделить всё
void CLevelMap::CalculateMapLight(/*int *light_array,*/ int left, int top, int width, int height)
в /map/level_map.cpp
но... вообще для костров? наверное, лучше так не делать... это бы прикольно смотрелась в качестве эффекта кратковременного мигания света в комноте, или эмуляции работы стартера ламп дневного света при включении.
Меня окружали милые, добрые люди... медленно сжимая кольцо