Witam. Chciałbym nałożyć teksturę na swoją kwadrykę(kula).
Robię to tak:
GLuint texture[2];
...................
AUX_RGBImageRec *LoadBMP(char *fileName)
{
FILE *file = NULL; //file handle
if ( !fileName ) //make sure the file name is given
return NULL; //if not, quit the function
file = fopen(fileName, "r"); //check to see if the file exist
if ( file )
{
fclose(file); //close the handle
return auxDIBImageLoad(fileName); // Load The Bitmap And Return A Pointer
}
return NULL; //if fail to load, then return null
}//
int LoadGLTextures()// Załaduj bitmapy i konwertuj na tekstury
{
int Status = FALSE, i;
AUX_RGBImageRec*TextureImage[2]; //wskaźniki do danych
memset(TextureImage,0,sizeof(void*)*2); //zerowanie//
// Zastosuj LoadBMP do załadowania danych z plików BMP
if((TextureImage[0]=LoadBMP("1.bmp"))
&&(TextureImage[1]=LoadBMP("2.bmp")))
{
Status=TRUE;
//Utworzenie nazw tekstur:
glGenTextures(2, &texture[0]);
// Typowa generacja tekstur na podstawie danych z DIB:
for(i=0;i<2;i++)
{ //Tworzenie i stosowanie obiektu tekstury:
glBindTexture(GL_TEXTURE_2D,texture[i]);
// Przekształcenie danych z pliku DIBna teksturę OpenGL
glTexImage2D
(GL_TEXTURE_2D, // Tworzona jest tekstra 2D
0, // Rozdzielczość na razie 0
3, // Ilość składowych koloru
TextureImage[i]->sizeX, //serokosc
TextureImage[i]->sizeY, //wysokosc
0, //ramka
GL_RGB, //font kolorow
GL_UNSIGNED_BYTE, //typ danych obrazu
TextureImage[i]->data); // Wskaźnik do danych
glTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}
}
for(i=0;i<2;i++)
{
if(TextureImage[i])//Jeśli tekstura istnieje
{
if(TextureImage[i]->data) // jesli obraz istnieje
{
free(TextureImage[i]->data); // zwolnij pamiec zajmowana
}
free(TextureImage[i]); // zwolnij pamiec zajmowana przez teksture
}
}
return Status;
}
i teraz tworze kwadrykę :
void kula(void)
{
GLUquadricObj*obj;
obj=gluNewQuadric();
glScalef(0.1,0.1,0.1);
gluQuadricTexture(obj,GL_TRUE);
glBindTexture(GL_TEXTURE_2D,texture[0]);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
glColor3d(1.0,0.8,0.8);
glEnable(GL_TEXTURE_2D);
gluSphere(obj,20,15,7);
glDisable(GL_TEXTURE_2D);
}
Jednak przy wywołaniu funkcji kula tekstury nie ma....
Proszę o pomoc.