Windows下OpenGL轻松加载BMP, GIF, JPEG, PNG, and TIFF图片

原文地址:http://blog.csdn.net/jiese1990/article/details/8474333

Windows下轻松加载BMP, GIF, JPEG, PNG, and TIFF图片,并用OpenGL生成纹理

[cpp]  view plain copy
  1. /* 
  2. window下OpenGL加载纹理,图片格式BMP, GIF, JPEG, PNG, and TIFF 
  3.                                                     -----------jiese1990 
  4.     我要加载一个jpg图片有人叫我用OpenCV来读图片再用OpenGL来生成纹理; 
  5.     我了个去,OpenCV这么大一个库,我又不搞其跨平台的!不过,当时我还真用了,OpenCV。 
  6.     贱贱的发现了简单加载方法,不知道怎么加载的同学可以参考下 
  7. */  
  8.   
  9.   
  10. //参考博客  
  11. //1 //http://www.cnblogs.com/glaivelee/archive/2011/10/10/2205151.html bmp/gif/jpg图象格式介绍  
  12. //2 //http://blog.csdn.net/akof1314/article/details/5167279 用CImage类来显示PNG、JPG等图片  
  13.   
  14. //BMP文件格式是Windows环境中交换与图有关的数据的一种标准,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。  
  15. //Windows系统内部各图像绘制操作都是以BMP为基础的。  
  16. //如果是vc6.0编译器的话编译通不过因为没有atlimage  
  17.   
  18.   
  19. /**************************ATLLoadTexture()函数介绍****************** 
  20.     功能:windows下加载纹理,支持的图片类型:BMP, GIF, JPEG, PNG, and TIFF 
  21.     参数介绍 
  22.         fileName,文件路径+文件名 
  23.     返回值: 
  24.         加载成功返回成功后的纹理id 
  25.         加载失败返回0 
  26. */  
  27.   
  28. GLuint ATLLoadTexture(const char *fileName)  
  29. {  
  30.     BITMAP bm;  
  31.     GLuint idTexture = 0;  
  32.     CImage img;             //需要头文件atlimage.h  
  33.     HRESULT hr = img.Load(fileName);  
  34.     if ( !SUCCEEDED(hr) )   //文件加载失败  
  35.     {  
  36.         MessageBox(NULL, "文件加载失败""ERROR", 0);  
  37.         return NULL;  
  38.     }  
  39.     HBITMAP hbmp = img;  
  40.     if(!GetObject(hbmp, sizeof(bm), &bm))  
  41.         return 0;  
  42.   
  43.     glGenTextures(1, &idTexture);  
  44.     if (idTexture)  
  45.     {  
  46.         glBindTexture(GL_TEXTURE_2D, idTexture);  
  47.         glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);  
  48.         glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);  
  49.         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);  
  50.         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);  
  51.         glPixelStoref(GL_PACK_ALIGNMENT, 1);  
  52.         glTexImage2D(GL_TEXTURE_2D, 0, 3, bm.bmWidth, bm.bmHeight, 0, GL_BGR, GL_UNSIGNED_BYTE, bm.bmBits); //这里不是GL_RGB  
  53.     }  
  54.     return idTexture;  
  55. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值