Вопрос Рисование ImGui

Начинающий
Статус
Оффлайн
Регистрация
18 Авг 2023
Сообщения
3
Реакции[?]
1
Поинты[?]
1K
Почему ImGui рисует в {0,0} коорде, точнее в верхнем левом углу, хотя Pos другая?

code:
ImGui::Begin("imgui", 0, ImGuiWindowFlags_::ImGuiWindowFlags_NoResize | ImGuiWindowFlags_::ImGuiWindowFlags_NoTitleBar);
ImGuiWindow* window = ImGui::GetCurrentWindow();

ImVec2 pos = window->Pos;

ImDrawList* draw = ImGui::GetWindowDrawList();

printf("%.3f | %.3f\n", pos.x, pos.y);

draw->AddRectFilled(pos, ImVec2(200, 200), ImColor(255, 255, 255));

ImGui::End();
 
Пользователь
Статус
Оффлайн
Регистрация
26 Авг 2017
Сообщения
386
Реакции[?]
32
Поинты[?]
8K
Почему ImGui рисует в {0,0} коорде, точнее в верхнем левом углу, хотя Pos другая?

code:
ImGui::Begin("imgui", 0, ImGuiWindowFlags_::ImGuiWindowFlags_NoResize | ImGuiWindowFlags_::ImGuiWindowFlags_NoTitleBar);
ImGuiWindow* window = ImGui::GetCurrentWindow();

ImVec2 pos = window->Pos;

ImDrawList* draw = ImGui::GetWindowDrawList();

printf("%.3f | %.3f\n", pos.x, pos.y);

draw->AddRectFilled(pos, ImVec2(200, 200), ImColor(255, 255, 255));

ImGui::End();
Потому что в draw ты взял дравлист самого окна, которое находится в верхнем левом углу, его позицию ты не меняешь в коде, то есть по умолчанию оно 0, 0. Вот ты и рисуешь в позиции 0 0 прямоугольник 200 на 200. Чтобы рисовать относительно окна нужно ко всем размерам и позициям прибавлять позицию экрана
 
Похожие темы
Сверху Снизу