3,881
社区成员
发帖
与我相关
我的任务
分享
unsigned int LoadTex(string Image)
{
unsigned int Texture;
FILE* img = NULL;
img = fopen(F_PATH, "r+");
if (NULL == img){
MessageBox(NULL, TEXT("aaa"), TEXT("aaa"), MB_ICONINFORMATION | MB_YESNO);
exit(0);
}
unsigned long bWidth = 0;
unsigned long bHeight = 0;
DWORD size = 0;
fseek(img, 0, SEEK_SET); /*函数设置文件指针stream的位置。stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置*/
fread(&bWidth, 4, 1, img); /*从一个文件流中读数据,最多读取count个元素,每个元素size字节,返回实际读取到的元素个数*/
fread(&bHeight, 4, 1, img);
fseek(img, 0, SEEK_END);
size = ftell(img);/*用于得到文件位置指针当前位置相对于文件首的偏移字节数*/
unsigned char *data = (unsigned char*)malloc(size);/*系统申请分配指定size个字节的内存空间*/
fseek(img, 0, SEEK_SET); // image data
fread(data, size, 1, img);
fclose(img);
glGenTextures(1, &Texture); /*根据纹理参数返回n个纹理索引。*/
glBindTexture(GL_TEXTURE_2D, Texture); /*允许建立一个绑定到目标纹理的有名称的纹理 告诉OpenGL下面对纹理的任何操作都是对它所绑定的纹理对象的*/
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, bWidth, bHeight, GL_BGR_EXT, GL_UNSIGNED_BYTE, data); /*将载入的位图文件(*.bmp)转换成纹理贴图。*/
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); /*确定如何把纹理象素映射成像素.*/
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
if (data)
free(data);
return Texture;
}