Tutorial OpenGL v2.0

Finalmente chegou! Após quase 1 ano depois de meu primeiro artigo sobre OpenGL, chegou a versão 2.0. Clique e fique mais Geek.

[ Hits: 15.218 ]

Por: Thiago Henrique Hüpner em 08/05/2015


Inicializando o SDL



Então, segue o primeiro exemplo de um programa usando o SDL + OpenGL:

// Inclui a biblioteca SDL
#include <SDL/SDL.h>

// Inclui a biblioteca do SDL que tem o OpenGL
#include <SDL/SDL_opengl.h>

// Função Principal
int main(int argc,char *argv[]){

	// Se a inicialização do e o Subsistema de video falhar ...
	if(SDL_Init(SDL_INIT_VIDEO) < 0){
		// ... imprima a mensagem de erro e ...
		printf("Erro : %s
",SDL_GetError());
		// ... encerre o programa com 'erro'
		return -1;
	}

	//Define alguns atributos do OpenGL, tais como ...

	// Numero minimo de bits da cor Vermelha ;
	SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 8 );

	// Numero minimo de bits da cor  Verde ;
	SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 8 );

	// Numero minimo de bits da cor Azul ;
	SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 8 );

	// Tamanho do pixels da cor Alfa ;
	SDL_GL_SetAttribute( SDL_GL_ALPHA_SIZE, 8 );

	// E o Buffer duplo ( 1 ligado , 0 desligado )
	SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );

	// Cria a Janela
	SDL_Surface * tela = SDL_SetVideoMode(400,400,32,SDL_OPENGL);

	// Se algum erro acontecer com na criação da Janela...
	if(tela == NULL){

		// ... imprima o erro ...
		printf("Erro : %s
",SDL_GetError());

		// ... feche o SDL e ...
		SDL_Quit();

		// ... encerre o programa com 'erro'
		return -1;
	}

	// Define o título da janela
	SDL_WM_SetCaption("Exemplo Básico SDL + OpenGL",NULL);

	// Variável para os eventos
	SDL_Event evento;

	// Controle do Loop
	int estaRodando = 1;

	// Loop Principal
	while(estaRodando){

		// Lê a fila de eventos e põe o evento mais antigo em "evento"
		while(SDL_PollEvent(&evento)){

			// Entre nos tipos de eventos ...
			switch(evento.type){

				// ... caso o 'X' da janela foi apertado ...
				case SDL_QUIT:

					// ... então saia do Loop Principal.
					estaRodando = 0;

				break;

				// Outros eventos ....

				default:

				break;

			}
		}

		// Espera 30 milissegundos para não forçar uso do processador
		SDL_Delay(30);
	}

	// Encerra o SDL
	SDL_Quit();

	// Nenhum erro ocorrido =D
	return 0;

}

Salve como "PrimeiraJanela.c" e compile com:

gcc -o PrimeiraJanela PrimeiraJanela.c -lSDL -lGL -lGLU

E vocês deverão ter uma janela como esta:
Linux: Tutorial OpenGL v2.0
Bom, se leram os 2 primeiros artigos, não terão muitas dificuldades em entender esse código. Porém, existem novas funções tipo o SDL_GL_SetAttribute, e que no SetVideoMode a 'flag' é SDL_OPENGL, isso indica que o programa deve se preparar para receber a presença do OpenGL.

NOTA: não é tão importante utilizar o SDL_GL_SetAttribute, pois ele já vem com valores pré-definidos, utilizando isso, sobrescrevemos o valor pré-definido. Mas eu recomendo bastante utilizar!

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Inicializando o SDL
   3. OpenGL e SDL botando pra quebrar
   4. Simulando uma Gambiarra
   5. A jornada é longa parte 1 - Colisão Mouse e Retângulo
   6. A jornada é longa parte 2 - Colisão entre 2 Retângulos
   7. "Imagine" seu programa
   8. Agradecimentos, links úteis e fontes
Outros artigos deste autor

Ubuntu/Debian/Kali Linux e outros no Android

Tutorial SFML

Tutorial OpenGL v3.0

Visual Studio no Linux

Tutorial OpenGL

Leitura recomendada

Detectando assalto na multidão com visão computacional

Conio.h para Linux

Programando em Qt

Túnel do Tempo: a função itoa()

C - Include e Makefile

  
Comentários
[1] Comentário enviado por fabio em 08/05/2015 - 10:30h

Muito bom! Vou tentar criar um game simples pra minha filha ficar clicando no retângulo com a cor certa com base neste tutorial.

[2] Comentário enviado por Thihup em 08/05/2015 - 11:21h


[1] Comentário enviado por fabio em 08/05/2015 - 10:30h

Muito bom! Vou tentar criar um game simples pra minha filha ficar clicando no retângulo com a cor certa com base neste tutorial.


Fábio, mais uma vez, muito obrigado !

E boa sorte com o aplicativo, espero que sua filha goste.

Qualquer dúvida só pedir =D

[]'s

T+

[3] Comentário enviado por UmCaraAToa em 08/05/2015 - 11:25h

Bom artigo!
Favoritado e pega meu 10!

Até

[4] Comentário enviado por Thihup em 08/05/2015 - 11:30h


[3] Comentário enviado por UmCaraAToa em 08/05/2015 - 11:25h

Bom artigo!
Favoritado e pega meu 10!

Até


Valeu fera

T+

[5] Comentário enviado por xerxeslins em 08/05/2015 - 11:49h


Favoritado. Vou ler depois com calma. Mas só de dar uma olhada por rápida vi que é material interessante!
--
http://pastebin.com/aji5Qp05

[6] Comentário enviado por Thihup em 08/05/2015 - 11:55h


[5] Comentário enviado por xerxeslins em 08/05/2015 - 11:49h


Favoritado. Vou ler depois com calma. Mas só de dar uma olhada por rápida vi que é material interessante!
--
http://pastebin.com/aji5Qp05


Valeu fera, Obrigado!

[]'s

T+

[7] Comentário enviado por preroeb em 08/05/2015 - 19:02h

Parabéns pelo artigo escrito, é uns dos melhores (e únicos) artigos sobre OpenGL aqui no VOL.

[8] Comentário enviado por Thihup em 08/05/2015 - 19:04h


[7] Comentário enviado por preroeb em 08/05/2015 - 19:02h

Parabéns pelo artigo escrito, é uns dos melhores (e únicos) artigos sobre OpenGL aqui no VOL.


Valew pela força!

Dando duro pra trazer um artigo de qualidade pra vocês, meu povinho do "Volzinho"!

[]'s

T+

[9] Comentário enviado por Felipeigor em 08/05/2015 - 19:43h

Ae Parabéns brother excelente artigo , favoritado aqui tbm :)

Igor Felipe
Cadastrado desde: 25/09/2009

[b]If it moves , compile it.[/b]

[10] Comentário enviado por Thihup em 08/05/2015 - 19:44h


[9] Comentário enviado por Felipeigor em 08/05/2015 - 19:43h

Ae Parabéns brother excelente artigo , favoritado aqui tbm :)

Igor Felipe
Cadastrado desde: 25/09/2009

[b]If it moves , compile it.[/b]


Valew Tambem pelo apoio!

[]'s

T+

[11] Comentário enviado por SamL em 09/05/2015 - 12:50h

Legal cara, bem explicada a parte sobre colisão. Um bom artigo como um todo. Parabéns.

[12] Comentário enviado por Thihup em 09/05/2015 - 13:40h


[11] Comentário enviado por SamL em 09/05/2015 - 12:50h

Legal cara, bem explicada a parte sobre colisão. Um bom artigo como um todo. Parabéns.


Valew Sam! Sempre me apoiando!

[]'s

T+

[13] Comentário enviado por Ang em 09/05/2015 - 16:14h

Oi, Thiago!
Dei uma rápida lida no seu artigo.
Está muito bom!
Continue assim, com essas ótimas contribuições!

Ang,
Manaus, AM, Brasil.
Usuário de sistemas operacionais livres/abertos tipo Unix ou tipo DOS,
Distros Favoritas: FreeBSD, Free-DOS, , PC-DOS, Bodhi Linux, Ubuntu, Big Linux, Kurumim, OpenSUSE, Slackware e Slax.

[14] Comentário enviado por Thihup em 09/05/2015 - 16:18h


[13] Comentário enviado por Ang em 09/05/2015 - 16:14h

Oi, Thiago!
Dei uma rápida lida no seu artigo.
Está muito bom!
Continue assim, com essas ótimas contribuições!

Ang,
Manaus, AM, Brasil.
Usuário de sistemas operacionais livres/abertos tipo Unix ou tipo DOS,
Distros Favoritas: FreeBSD, Free-DOS, , PC-DOS, Bodhi Linux, Ubuntu, Big Linux, Kurumim, OpenSUSE, Slackware e Slax.


Valew !
Obrigado por ter lido!

[]'s

T+


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts