Jump to content

OpenGl Image Loader Library


seuqram
 Share

Recommended Posts

Bom dia, já a algum tempo que ando por volta deste assunto e esta semana resolvi pesquisar um pouco acerca de bibliotecas que façam load de texturas compativel com c++/opengl glut.

Algumas despertaram-me a atenção, a biblioteca SOIL e a freeimage. Pelo que vi, a segunda é mais recente mas têm menos conteúdo na internet.

Já que não tenho nenhuma experiência com esse tipo de bibliotecas resolvi fazer este tópico.

Qual a que me aconselham a usar? Será uma mais simples e mais bem estruturada do que outra?

Obrigado.

Edited by seuqram
Link to comment
Share on other sites

Bom dia, já a algum tempo que ando por volta deste assunto e esta semana resolvi pesquisar um pouco acerca de bibliotecas que façam load de texturas compativel com c++/opengl glut.

Algumas despertaram-me a atenção, a biblioteca SOIL e a freeimage. Pelo que vi, a segunda é mais recente mas têm menos conteúdo na internet.

Já que não tenho nenhuma experiência com esse tipo de bibliotecas resolvi fazer este tópico.

Qual a que me aconselham a usar? Será uma mais simples e mais bem estruturada do que outra?

Obrigado.

Edited by seuqram
Link to comment
Share on other sites

Eu já tentei a alguns dias e não deu certo...

GLuint LoadTexture(const char*filename,int width,int height)
{
GLuint texture;
unsigned char * data;
FILE * file;
file = fopen( filename, "rb" );

if ( file == NULL ) return 0;
data = (unsigned char *)malloc( width * height * 3 );
//int size = fseek(file,);
fread( data, width * height * 3, 1, file );
fclose( file );

for(int i = 0; i < width * height ; ++i)
{
 int index = i*3;
 unsigned char B,R;
 B = data[index];
 R = data[index+2];
 data[index] = R;
 data[index+2] = B;
}

glGenTextures( 1, &texture );
glBindTexture( GL_TEXTURE_2D, texture );
glTexEnvf( GL_TEXTURE_ENV,		
GL_TEXTURE_ENV_MODE,GL_MODULATE );
glTexParameterf( GL_TEXTURE_2D,														
GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST );

glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,GL_REPEAT );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,GL_REPEAT );
gluBuild2DMipmaps( GL_TEXTURE_2D, 3, width, height,GL_RGB, GL_UNSIGNED_BYTE, data );
free( data );
return texture;
}

Apliquei o

GLuint texture= LoadTexture( "your.bmp",910,683);
glEnable(GL_TEXTURE_2D);

e depois antes da respetiva face:

glColor3f( 1.0, 1.0, 1.0 );
glBindTexture (GL_TEXTURE_2D, texture);
glBegin(GL_QUADS);
glVertex2f(0,0); glTexCoord2f (0, 0);
glVertex2f(0,1); glTexCoord2f (0, 1);
glVertex2f(1,1); glTexCoord2f (1, 1);
glVertex2f(1,0); glTexCoord2f (1, 0);

será que está a faltar algo ou tenho alguma coisa errada na função de fazer load?

http://postimg.org/image/acrqfv1rr/

Edited by apocsantos
geshi
Link to comment
Share on other sites

não podes ler um ficheiro e assumir que os dados que estão lá estão direitihnos como pensas ... mesmo os ficheiros bmp possuem um cabeçalho que não interessa a não ser para determinar como ler os dados contidos no ficheiro.

deverias, ai sim, usar alguma biblioteca de funções para leitura das imagens dos ficheiros e só depois enviar a imagem para a placa gráfica

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.