Pergunta

Eu estou escrevendo um programa em OpenGL e eu preciso de algum tipo de interface da barra de ferramentas. Minhas reações iniciais eram de usar uma interface gráfica, então uma investigação mais aprofundada em C ++ eu percebi que é GUI são dependentes do sistema operacional que você está usando (eu estou no Windows). Portanto, eu decidi usar o QT para me ajudar.

A minha pergunta é se eu estou tomando a melhor abordagem / apropriada a esta solução. Am I até mesmo capaz de escrever o meu programa OpenGL e ter a GUI Eu quero criar interface com o código C ++ para fazer o que quer que ele faça.

Por exemplo, Se eu criar um simples "painel de controle" com setas em cada sentido. E na tela Eu tenho um objeto caixa criado por excesso posso interligar as setas de ser clicado e interagir com o programa OpenGL para mover a caixa?

Foi útil?

Solução

Usando Qt é coerente para o seu problema:. Fornece uma boa integração do OpenGL através do módulo QtOpenGL

  1. derivar suas classes de exibição de QGLWidget (até Qt 4.8) ou a partir de QOpenGLWidget (desde Qt 5.4) e implementar métodos virtuais paintGL() etc.
  2. Você terá acesso ao sistema de sinal e slot do Qt para que você será capaz de capturar eventos GUI e atualizar a exibição OpenGL.

Outras dicas

Você pode usar os widgets regulares não-OpenGL Qt no topo de uma QGLWidget então o que você descreve é ??capaz de fazer.

Uma coisa me deparei ao fazer isso foi que os widgets regulares tiveram de ser opaco. No momento em que eram transparentes de qualquer forma não havia todos os tipos de lixo debaixo deles. Esse foi um tempo atrás, então talvez os últimos endereços versão esta questão. Pode ter específico da plataforma foi também por isso YMMV.

Mantenha-se em GLUT. Não há necessidade de adicionar Qt para um painel de controle. Você poderia abrir uma janela de sub (ou segunda janela, o que funciona melhor para o seu projeto de programa), e desenhar os controles nessa janela e uso GLUT para lidar com a interação do mouse.

Além disso, Qt e GLUT cada um tem seus próprios laço de eventos. Para usar apenas ciclo de eventos do Qt, você teria que abandonar grande parte da estrutura GLUT, uma vez que o ciclo de eventos GLUT não estaria lá para chamar as funções de retorno de chamada. Qt tem a funcionalidade para ter deixado código de processamento de evento de chamada de loop alguém evento do Qt, mas eu não acho que há uma maneira fácil de fazer mão GLUT off as informações do evento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top