Windows下OpenGL轻松加载BMP, GIF, JPEG, PNG, and TIFF图片
Windows下轻松加载BMP, GIF, JPEG, PNG, and TIFF图片,并用OpenGL生成纹理
/* window下OpenGL加载纹理,图片格式BMP, GIF, JPEG, PNG, and TIFF -----------jiese1990 我要加载一个jpg图片有人叫我用OpenCV来读图片再用OpenGL来生成纹理; 我了个去,OpenCV这么大一个库,我又不搞其跨平台的!不过,当时我还真用了,OpenCV。 贱贱的发现了简单加载方法,不知道怎么加载的同学可以参考下 */ //参考博客 //1 //http://www.cnblogs.com/glaivelee/archive/2011/10/10/2205151.html bmp/gif/jpg图象格式介绍 //2 //http://blog.csdn.net/akof1314/article/details/5167279 用CImage类来显示PNG、JPG等图片 //BMP文件格式是Windows环境中交换与图有关的数据的一种标准,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。 //Windows系统内部各图像绘制操作都是以BMP为基础的。 //如果是vc6.0编译器的话编译通不过因为没有atlimage /**************************ATLLoadTexture()函数介绍****************** 功能:windows下加载纹理,支持的图片类型:BMP, GIF, JPEG, PNG, and TIFF 参数介绍 fileName,文件路径+文件名 返回值: 加载成功返回成功后的纹理id 加载失败返回0 */ GLuint ATLLoadTexture(const char *fileName) { BITMAP bm; GLuint idTexture = 0; CImage img; //需要头文件atlimage.h HRESULT hr = img.Load(fileName); if ( !SUCCEEDED(hr) ) //文件加载失败 { MessageBox(NULL, "文件加载失败", "ERROR", 0); return NULL; } HBITMAP hbmp = img; if(!GetObject(hbmp, sizeof(bm), &bm)) return 0; glGenTextures(1, &idTexture); if (idTexture) { glBindTexture(GL_TEXTURE_2D, idTexture); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glPixelStoref(GL_PACK_ALIGNMENT, 1); glTexImage2D(GL_TEXTURE_2D, 0, 3, bm.bmWidth, bm.bmHeight, 0, GL_BGR, GL_UNSIGNED_BYTE, bm.bmBits); //这里不是GL_RGB } return idTexture; }
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇: 拼接字符串常量