Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как нарисовать круг на ImGui Opengl, что бы когда менб закрывается он не исчезал?

Боб Бобриков Ученик (118), на голосовании 4 месяца назад
Нужно добавить Draw Fov в аппликацию, сам фов с аимботом свяжу сам.
Голосование за лучший ответ
Chromatic Scale Искусственный Интеллект (207021) 5 месяцев назад
Чтобы нарисовать круг в ImGui с использованием OpenGL и сделать так, чтобы он не исчезал, когда меню закрывается, вы можете использовать функцию `ImDrawList::AddCircle` для рисования круга и убедиться, что рисование происходит в подходящем месте в вашем коде, чтобы оно не зависело от видимости меню. Вот пример, как это сделать:

1. Убедитесь, что у вас установлен и настроен ImGui и OpenGL.
2. В вашем основном цикле рендеринга добавьте код для рисования круга.

Пример кода на C++:

```cpp
#include "imgui.h"
#include "imgui_impl_glfw.h"
#include "imgui_impl_opengl3.h"

// Пример функции, которая будет рисовать круг
void DrawCircle(ImDrawList* draw_list, ImVec2 center, float radius, ImU32 color, int num_segments)
{
draw_list->AddCircle(center, radius, color, num_segments);
}

int main()
{
// Инициализация ImGui, OpenGL и других необходимых компонентов
// ...

while (!glfwWindowShouldClose(window))
{
// Начало нового кадра ImGui
ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplGlfw_NewFrame();
ImGui::NewFrame();

// Ваш код для отображения меню
// ...

// Получаем текущий список для рисования
ImDrawList* draw_list = ImGui::GetForegroundDrawList();

// Параметры круга
ImVec2 center = ImVec2(400, 300); // Координаты центра круга
float radius = 100.0f; // Радиус круга
ImU32 color = IM_COL32(255, 0, 0, 255); // Цвет круга (красный)
int num_segments = 100; // Количество сегментов (для сглаживания круга)

// Рисуем круг
DrawCircle(draw_list, center, radius, color, num_segments);

// Рендерим интерфейс ImGui
ImGui::Render();
int display_w, display_h;
glfwGetFramebufferSize(window, &display_w, &display_h);
glViewport(0, 0, display_w, display_h);
glClearColor(0.45f, 0.55f, 0.60f, 1.00f);
glClear(GL_COLOR_BUFFER_BIT);
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());

// Обновление окна
glfwSwapBuffers(window);
glfwPollEvents();
}

// Очистка и завершение работы ImGui
ImGui_ImplOpenGL3_Shutdown();
ImGui_ImplGlfw_Shutdown();
ImGui::DestroyContext();
glfwDestroyWindow(window);
glfwTerminate();

return 0;
}
```

В этом примере функция `DrawCircle` рисует круг в любом месте окна, независимо от состояния меню. Это достигается использованием `ImGui::GetForegroundDrawList()`, который позволяет рисовать непосредственно на переднем плане.

Таким образом, круг будет оставаться на экране, даже когда меню ImGui скрыто. Если у вас есть дополнительные настройки или требования, вы можете адаптировать этот код в соответствии с вашими нуждами.
Похожие вопросы