Sandýk görüntümüzden 256x256 çözünürlükte baþlayarak, daha küçük 8 doku haritasý görüntüsü yapýlmýþtýr. Her biri de yeniden renklendirildi, bu nedenle OpenGL sistemi doku haritasýný deðiþtirdiðinde açýk olmalý! bu nedenle, yuvarlak doku oluþturmak ve 9 doku haritasýný okumak için doku haritasý yükleme iþlevini deðiþtirmek zorundayýz. Bu iþleme yardýmcý olmak için görüntü dosyalarý crate0.bmp, crate1, bmp - crate8.bmp olarak adlandýrýlmýþtýr. Kod deðiþiklikleri oldukça basittir.
Kod:
GLvoid LoadTexture(GLvoid)
{
char file[11];
int i;
Image *TextureImage;
for( i = 0; i<9; i++ )
{
sprintf(file,"crate%1d.bmp",i); /* create the name */
TextureImage = (Image *) malloc(sizeof(Image));
if (TextureImage == NULL) {
printf("Error allocating space for image");
exit(1);
}
if (!ImageLoad(file, TextureImage)) {
exit(1);
}
/* 2d texture, level of detail i , 3 components (red, green, blue), */
/* x size from image, y size from image, */
/* border 0 (normal), rgb color data, unsigned byte data, and finally the data itself. */
glTexImage2D(GL_TEXTURE_2D, i, 3,
TextureImage->sizeX, TextureImage->sizeY,
0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage->data);
free( TextureImage );
}
Tüm yaptýðýmýz, adlandýrma þemasýna göre dosya adýný saðlamak için basit bir mekanizma oluþturmak ve doku eþleme seviyesi deðiþkeninin þimdi döngü deðiþkeni i olduðundan emin olmaktýr. Boyut bilgisi aslýnda hayatý kolaylaþtýrmak için görüntü yapýsýnda saklanýr.
Kurulumun son kýsmý, OpenGL sistemine minipmap'larý küçültme iþlevleri için kullanmak istediðimizi bildirmektir. Yani, doku görüntüleri küçüldüðünde, mevcut haritalardan seçim yapýn.
Kod:
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,
GL_NEAREST); /* cheap scaling when image bigger than texture */
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,
GL_NEAREST_MIPMAP_NEAREST); /* use mipmaps */
bu kadar!
Bookmarks