Плавное затемнение

alive forever
Забаненный
Статус
Оффлайн
Регистрация
21 Июн 2017
Сообщения
663
Реакции[?]
400
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Для маслят.
Рисуем тем,чем хотим (игрой,собственным рендером,гуи рендером)
Показываю пример с Гуи Рендером :
Объявляем переменную
Код:
       static float Alpha= 0.0f;
Дальше делаем условие :
Код:
if (Alpha< 0.65f)
                Alpha+= 0.005f;
Далее рисуем бокс (ПЕРЕД РИСОВКОЙ МЕНЮ):
Код:
_drawList->AddRectFilled(ImVec2(0, 0), ImVec2(screenWidthX, screenHeightY), ImGui::GetColorU32(ImVec4(0.0f, 0.0f, 0.0f, Alpha)));
 
В игре Source SDK
Забаненный
Статус
Оффлайн
Регистрация
10 Янв 2017
Сообщения
2,148
Реакции[?]
806
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Для маслят.
Рисуем тем,чем хотим (игрой,собственным рендером,гуи рендером)
Показываю пример с Гуи Рендером :
Объявляем переменную
Код:
       static float Alpha= 0.0f;
Дальше делаем условие :
Код:
if (Alpha< 0.65f)
                Alpha+= 0.005f;
Далее рисуем бокс (ПЕРЕД РИСОВКОЙ МЕНЮ):
Код:
_drawList->AddRectFilled(ImVec2(0, 0), ImVec2(screenWidthX, screenHeightY), ImGui::GetColorU32(ImVec4(0.0f, 0.0f, 0.0f, Alpha)));
Сработает только 1 раз, т.к. ты не обнуляешь переменную после закрытия.
 
В игре Source SDK
Забаненный
Статус
Оффлайн
Регистрация
10 Янв 2017
Сообщения
2,148
Реакции[?]
806
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Последнее редактирование:
alive forever
Забаненный
Статус
Оффлайн
Регистрация
21 Июн 2017
Сообщения
663
Реакции[?]
400
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Не думаю. Такое обычно делается для меню и смысла один раз выполнять данную операцию не вижу смысла.
Я просто забыл добавить это ,ибо писал на скорую руку.
В софте все у меня обнуляется)
 
Забаненный
Статус
Оффлайн
Регистрация
2 Фев 2018
Сообщения
15
Реакции[?]
3
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
пропиши перед циклом Alpha=0.0 чтобы фон не все время черным был
 
Последнее редактирование:
ɪɴ ᴀ ʏᴇᴀʀ ᴜ'ʟʟ ʀᴇɢʀᴇᴛ ᴛʜᴀᴛ ʏᴏᴜ ᴅɪᴅn'ᴛ sᴛᴀʀᴛ ᴛᴏᴅᴀʏ
Пользователь
Статус
Оффлайн
Регистрация
15 Мар 2017
Сообщения
528
Реакции[?]
126
Поинты[?]
0
пропиши перед циклом Alpha=0.0 чтобы фон не все время черным был
Уже было сказано выше,что нужно просто обнулить переменную после закрытия меню. Не аппай тему,окда?
 
Начинающий
Статус
Оффлайн
Регистрация
10 Май 2019
Сообщения
36
Реакции[?]
5
Поинты[?]
0
Как отрисовать - нашёл, а вот как найти разрешение экрана - не смог. То ли я тупой, то ли лыжи не едут...

UPD: Нашёл:

C++:
    int screenWidthX = GetSystemMetrics(SM_CXSCREEN);
    int screenHeightY = GetSystemMetrics(SM_CYSCREEN);
 
Последнее редактирование:
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
Как отрисовать - нашёл
Не используй это, идея что описал тс просто мусор, он добавляет коэффциент каждый кадр, таким образом эта "анимация" будет работать быстрее при большем фпс и медленее при меньшем. Вместо этого нужно отталкиваться от времени.
 
Начинающий
Статус
Оффлайн
Регистрация
10 Май 2019
Сообщения
36
Реакции[?]
5
Поинты[?]
0
Не используй это, идея что описал тс просто мусор, он добавляет коэффциент каждый кадр, таким образом эта "анимация" будет работать быстрее при большем фпс и медленее при меньшем. Вместо этого нужно отталкиваться от времени.
Я уже понял это
 
ставь чайник, зажигай плиту
Эксперт
Статус
Оффлайн
Регистрация
22 Май 2020
Сообщения
1,444
Реакции[?]
1,092
Поинты[?]
10K
Не используй это, идея что описал тс просто мусор, он добавляет коэффциент каждый кадр, таким образом эта "анимация" будет работать быстрее при большем фпс и медленее при меньшем. Вместо этого нужно отталкиваться от времени.
в чём смысл называть это мусором, когда это самое простейшее?
это называется не коэффицент, а константа:
Данное условие срабатывает при новом фрейме, и прибавляется константное значение

Для нормальной анимации нужно использовать что-то вроде этого:
alpha += ImGui::GetIO().DeltaTime * 3.f;
 
Сверху Снизу