Feature Request: Ability to render Polyscope viewer in multiple ImGui windows
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
- Tipo de issue
- Funcionalidade
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Estagnada
- Stack de tecnologia
- cpp
- Domínio
- computer-graphics, desktop
Direção de pesquisa
Comece pelo exemplo de ImGui, GLFW e OpenGL3 de main.cpp na issue e, em seguida, inspecione como o Polyscope atualmente gerencia sua janela e seu loop de eventos. Determine os pontos de entrada arquiteturais necessários para renderizar visualizações separadas em várias janelas ImGui; considera-se concluído quando a API de renderização multi-janela solicitada funciona dentro de uma única GUI.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Hello Polyscope maintainers and community,
I'm using Polyscope to visualize point cloud data within a GUI application.
Currently, Polyscope encapsulates its own window and event loop and doesn't provide an API to render into multiple ImGui windows. In my case, I would like to show the 3D data in one window alongside 2 other windows to show the two 2D cameras windows. Specifically, I'm looking to render different Polyscope visualizations in separate ImGui windows within the same GUI.
I understand that this feature might involve significant changes to Polyscope's architecture, but I believe the added flexibility would benefit many users and use cases. I look forward to hearing your thoughts on this suggestion.
Thank you for your time and the excellent work on Polyscope!
This is the implementation of two different windows in the same GUI using ImGUI, GLFW and OpenGL3:
// main.cpp
#include "imgui.h"
#include "imgui_impl_glfw.h"
#include "imgui_impl_opengl3.h"
#include <GLFW/glfw3.h>
int main() {
// Set up window
glfwInit();
GLFWwindow* window = glfwCreateWindow(1280, 720, "Hello", NULL, NULL);
glfwMakeContextCurrent(window);
glfwSwapInterval(1); // Enable vsync
// Set up Dear ImGui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO();
// Set up Platform/Renderer bindings
ImGui_ImplGlfw_InitForOpenGL(window, true);
ImGui_ImplOpenGL3_Init("#version 130");
while (!glfwWindowShouldClose(window)) {
glfwPollEvents();
// Start ImGui frame
ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplGlfw_NewFrame();
ImGui::NewFrame();
// Here we construct our GUI
ImGui::SetNextWindowPos(ImVec2(0, 0));
ImGui::SetNextWindowSize(ImVec2(640, 720));
ImGui::Begin("Window 1");
ImGui::Text("This is window 1");
ImGui::End();
ImGui::SetNextWindowPos(ImVec2(640, 0));
ImGui::SetNextWindowSize(ImVec2(640, 720));
ImGui::Begin("Window 2");
ImGui::Text("This is window 2");
ImGui::End();
// Render ImGui frame
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);
}
// Cleanup
ImGui_ImplOpenGL3_Shutdown();
ImGui_ImplGlfw_Shutdown();
ImGui::DestroyContext();
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}
- Linguagem predominante
- C++
- Estrelas
- 2.2k
- Forks
- 242
- Merge médio
- 11min
- PRs com merge (30d)
- 1
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de nmwsharp/polyscope
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 48/100
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 30/100
-
Rust Version Aberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 15/100
-
enhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 20/100
Todas as issues de nmwsharp/polyscope
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
flutter-webrtc/flutter-webrtc#2206 ·
-
litertlm-android AAR ships no consumer ProGuard rules → "mid == null" SIGABRT in minified apps Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
google-ai-edge/LiteRT-LM#3739 ·
-
Component: GLib
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
brave/brave-browser#59300 ·
-
Mute ydb/tests/functional/dstool/test_canonical_requests.py.Test.test_group_take_snapshot in main Abertaai_reviewed
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
ydb-platform/ydb#53974 · 3 comentários ·