不用AuxDIBImageLoad()向opengl中载入bmp纹理
2015-05-07 20:32
441 查看
转载:不用AuxDIBImageLoad()向opengl中载入bmp纹理
原文地址:http://www.cnblogs.com/gaoteng/archive/2011/12/03/2350368.html
不用AuxDIBImageLoad()向opengl中载入bmp纹理 这个函数从硬盘中加载24位window DIB 位图。呵呵,解释的多了。为了节约时间,我没有加载整个bmp图的Header部分,而仅仅获取我们需要的部分:宽度,高度,和图片大小。 下面是代码部分
正如你可以看到,bitmap的宽度和高度偏移量为18和24,尺寸准确,我们只是从整个文件的大小减去54(总头大小),我们得到一个准确的读数。读文件头的大小,有时会出现故障。
用这个函数是相当容易的,就像是加载一个普通的纹理一样。
我发现这个函数比调用AuxDIBImageLoad()或者win32 API要快,呵呵。如此之酷。
原文地址:http://www.cnblogs.com/gaoteng/archive/2011/12/03/2350368.html
不用AuxDIBImageLoad()向opengl中载入bmp纹理 这个函数从硬盘中加载24位window DIB 位图。呵呵,解释的多了。为了节约时间,我没有加载整个bmp图的Header部分,而仅仅获取我们需要的部分:宽度,高度,和图片大小。 下面是代码部分
unsigned int LoadTex(string Image) { unsigned int Texture; FILE* img = NULL; img = fopen(Image.c_str(),"rb"); unsigned long bWidth = 0; unsigned long bHeight = 0; DWORD size = 0; fseek(img,18,SEEK_SET); fread(&bWidth,4,1,img); fread(&bHeight,4,1,img); fseek(img,0,SEEK_END); size = ftell(img.file) - 54; unsigned char *data = (unsigned char*)malloc(size); fseek(img,54,SEEK_SET); // image data fread(data,size,1,img); fclose(img); glGenTextures(1, &Texture); glBindTexture(GL_TEXTURE_2D, Texture); gluBuild2DMipmaps(GL_TEXTURE_2D, 3, bWidth, bHeight, GL_BGR_EXT, GL_UNSIGNED_BYTE, data); 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; }
正如你可以看到,bitmap的宽度和高度偏移量为18和24,尺寸准确,我们只是从整个文件的大小减去54(总头大小),我们得到一个准确的读数。读文件头的大小,有时会出现故障。
用这个函数是相当容易的,就像是加载一个普通的纹理一样。
bool texLoaded = false; unsigned int texture; ... if (!texLoaded) { texture = LoadTex("omfgleebhax.bmp"); // load the texture texLoaded = true; } glBindTexture(GL_TEXTURE_2D, texture); // bind the texture
我发现这个函数比调用AuxDIBImageLoad()或者win32 API要快,呵呵。如此之酷。
相关文章推荐
- OpenGL中不用AUX库来加载BMP图片作为纹理
- OpenGL中不用AUX库来加载BMP图片作为纹理[转载]
- 不用AuxDIBImageLoad()向opengl中载入bmp纹理
- 不用AuxDIBImageLoad()向opengl中载入bmp纹理
- 【转】glTexImage2D()和gluBuild2DMipmaps() [将载入的位图文件(*.bmp)转换成纹理贴图]+glTexParameteri()纹理过滤函数
- OpenGL载入DDS压缩纹理
- 【OpenGL】OpenGL加载24位真彩色bmp图片或者256色bmp图片制作作纹理
- OpenGL入门学习[十一 03]bmp纹理
- openGL可编程笔记二——解码bmp文件并添加纹理
- opengl读取24位BMP文件为纹理并处理黑色背景为透明
- OpenGL纹理贴图24位bmp图片,代码如下
- openGL学习笔记6 bmp 2D纹理贴图
- OpenGL载入图片作为纹理
- OpenGL_ES加载TGA/BMP纹理
- 】OPENGL加载BMP纹理图的方式 三种
- 类:CTexture,OpenGL中读取多种纹理的类。支持bmp,tga,rgb,rgba等
- 关于大四上学期的计算机图形学实验报告123——opengl建模、载入OBJ文件、纹理贴图、光照、交互。
- 【原创】OPENGL加载BMP纹理图的方式
- OpenGL加载BMP纹理图片
- VC运用OPENGL加载BMP纹理图的实现方法汇总