Ao se desenvolver uma aplicação OpenGL é preciso utilizar em conjunto alguma outra biblioteca para tratar de tarefas específicas como abrir uma janela e interagir com mouse e teclado. O problema é que normalmente estas outras bibliotecas são dependentes de sistema operacional.
Existem algumas alternativas para não ficar dependente de sistema operacional, das quais a mais conhecida é utilizar a GLUT, porém ela possui vários problemas. Dentre estes problemas, um dos piores é a necessidade de utilizar variáveis globais para criar a sua aplicação. Portanto, descartando a utilização da GLUT, uma outra abordagem é utilizar o framework Qt da Nokia.
Para contextualizar, será criada uma aplicação gráfica com OpenGL e Qt, onde a interface gráfica será criada utilizando o Qt Creator, que é uma IDE de código aberto que possui uma licença gratuita, inclusive para desenvolver aplicações comerciais.
A aplicação pode ser vista na figura abaixo e é bem simples. É basicamente um visualizador de polígonos, onde o usuário informa a quantidade de lados e o tamanho do raio através de dois sliders.
Este tutorial está dividido em três partes e como ele foi gravado em 720p é recomendado que você selecione esta opção e visualize em tela cheia.
Tutorial de OpenGL com Qt Creator (Parte 1)
Tutorial de OpenGL com Qt Creator (Parte 2)
Tutorial de OpenGL com Qt Creator (Parte 3)
Você pode baixar o código fonte do Projeto OpenGL com Qt.
Espero que tenham gostado deste tutorial. Comentários são bem vindos!

mutxu boum, mim agudô baztantxi!!!1111
Excelente. Só não precisava falar tão baixinho.
@Leonardo – Obrigado. O vídeo original estava com o som normal, mas depois de enviar para o YouTube ficou mais baixo… Da próxima vez vou ter que tratar o som antes de enviar para o YouTube… Uma dica, você pode baixar o vídeo do YouTube e então utilizar o VLC que aumenta o som até chegar em 400%…
Massa o tutorial Marcio, ótimo pra conhecer o funcionamento da ferramenta
Muito bom mesmo. Fácil, bem explicado e direto. Há algum tempo que tento aprender o Qt, mas não consigo sair do lugar. Seu tutorial foi um divisor de águas pra mim. Valeu!
@Cristiano – Fico feliz que tenha lhe ajudado bastante. Em relação a levar o seu executável para outra máquina é preciso levar junto as DLLs: mingwm10.dll e qtcore4.dll, no mínimo. Talvez seja necessário alguma outra DLL se você tiver utilizado mais recursos. Uma forma de saber quais DLLs você precisa, basta executar o programa numa máquina que não tenha as pastas do Qt no path, e então executar o programa. Assim, na mensagem de erro aparecerá qual DLL você precisa, então você copia para a mesma pasta do executável a DLL e repete o processo para saber se precisa de mais outra DLL, entendeu? Assim você tem o seu programa para ser redistribuído (Qt Redistributable).
Tive uma dúvida agora: Após concluiro projeto, como faço para levar apaneas o executável e rodar em outra máquina? Na verdade, nem mesmo na própria máquina, o executável gerado no projeto roda.
Problema resolvido: Inclui as pastas bin do Qt no path das variáveis de ambiente.
Marcio muito bom o tutorial, estava procurando exatamente essa explicação que você deu a alguns meses pelo google, trabalhei com o devcpp porém ele não tem as mesmas opções que o QT proporciona e eu estava justamente atrás da utilização de Widget como ambiente OpenGL, queria saber se você tem algum tem um curso especifico de Computação Gráfica com OpenGL a distância, pois estou em brasilia mas me interesso muito pelo assunto.
@Fabio – Eu não tenho este curso de Computação Gráfica com OpenGL, apenas fiz este tutorial para que os meus alunos de Computação Gráfica da Universidade Católica de Pernambuco pudessem utilizar mais facilmente o Qt para fazer o projeto da disciplina. Obrigado pelo comentário.
Marcio, show de bola a video aula!
De fato, é bem melhor que usar GLUT!
Abraços e até breve!!
Mácio… Parabens pelo tutorial. =)
Muito bom!
Ótimo tutorial, parabens..
Viva o Qt e Qt Creator.
Pra mim são ás melhores ferramentas para c/c++ da atualidade..
Abraço.
Ola Marcio muito bom tutorial, estou a tentar configurar o meu widget no QT tal e qual como tu estas a ensinar, mas no fim esta-me a dar um erro e não consigo correr, será que te posso enviar o meu programa para o teu email e tentares-me ajudar por lá, dando uma vista de olhos no meu programa? Cumprimentos
Joao
@Joao – Já respondi ao seu e-mail. Boa sorte!
ola pessoal, em que versão do QT creator foi feito o tutorial, o que acontece é que cuando eu tento criar o novo projeto não tenho as opções de incluir o QtOpenGl, ao proposito eu tenho a ultima versão do QT creator, obrigado pelas respostas
@Carlos – No download a versão é 2010.2, eu vi que atualmente está na 2010.5. Uma coisa que você pode fazer é editar o arquivo de projeto (.pro) e adicionar a linha QT += opengl para poder compilar código OpenGL, já que não abre mais a primeira caixa de diálogo, onde você escolhe os módulos desejados.
Obrigado pela resposta, fiz o que vc diz e saiu tudo legal.
Ei Marcio, qual é o link para aquele documento em pdf que aparece na parte 2 do tutorial WHITE PAPER que tem aqueles métodos que é para incrementar no código?
@Fernando – O link é http://qt.nokia.com/forms/whitepapers/reg-whitepaper-viz/
Marcio pode me ajudar?
Toda vez que tento dar debug em qualquer código fonte(inclusive esse do opengl) dá esses erros:
:: error: The Qt version is invalid: Could not determine the path to the binaries of the Qt installation, maybe the qmake path is wrong?
e
:: error: The qmake command “” was not found or is not executable.
Sabe a solução pro meu problema?
@Fernando – Isso é problema na configuração do seu Qt Creator. Você deve olhar nas opções do Qt Creator, para ver onde ele está procurando o qmake. Ou então, é um problema do MinGW que foi instalado. Uma opção mais simples é desinstalar o Qt Creator, e instalar novamente incluindo a opção de instalar também o MinGW.
Parabéns pelas apresentações !!!
Um abraço!
Rogerio
amigo, otimo tutorial
mas tenho uma duvida, eu estou tentando re-utilizar o seu trabalho para aprender mesmo e tentar modificado, so que quando edito o design dele, nao acontece nada; a figura do openGL eu edito normal, mas o design n.
exemplo mudar o botao de lugar, quando executo continua no mesmo lugar.
grato
@rique – Obrigado pelo comentário. Para alterar as posições dos componentes gráficos é necessário antes remover o layout automático atual. Para isto, você clica no componente que representa a janela e então clica no botão break-layout. Depois disto, você pode posicionar do jeito que você quiser. No vídeo tutorial eu explico um pouco sobre o layout, dê uma olhada nesta parte novamente.
Ja esta tudo certo, muito obrigado cara!
“Divisor de Aguas do QT”
Vlw
Parabéns pelo trabalho!
Boa noite, alguem sabe quando sai ou se vai sair um aproximo video
obrigado
@Joao – Este tutorial foi programado para apenas estes três vídeos, não tem um próximo. Porém, existirão outros vídeo sobre outros tópicos relacionados.
Boa noite, otimos videos!
amigo tenho um projeto em OpenGL e o seu tutorial foi muito maravilhoso, mas a glRotatef nao funciona; coloco glRotatef(angulo,0,0,1) em cima do glBegin e simplesmente a figura nao gira; faço o mesmo no java e funciona; o amigo poderia me ajudar?
desde ja obrigado
@Antonio – Obrigado pelo comentário. Uma sugestão é você utilizar poucos vértices para fazer o teste, e variar o ângulo, pois como a figura é simétrica, se você utilizar o ângulo correto a figura continuará igual, não haverá nenhuma diferença visual.
Ola , eu tenho um projeto feito em opengl em que há eventos gerenciados pelos teclados, gostaria de criar um gui a partir do qt, como eu poderia alterar o codigo? o qt creator faz isso facilmente?
@Lucas – todo código OpenGL é aproveitado dentro do Qt. Porém, o código que foi feito utilizando GLUT, GLUI, WxWidgets, etc, que gerenciam os eventos, precisam ser refeitos. Então, dá um certo trabalho fazer estas correspondências entre GLUT e Qt, por exemplo, mas o código que será executado quando o comando for executado, não deve mudar quase nada.
como vai, estou com um problema. No Qt tenho um DoubleSpinBox,mas preciso tranformar ele em uma variável para que eu possa fazer calculos com ela, como devo fazer isso, já tentei usar Valuechange(double d) por exemplo, mas não funcionou.
@jose – Você pode utilizar o método value(). Exemplo, se você tem um ponteiro doubleSpinBox, então o código para pegar o double é: doubleSpinBox->value()