Estou começando a aprender o OpenGL com o FreeGLUT usando o Superbible e o conhecimento que tenho dos meus gráficos elementares para aprimorar minhas habilidades.
Para aproveitar melhor essa experiência, quero integrar uma GUI para substituir a que o FreeGLUT usa, agora minha pergunta é a seguinte: isso é possível e qual biblioteca devo usar?
Algumas características da biblioteca:
- Código aberto
- Multiplataforma (Linux e Windows)
- C / C ++
Se você tiver outras recomendações, não hesite em publicá-las juntamente com suas respostas para o meu problema.
opengl
c++
gui
cross-platform
Cristina
fonte
fonte
Respostas:
Ainda não tentei, mas isso parece muito interessante:
librocket
EDIT: Como você precisará de um contexto para renderizar, eu recomendaria o SFML ou o SDL 1.3.
fonte
A GUI do Crazy Eddie (CEGUI) é popular, e você pode criar um dos backend de renderizador existente ou escrever sua própria segmentação, independentemente da API suportada pelo OpenGL que desejar. É de código aberto, multiplataforma e C ++. No entanto, valoriza a consistência, o que nem sempre é um bom princípio de interface do usuário para jogos, que pode ter dezenas de controles personalizados usados em exatamente um local.
Um padrão popular recente é a GUI de modo imediato (IMGUI) , que é como "nenhuma biblioteca de GUI". Tem vantagens e desvantagens - é muito simples, mas pode ser difícil de otimizar, e ainda tenho que ver realmente bons modelos IMGUI para controles avançados, como caixas de combinação ou exibições em árvore. Também não vejo uma boa implementação de um sistema de janelas IMGUI (e passo algum tempo tentando escrever um, com o qual nunca fiquei satisfeito) - ele é excelente para elementos HUD simples, no entanto, e controles simples e únicos.
fonte
Eu recentemente tropecei em Gwen . É uma biblioteca GUI escrita pelo autor do Gary's Mod. É licenciado pelo MIT como qualquer boa biblioteca de jogos deveria ser.
A biblioteca tem várias coisas a seu favor.
Gwen está em desenvolvimento há alguns anos e mostra isso.
Esse é um grande problema. A biblioteca vem com um renderizador OpenGL reconstruído. Mas criar um renderizador é simples o suficiente para que você queira criar um renderizador específico para o sistema de renderização do seu jogo.
Gwen parece estar do lado mais leve das GUIs de jogos. Sem XML, sem renderizador HTML, apenas C ++ simples. Gwen também não vem com carregadores de imagens. Ele espera que o backend do renderizador lide com o carregamento. Eu gosto desse recurso, pois mantém a biblioteca pequena e o sistema de renderização do meu jogo já gerencia texturas.
Não é a primeira coisa em seus marcos, mas eventualmente você precisará personalizar sua GUI para o seu jogo.
Não sou desenvolvedor web e acho difíceis as GUIs centradas em html css.
Isso é grande para jogos. É sempre difícil usar sistemas GUI que desejam possuir a pesquisa de entrada.
A biblioteca se esforça para ser plataforma cruzada, mas eles admitem que você pode encontrar problemas em plataformas menos usadas.
Além disso, é muito menor que o CEGUI ou MyGUI, portanto, hackear ou enviar patches é muito mais prático.
No entanto, aqui estão os contras:
fonte
Desculpe a resposta tardia, mas você pode dar uma olhada em uma estrutura de interface do usuário OpenGL chamada GG . O GG foi desenvolvido como parte do projeto FreeOrion e está incluído no repositório SVN (e no SDK para download). Parece bastante capaz. Eu incluí uma captura de tela abaixo; você pode clicar na imagem para ver a versão completa.
fonte
MyGUI é uma solução bastante boa para DirectX e OpenGL.
fonte
Dê uma olhada no AntTweakBar , ele está sendo usado pelo Cinder . Há também uma nova biblioteca de GUI desenvolvida para o Cinder: SimpleGUI .
Se você deseja usar HTML + CSS, existe o Awesomium (usado pela Wolfire Games no jogo Overgrowth ) e uma alternativa gratuita chamada Berkelium .
fonte
Eu tenho mexido com QuickGUI e MyGUI . As duas bibliotecas da GUI do Ogre abandonaram recentemente o requisito do ogro. Ainda não tenho muita experiência com isso, mas parece que continuarei com o QuickGUI, pois é muito menor e mais simples.
Não tenho certeza se o wiki do QuickGUI foi atualizado ainda para apontar para a versão mais recente do Ogre-free. Aqui está a versão mais recente.
http://www.stormsonggames.com/downloads/QuickGUI_10_8.zip
O repositório viu algumas atualizações entre plataformas, então você estará melhor usando o svn diretamente.
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUI
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgreDemo
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgrePlatform
Nome de usuário: Anonymous
Senha: QuickGUI
Por fim, aqui está o breve wiki sobre como adicionar diferentes backends de renderização. http://www.ogre3d.org/tikiwiki/QuickGUI+Integration+Tutorial
MyGUI parece ter mais recursos ao custo de ficar inchado. E honestamente, se a simplicidade não é um requisito, a CEGUI explode o MyGUI fora da água.
fonte
Eu recomendaria o QT, como é multiplataforma, C ++ e você pode obter uma versão de código aberto com a licença LGPL. Também é fácil de usar e possui muitos componentes pré-fabricados que você pode usar.
fonte
Os criadores podem me criticar por dizer isso, mas achei o GLFW simplesmente fantástico na criação de estruturas de GUI de plataforma cruzada. O pessoal de desenvolvimento do GLFW continua falando sobre o GLFW não trata da GUI. No entanto, ele faz um trabalho agradável, simples, limpo e totalmente portátil de lidar com gráficos, eventos e tarefas de mouse / teclado / joystick.
O bom do GLFW para mim é que ele é bastante pequeno, não requer código específico do sistema, nem GLUT e é bem mantido. Tem sido estável para uso em projetos OpenGL 4.1 até agora. Comparado a algo como SDL, eu amo a pequena sobrecarga e foi fácil como torta escrever classes de manipuladores GUI.
Como alternativa, dê uma olhada no FLTK . Pode ser usado para todo tipo de coisa e ser reutilizado de maneira muito simples. Ele é realmente usado na criação de aplicativos, mas é perfeitamente capaz de manipular objetos 3D e é construído no OpenGL. Muito pequeno, bem suportado e, embora eu não veja muitas pessoas fazendo interfaces personalizadas no nível de design do jogo, há algumas que parecem funcionar muito bem.
fonte