>>HOMEPAGE

    Home     Manual       Relatório Técnico         Código Fonte         Downloads        Links Úteis


Voltar para relatório técnico

Versão 0.3 - Cenas texturizadas e jogador escolhe a posição através do cursor

Nesta versão os objetos são texturizados e o usuário interage com o jogo através do cursor, para isso utlizou-se o
mecanismo de picking para obter a posição selecionada do tabuleiro.

  • Textura

    A carga de textura foi realizada da seguinte maneira:

    • Identificando o objeto de textura, utilizando o comando glGenTextures (6, *texture_id);
    • Associando a textura ao seu identificador com glBindTexture (GL_TEXTURE_2D, texture_id[0]);
    • E então habilitamos a textura: glEnable (GL_TEXTURE_2D);

    Para a aplicação da textura foi preciso criar uma relação entre os vértices da textura e os vértices dos polígonos sobre os quais foram mapeadas as texturas escolhidas. Para essa finalidade o comando glTexCoord2f(x, y); que contém as coordenadas da textura foi utilizado antes da definição de cada vértice do polígono 3D.

    Os objetos texturizados podem ser visualizados abaixo:

  • Tabuleiro de 10x10 posições

    Tabuleiro
    Fig.1: Tabuleiro 10x10

  • Bandeira e Bomba

     


Fig. 2: Bandeira


Fig. 3: Bomba


  • Navio "Destroyer"

 


Fig. 4: Navio

  • Barco Pesqueiro


Fig. 5: Barco
  • Submarino
 

Fig. 6: Submarino

 

  • Picking

    A cena ao receber um evento de botão do mouse pressionado, utiliza o mecanismo de picking que consiste em redesenhar as geometrias de manipulação dos componentes da cena no modo de seleção, restringindo o desenho a uma região próxima ao cursor, para isso, muda-se os parâmetros de visualização de modo que apenas aquelas primitivas próximas ao cursor é que estão no volume de visualização alterado, para que isso seja feito utiliza-se o comando: gluPickMatrix.

    No modo de seleção, as informações do desenho não são enviadas ao framebuffer mas retornadas para a aplicação, onde estão armazenados os id´s dos objetos conforme eles são renderizados. É possível renderizar uma cena através do uso de glRenderMode(mode) em um dos três modos: GL_RENDER, GL_FEEDBACK, GL_SELECTION.

    Utilizou-se o modo de seleção e para isso foi necessário seguir os passos:

    • Especificar o buffer de nome através do comando glSelectBuffer();
    • Inicializar o buffer de nome com glInitNames;
    • Entrar no modo de seleção, glRenderMode(GL_SELECTION);
    • Carregar um nome na pilha de nomes, glLoadName(id), aqui o id utilizado foi o número que identifica a coluna;
    • Colocar o id no buffer de nome, neste caso utilizou-se o número da linha como id, glPushName(id);
    • Retirar o último nome do buffer de nomes, glPopName();
    • Renderizar a cena na forma normal (padrão), glRenderMode(GL_RENDER);
    • Examinar o conteúdo do frame buffer, ou seja, o conteúdo selecionado, que aqui é o número da linha e da coluna.