2012-09-20 13 views

Respuesta

30

Mira mi función de implementación simple c para cargar la textura.

GLuint LoadTexture(const char * filename) 
{ 

    GLuint texture; 

    int width, height; 

    unsigned char * data; 

    FILE * file; 

    file = fopen(filename, "rb"); 

    if (file == NULL) return 0; 
    width = 1024; 
    height = 512; 
    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; 
} 

La función anterior devuelve los datos de la textura. Almacenar los datos de textura en la variable

GLuint texture 
texture= LoadTexture("your_image_name.bmp"); 

Ahora se puede obligar a la texure usando glBindTexture

glBindTexture (GL_TEXTURE_2D, texture); 
+7

+1 por la forma de implementarlo usted mismo. – Cosine

+1

esto es inseguro – AbiusX

+0

esto es un montón de diversión, nunca se consideró escribir el mío ... –

4

pago my la TextureLoader (TextureLoader.h + TextureLoader.cpp) de OpenGL_3_2_Utils:

https://github.com/mortennobel/OpenGL_3_2_Utils

Los dos archivos no depende de ningún otro archivo, y también debería funcionar sin problemas en cualquier versión de OpenGL (y cualquier plataforma). El uso del ejemplo se puede encontrar en el comentario del archivo.

+0

brillante, gracias :) –

+1

¿Cómo puedo añadir el archivo glew.h falta? Envié una pregunta sobre esto aquí http://stackoverflow.com/questions/12518757/installing-glew-and-using-it-with-xcode –

+0

SO tiene una política de correo no deseado que requiere divulgación cuando menciona herramientas o aplicaciones que desarrolla. Tienes que decir que son tuyos. –

Cuestiones relacionadas