Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Criando nosso primeiro programa em C++ e OpenGL

Aprenda como criar uma janela e desenhar primitivas na mesma.

1. Criando uma simples janela

O que posso dizer é que a experiência de estar estudando OpenGL não está sendo umas das mais agradáveis.

Até que estou gostando da biblioteca, mas para quem já programou em XNA é difícil de se acostumar com as coisas que temos que fazer na mão em OpenGL. Em XNA nós nos preocupamos apenas com a “regra” do jogo em si.

Um exemplo disto é a criação de uma simples janela. Em XNA não precisamos codificar nada para mostrar uma janela para o usuário. Já em OpenGL temos que codificar algumas linhas.

Neste post iremos analisar o código que é necessário para criar e exibir uma simples janela para o usuário.

   1: #include <GL/glut.h>
   2: 
   3: void drawWindow()
   4: {
   5:     glClearColor(1.0f, 0.5f, 0.0f, 1.0f);
   6:     glClear(GL_COLOR_BUFFER_BIT);
   7:     glFlush();
   8: }
   9: 
  10: int main(int argc, char *argv[])
  11: {
  12:     glutCreateWindow("Olá Mundo OpenGL");
  13:     glutDisplayFunc(drawWindow);
  14:     glutMainLoop();
  15:     return 1;
  16: }

 

  1. glutCreateWindow: Criar a janela com de nome “Olá Mundo OpenGL”

  2. glutDisplayFunc: Informa que função será chamada sempre que a janela necessitar ser redesenhada. Neste exemplo, a função chamada é a “drawWindow”

  3. glClear: Limpa a janela e repinta com a cor que é passada para a função glClearColor

  4. glFlush: Força a execução dos comandos da biblioteca GL(Caso tire esta linha, a sua janela pode ficar com o fundo transparente).

  5. glutMainLoop: Dá início ao processamento do ciclo de eventos do glut que serão executados em loop.

 


2. Desenhando nossa primeira primitiva

Para desenharmos primitivas em nossa janela é bastante simples. Temos uma função no OpenGL chamada “glVertex3f” que é responsável por definir pontos em nosso plano cartesiano.

As coordenadas de nossa janela estão definidos desta maneira:

Untitled

 

Para desenharmos uma série de pontos e interligá-los, temos que definir um escopo onde iremos informar os pontos. Este escopo é informado com as funções glBegin(x) e glEnd().

A função glBegin recebe um parâmetro que informa como irá ocorrer a ligação entre os pontos. Os possíveis parâmetros são:

  1. GL_POINTS – Desenhamos apenas pontos em nosso plano.
  2. GL_LINES – São desenhadas linhas independentes entre dois pontos.
  3. GL_LINE_STRIP – Liga todos os pontos (não fecha o circuito)
  4. GL_LINE_LOOP – Liga todos os pontos (fecha o circuito)
  5. GL_TRIANGLES – A cada três vértices forma um triângulo
  6. GL_TRIANGLE_STRIP - Liga uma série de triângulos, formando uma tira com os mesmos.
  7. GL_TRIANGLE_FAN – A palavra "fan" significa “leque” em portugues. Ou seja, criamos um leque em nosso plano.
  8. GL_QUADS – A cada quatro vértices definidos, é desenhado um quadrado em nossa tela.
  9. GL_QUAD_STRIP – Forma uma malha com os quadrados.
  10. GL_POLYGON – Polígono convexo simples.

 

Como exemplo, iremos desenhar um triângulo em nossa tela. O código fica da seguinte maneira:

   1: #include <GL/glut.h>
   2: 
   3: void drawWindow()
   4: {
   5:     glClearColor(1.0f, 0.5f, 0.0f, 1.0f);
   6:     glClear(GL_COLOR_BUFFER_BIT);
   7: 
   8:     glBegin(GL_TRIANGLES);
   9:     glVertex3f(0.0f, 0.5f, 0.0f);
  10:     glVertex3f(-0.5f, -0.5f, 0.0f);
  11:     glVertex3f(0.5f, -0.5f, 0.0f);
  12:     glEnd();
  13: 
  14:     glFlush();
  15: }
  16: 
  17: int main(int argc, char *argv[])
  18: {
  19:     glutCreateWindow("Olá Mundo OpenGL");
  20:     glutDisplayFunc(drawWindow);
  21:     glutMainLoop();
  22:     return 1;
  23: }

 

Abraços!!!


Obs: Este post foi publicado, também, em meu blog (http://fpimentel88.wordpress.com)





    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



[Este post ainda não foi associado a uma sequência]
Autor
Felipe José Fonseca Pimentel

Trabalha como Arquiteto e Consultor independente. É líder do grupo DotNetArchitects PE. Possui mais de 4 anos de experiência com tecnologias .NET. Ministra cursos, palestras e treinamentos sobre a plataforma .NET. Possuindo os títulos de MCP, MCTS e MCPD.


Space do autor
Estatísticas #
Favorito:
Comentários:
Feedback:
Utilidade:
2   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível somente para quem possui Créditos DevMedia. (Ele não está associado a nenhuma publicação DevMedia).


  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03