Гайд [ImGui] Starfield sex

Начинающий
Статус
Оффлайн
Регистрация
24 Авг 2016
Сообщения
41
Реакции[?]
82
Поинты[?]
0
По реквстам из конфы отдаю
Так сказатб вспомнил 1 тему на джаве и подумал что будет кайфово спастить её в софт.
Собственна вот гайд на джаве где за ~15 мин всё расписанно
а тут моя реализация на ImGui
class Star {
public:
float x;
float y;
float z;
float pz;
int Width = G::WindowSize.x;
int Height = G::WindowSize.y;
Star() {
x = rand() % (Width/2 - ((Width/2) * -1) + 1) - Width/2;
y = rand() % (Height/2 - ((Height / 2) * -1) + 1) - Height / 2;
z = rand() % Width;
pz = z;
}
~Star(){
x = NULL;
y = NULL;
z = NULL;
pz = NULL;
}
float map( float value, float start1, float stop1, float start2, float stop2) {
return start2 + (stop2 - start2) * ((value - start1) / (stop1 - start1));
}
void show(ImDrawList* draw_list) {
float sx = map(x / z, 0, 1, 0, Width);
float sy = map(y / z, 0, 1, 0, Height);
float radius = map(z, 0, Width, 4, 0.00001);
draw_list->AddCircleFilled(ImVec2(Width/2 - sx, Height/2 -sy), radius, ImWhite);
float px = map(x / pz, 0, 1, 0, Width);
float py = map(y / pz, 0, 1, 0, Height);
pz = z;
draw_list->AddLine(ImVec2(Width / 2 - px, Height / 2 -py), ImVec2(Width / 2 -sx, Height / 2 -sy), ImWhite, radius*2);
}
float speed = 0;
void update() {
if (!(speed > 10))
speed += 0.02;
z = z - speed;
if (z < 1)
{
z = Width;
x = rand() % (Width / 2 - ((Width / 2) * -1) + 1) - Width / 2;
y = rand() % (Height / 2 - ((Height / 2) * -1) + 1) - Height / 2;
pz = z;
}
}
};
#pragma region Starfield
static float opacity = 0.00001f;
G::WindowSize = io.DisplaySize;
bool assEn = true;
ImGui::SetNextWindowPos(ImVec2(0, 0));
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0);
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(0.f, 0.f, 0.f, opacity));
ImGui::SetNextWindowSize(G::WindowSize);
DWORD flags = ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize |
ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoInputs |
ImGuiWindowFlags_NoFocusOnAppearing | ImGuiWindowFlags_NoSavedSettings |
ImGuiWindowFlags_NoTitleBar;
if (opacity <= 1.f)
opacity += 0.002f;
ImGui::Begin("##Starfield", &assEn, flags);
ImDrawList* draw_list = ImGui::GetWindowDrawList();
for (size_t i = 0; i < 400; i++)
{
stars.update();
stars.show(draw_list);
}
ImGui::SetCursorPos(ImVec2(G::WindowSize.x/2 - 100, G::WindowSize.y/2-42));
ImGui::Image(tImage, ImVec2(200, 85));
ImGui::End();
ImGui::PopStyleColor();
ImGui::PopStyleVar();
#pragma endregion
Картинку грузим по ГАЙДУ от Крайслер
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
24 Авг 2016
Сообщения
41
Реакции[?]
82
Поинты[?]
0
Get good. Get Mercy.
Забаненный
Статус
Оффлайн
Регистрация
20 Мар 2018
Сообщения
340
Реакции[?]
144
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Можно такой бекграунд сделать для индиго? :roflanEbalo:
 
///
Пользователь
Статус
Оффлайн
Регистрация
25 Янв 2018
Сообщения
511
Реакции[?]
114
Поинты[?]
0
Можно такой бекграунд сделать для индиго? :roflanEbalo:
Это же для ИмГуя, если у тебя Индиго не ИмГуй, то нельзя!
По теме, на бэкграунд я так понял можно все что угодно поставить да?
 
Эксперт
Статус
Оффлайн
Регистрация
12 Июн 2014
Сообщения
991
Реакции[?]
1,209
Поинты[?]
3K
Это же для ИмГуя, если у тебя Индиго не ИмГуй, то нельзя!
Почему? чем ImGui отличается от чего либо другого в плане возможностей рендеринга?
Простая загрузка картинки(реализовать можно хоть на чем) и отрисовка линий = PROFIT!!!
 
Сверху Снизу