A comunidade brasileira de desenvolvimento e programação de jogos.
Bem-vindo: Sex Dez 04, 2020 2:29 am

Todos os horários são GMT - 3 horas




Criar novo tópico Responder  [ 2 mensagens ] 
Autor Mensagem
 Título: incluir imagens no jogo
MensagemEnviado: Seg Jan 04, 2010 5:53 pm 
Offline
Membro novo

Registrado em: Seg Jan 04, 2010 5:48 pm
Mensagens: 1
ola! eu tenho este codigo e estou a tentar incluir uma imagem no meu jogo! tenho aqui apenas um exemplo de codigo que me da o mesmo erro que da no meu jogo! o codigo é este:

Código:
#include <gl/glut.h>
#include <stdio.h> 
#include <gl/glaux.h>

                                                                       
//Função para Carregar uma imagem .BMP
AUX_RGBImageRec *LoadBMP(char *Filename){
   FILE *File=NULL;
   if (!Filename) {
      return NULL;         
   }
   File=fopen(Filename,"r");   
   if (File)   // Se o arquivo existe
   {
      fclose(File);                
      return auxDIBImageLoad(Filename);//Retorna a imagem
   }
   return NULL;         
}

// Variáveis globais
GLfloat angle, fAspect, rotX, rotY, obsZ;
GLuint idTextura;
AUX_RGBImageRec *imagemTextura;           
       
// Função responsável pela especificação dos parâmetros de iluminação
void DefineIluminacao (void)
{
   GLfloat luzAmbiente[4]={0.2,0.2,0.2,1.0};
   GLfloat luzDifusa[4]={0.7,0.7,0.7,1.0};      // "cor"
   GLfloat luzEspecular[4]={1.0, 1.0, 1.0, 1.0};// "brilho"
   GLfloat posicaoLuz[4]={0.0, -40.0, 0.0, 1.0};

   // Capacidade de brilho do material
   GLfloat especularidade[4]={1.0,1.0,1.0,1.0};
   GLint especMaterial = 60;

   // Define a refletância do material
   glMaterialfv(GL_FRONT,GL_SPECULAR, especularidade);
   // Define a concentração do brilho
   glMateriali(GL_FRONT,GL_SHININESS,especMaterial);

   // Ativa o uso da luz ambiente
   glLightModelfv(GL_LIGHT_MODEL_AMBIENT, luzAmbiente);

   // Define os parâmetros da luz de número 0
   glLightfv(GL_LIGHT0, GL_AMBIENT, luzAmbiente);
   glLightfv(GL_LIGHT0, GL_DIFFUSE, luzDifusa );
   glLightfv(GL_LIGHT0, GL_SPECULAR, luzEspecular );
   glLightfv(GL_LIGHT0, GL_POSITION, posicaoLuz ); 
   
   // Habilita o modelo de colorização de Gouraud
   glShadeModel(GL_SMOOTH);
}
           
// Função callback chamada para fazer o desenho
void Desenha(void)
{
   // Limpa a janela e o depth buffer
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

   // Desenha um cubo no qual a textura é aplicada
   glBegin ( GL_QUADS );
      // Face frontal
      glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
      glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
      glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
      glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);
      // Face posterior
      glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
      glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);
      glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);
      glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
      // Face superior
      glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);
      glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f,  1.0f,  1.0f);
      glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
      glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);
      // Face inferior
      glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
      glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
      glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
      glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
      // Face lateral direita
      glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
      glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);
      glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
      glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
      // Face lateral esquerda
      glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
      glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
      glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);
      glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);
   glEnd();

   glutSwapBuffers();
}

// Função usada para especificar a posição do observador virtual
void PosicionaObservador(void)
{
   // Especifica sistema de coordenadas do modelo
   glMatrixMode(GL_MODELVIEW);
   // Inicializa sistema de coordenadas do modelo
   glLoadIdentity();
   DefineIluminacao();
   // Especifica posição do observador e do alvo
   glTranslatef(0,0,-obsZ);
   glRotatef(rotX,1,0,0);
   glRotatef(rotY,0,1,0);
}

// Inicializa parâmetros de rendering
void Inicializa (void)
{
   // Define a cor de fundo da janela de visualização como preta
   glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
         
   // Habilita a definição da cor do material a partir da cor corrente
   glEnable(GL_COLOR_MATERIAL);
   //Habilita o uso de iluminação
   glEnable(GL_LIGHTING); 
   // Habilita a luz de número 0
   glEnable(GL_LIGHT0);
   // Habilita o depth-buffering
   glEnable(GL_DEPTH_TEST);

   // Inicializa a variável que especifica o ângulo da projeção
   // perspectiva
   angle=50;
   
   // Inicializa as variáveis usadas para alterar a posição do
   // observador virtual
   rotX = 30;
   rotY = 0;
   obsZ = 10;
   
   // Comandos de inicialização para textura
   imagemTextura = LoadBMP("imagem.bmp");
   glGenTextures(1, &idTextura);
   glBindTexture(GL_TEXTURE_2D, idTextura);
   glTexImage2D(GL_TEXTURE_2D, 0, 3, imagemTextura->sizeX,
         imagemTextura->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE,
         imagemTextura->data);
   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);   
   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
   glEnable(GL_TEXTURE_2D);   
}

// Função usada para especificar o volume de visualização
void EspecificaParametrosVisualizacao(void)
{
   // Especifica sistema de coordenadas de projeção
   glMatrixMode(GL_PROJECTION);
   // Inicializa sistema de coordenadas de projeção
   glLoadIdentity();

   // Especifica a projeção perspectiva(angulo,aspecto,zMin,zMax)
   gluPerspective(angle,fAspect,0.5,500);

   PosicionaObservador();
}

// Função callback chamada quando o tamanho da janela é alterado
void AlteraTamanhoJanela(GLsizei w, GLsizei h)
{
   // Para previnir uma divisão por zero
   if ( h == 0 ) h = 1;

   // Especifica as dimensões da viewport
   glViewport(0, 0, w, h);

   // Calcula a correção de aspecto
   fAspect = (GLfloat)w/(GLfloat)h;

   EspecificaParametrosVisualizacao();
}

// Função callback chamada para gerenciar eventos do mouse
void GerenciaMouse(int button, int state, int x, int y)
{
   if (button == GLUT_LEFT_BUTTON)
      if (state == GLUT_DOWN) {  // Zoom-in
         if (angle >= 10) angle -= 5;
      }
   if (button == GLUT_RIGHT_BUTTON)
      if (state == GLUT_DOWN) {  // Zoom-out
         if (angle <= 130) angle += 5;
      }
   EspecificaParametrosVisualizacao();
   glutPostRedisplay();
}

// Callback para gerenciar eventos do teclado para teclas especiais
void TeclasEspeciais(int key, int x, int y)
{
   switch (key)
   {
      case GLUT_KEY_LEFT:rotY--;
            break;
      case GLUT_KEY_RIGHT:rotY++;
            break;
      case GLUT_KEY_UP:rotX++;
            break;
      case GLUT_KEY_DOWN:rotX--;
            break;
      case GLUT_KEY_HOME:obsZ++;
            break;
      case GLUT_KEY_END:obsZ--;
            break;
      case GLUT_KEY_F10:// "camera reset"
            rotX=30;
            rotY=0;
            obsZ=10;
            angle=50;
            EspecificaParametrosVisualizacao();
            break;
   }
   PosicionaObservador();
   glutPostRedisplay();
}

// Programa Principal
int main(void)
{
   glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
   glutInitWindowSize(400,350);
   glutCreateWindow("Visualizacao 3D com Mapeamento de Textura");
   glutDisplayFunc(Desenha);
   glutReshapeFunc(AlteraTamanhoJanela);
   glutMouseFunc(GerenciaMouse);
   glutSpecialFunc(TeclasEspeciais);
   Inicializa();
   glutMainLoop();
}




e estes sao os erros:

1>------ Build started: Project: imagem, Configuration: Debug Win32 ------
1>Compiling...
1>ola.cpp
1>c:\program files\microsoft visual studio 9.0\vc\include\stdlib.h(371) : error C2381: 'exit' : redefinition; __declspec(noreturn) differs
1> c:\program files\microsoft visual studio 9.0\vc\include\gl\glut.h(146) : see declaration of 'exit'
1>c:\program files\microsoft visual studio 9.0\vc\include\stdlib.h(371) : warning C4985: 'exit': attributes not present on previous declaration.
1> c:\program files\microsoft visual studio 9.0\vc\include\gl\glut.h(146) : see declaration of 'exit'
1>Build log was saved at "file://c:\Users\Ruben\Desktop\imagem\imagem\Debug\BuildLog.htm"
1>imagem - 1 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========



os erros nao sao no codigo...eu so n percebo o porque destes erros e como os resolver =S


Voltar ao topo
 Perfil  
 
 Título:
MensagemEnviado: Ter Ago 10, 2010 10:23 pm 
Offline
Membro novo

Registrado em: Ter Ago 10, 2010 9:59 pm
Mensagens: 5
Localização: Itajaí, SC
olá. eu estou desenvolvendo uma biblioteca particular de imagems pra OpenGL, mas agora só sei carregar imagems do tipo bmp
o código é o seguinte:

Código:
void MostrarImagemRGBA(int x, int y, const int width, const int height, char* file)
{

   int tx = x + width;
   int ty = y + height;

   int size = (width * height * 3);
   GLubyte* data = new GLubyte[size];

   FILE* image;
   image = fopen(file,"rb");
   if(!image){printf("Erro ao abrir imagem");return;}
   fread(data, size, 1, image);
   fclose(image);

   glRasterPos2i(tx, ty);
   glDrawPixels(width, height, GL_RGB, GL_UNSIGNED_BYTE, data);
}


a utilização é assim:
Código:
MostrarImagemRGB(int x, int y, int width, int height, char* file);


o tamanho deve estar identico, e voce pode ter problemas nas posições, pois isso depende da sua configuração Ortho2D, mas isso voce pode arrumar sozinho. Cyaa[/code]

_________________
Programe...


Voltar ao topo
 Perfil  
 
Exibir mensagens anteriores:  Ordenar por  
Criar novo tópico Responder  [ 2 mensagens ] 

Todos os horários são GMT - 3 horas


Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante


Enviar mensagens: Proibido
Responder mensagens: Proibido
Editar mensagens: Proibido
Excluir mensagens: Proibido
Enviar anexos: Proibido

Ir para:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzido por: Suporte phpBB