1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
GLuint LoadTexture(const char * pic, int width, int height)
{
GLuint Texture;
BYTE * data;
FILE * picfile;
FILE * in;
picfile = fopen(pic, "rb");
if (picfile == NULL)
return 0;
data = (BYTE *)malloc(width * height * 3);
BITMAPFILEHEADER MyHeaderFile;
fread(&MyHeaderFile, sizeof(BITMAPFILEHEADER), 1, picfile);
if (MyHeaderFile.bfType != 19778)
return 0;
BITMAPINFOHEADER MyHeaderInfo;
fread(&MyHeaderInfo, sizeof(BITMAPINFOHEADER), 1, picfile);
fseek(picfile, MyHeaderFile.bfOffBits, SEEK_SET);
fread(data, width * height, 3, picfile);
fclose(picfile);
glGenTextures(1, &Texture);
glBindTexture(GL_TEXTURE_2D, Texture);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_BGR, GL_UNSIGNED_BYTE, data);
free(data);
return Texture;
}
|