Bueno, si lo desea, puede escribir su propio cargador bmp. Here es la especificación y algo de código. De lo contrario, tengo un cargador tga here. Una vez que lo haga, devolverá los datos en una matriz de caracteres sin signo, también conocida como GL_UNSIGNED_BYTE.
Para crear una textura OpenGL a partir de esta matriz, primero debe definir una variable que sirva como referencia para esa textura en la memoria de OpenGL.
GLuint textureid;
Entonces, es necesario contar con OpenGL para hacer espacio para una nueva textura:
glGenTextures(1, &textureid);
Entonces, es necesario obligar a que la textura como la textura usada actualmente.
glBindTexture(GL_TEXTURE_2D, textureid);
Finalmente, debe decirle a OpenGL dónde están los datos para la textura actual.
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, your_data);
Entonces, cuando se procesa una primitiva, que se aplican a la primitiva llamando glBindTexture nuevo:
glBindTexture(GL_TEXTURE_2D, textureid);
glBegin(GL_QUAD);
glTexCoord2f(0.0, 0.0);
glVertex3f(0.0, 0.0, 0.0);
glTexCoord2f(1.0, 0.0);
glVertex3f(1.0, 0.0, 0.0);
glTexCoord2f(1.0, 1.0);
glVertex3f(1.0, 1.0, 0.0);
glTexCoord2f(0.0, 1.0);
glVertex3f(0.0, 1.0, 0.0);
glEnd();
Sin embargo, cualquier momento de aplicar la textura a una primitiva, es necesario tener la textura datos de coordenadas junto con datos de vértice, y glutSolidSphere no genera datos de coordenadas de textura.Para texturizar una esfera, puedes generarla tú mismo o llamar a las funciones de texgen o usar sombreadores.