//参照FreeImage官网给出的CTextrueManager写的加载函数
//官方给的例子是用opengl3.0以下的旧GL写的,没有使用glGenerateMipmap(GL_TEXTURE_2D)来产生mipmap
//在GL3.0以后,渲染时默认是开启了MIPMAP的,如果不调用glGenerateMipmap来生成MIPMAP,则渲染出的贴图一片黑色
  //另外要注意freeimage的颜色分量顺序是gbr,不知为什么,故这里fmt应传GL_BGR
GLuint CResMgr::LoadTextrue(const char* texFile, GLenum fmt, GLuint ifmt, GLuint level, GLuint border) {
FREE_IMAGE_FORMAT fifmt = FreeImage_GetFileType(texFile, );
if (fifmt == FIF_UNKNOWN) {
fifmt = FreeImage_GetFIFFromFilename(texFile);
if (fifmt == FIF_UNKNOWN) {
xsMsg(texFile, "图片加载失败:未知的格式", MB_ICONERROR);
return ;
}
} if (!FreeImage_FIFSupportsReading(fifmt)) {
xMsg(texFile, "freeImage不支持该文件格式的读取", MB_ICONERROR);
return ;
} FIBITMAP* dib = FreeImage_Load(fifmt, texFile);
if (!dib) {
xMsg(texFile, "freeImage_load失败", MB_ICONERROR);
return ;
} BYTE* bits = FreeImage_GetBits(dib);
GLuint width = FreeImage_GetWidth(dib);
GLuint height = FreeImage_GetHeight(dib); if (!bits || width == || height == ) {
xMsg(texFile, "freeImage_getbits, getwidth, getheight-failed", MB_ICONERROR);
return ;
} GLuint texId;
glGenTextures(, &texId);
glBindTexture(GL_TEXTURE_2D, texId);
glTexImage2D(GL_TEXTURE_2D, level, ifmt, width, height, border, fmt, GL_UNSIGNED_BYTE, bits); glGenerateMipmap(GL_TEXTURE_2D); //注意,不加这句渲染出的贴图是一片黑色,
FreeImage_Unload(dib);
return texId;
}

最新文章

  1. 常用的 SQL语句------CRUD
  2. JVM知识点
  3. Linux中exec命令相关
  4. ASP.NET ViewState详解
  5. IOS 解析JSON
  6. express 4
  7. 5 秒创建 k8s 集群 - 每天5分钟玩转 Docker 容器技术(115)
  8. IT企业如何实现项目管理信息化的目标
  9. Dagger2的基本概念与实际应用。
  10. 循环队列搜索 Search in Rotated Sorted Array
  11. leetcode26: 删除排序数组中的重复项
  12. 用Ubuntu快速安装Jenkins
  13. Java多线程(三)—— synchronized关键字详解
  14. redis数据库通过dump.rdb文件恢复数据库或者数据库迁移
  15. yyyy-MM-dd'T'HH:mm:ss.SSS'Z'即UTC时间,与String日期转换
  16. djang 过滤器和装饰器
  17. 在jQuery定义自己函数
  18. [UI] 精美UI界面欣赏[9]
  19. 【转】WCF扩展系列 - 行为扩展(Behaviors)
  20. idea 设置编译快捷键(代替 ctrl+f9)

热门文章

  1. 《模式 工程化实现及扩展 (设计模式 C#版)》 - 书摘精要
  2. Git介绍及基本操作
  3. 阿里云,腾讯云,等等的云 Ubuntu14.04升级16.04
  4. I.MX6 Android 设备节点权限
  5. MS SQL Server2000转换成MySQL
  6. linux rhel7下安装python
  7. Java关闭线程的安全方法
  8. 转载Verilog乘法器
  9. IT售前经验谈
  10. Oracle配置文件tnsnames.ora新增链接后连接报错:ORA-12154: TNS:无法解析指定的标识符