//参照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;
}

OpenGL3.x,4.x中使用FreeImage显示图片的BUG-黑色,或颜色分量顺序错乱的更多相关文章

  1. Bootstrap中data-src无法显示图片,但是src可以

    在学习bootstrap时,书中的源码是用的data-src来定义图像位置,但是我在使用的时候无法显示图片:data-src可以在img标签中使用来显示图片吗?我使用src可以,而是用data-src ...

  2. Android4.4中WebView无法显示图片解决方案

    在Android4.4之前我们在使用WebView时为了提高加载速度我设置了(myWebView.getSettings().setBlockNetworkImage(true);//图片加载放在最后 ...

  3. 七、在U-boot中让LCD显示图片

    1. 增加Nandflash读取代码 因为要显示图片,而图片明显是放在Nandflash中比较合适,因此需要有能够操作Nandflash的函数.在U-boot中已经有能操作Nandflash的函数了, ...

  4. Android中高效的显示图片之一 ——加载大图

    在网上看了不少文章,发现还是官方文档介绍最详细,把重要的东西简单摘要出来.详细可看官方文档地址 ( http://www.bangchui.org/read.php?tid=9 ) . 在应用中显示图 ...

  5. Android中高效的显示图片之三——缓存图片

    加载一张图片到UI相对比较简单,如果一次要加载一组图片,就会变得麻烦很多.像ListView,GridView,ViewPager等控件,需要显示的图片和将要显示的图片数量可能会很大. 为了减少内存使 ...

  6. javaweb中上传图片并显示图片,用我要上传课程信息(里面包括照片)这个例子说明

    原理:  从客户端上传到服务器                照片——文件夹——数据库 例如:桌面一张照片,在tomacat里创建upload文件夹,把桌面照片上传到upload文件夹里,并且把照片的 ...

  7. Android中高效的显示图片之二——在非UI线程中处理图片

    在“加载大图”文章中提到的BitmapFactory.decode*方法,如果源数据是在磁盘.网络或其它任何不是在内存中的位置,那么它都不应该在UI线程中执行.因为它的加载时间不可预测且依赖于一系列因 ...

  8. 在c#中使用bitblt显示图片

    使用bitblt比DrawImage有更好的性能 using AForge.Video.DirectShow; using System; using System.Collections.Gener ...

  9. ionic ng-src 在网页显示,但是导出apk在android手机中运行不显示图片

    解决方法参照: http://stackoverflow.com/questions/29896158/load-image-using-ng-src-in-android-ionic-aplicat ...

随机推荐

  1. 同一局域网环境下的arp欺骗和中间人攻击(mac)

    最近读了一篇有关arp欺骗和中间人攻击的文章,于是乎就想着自己实现一下,顺便验证下微信在回话劫持后的安全性. 1.本机环境 Macbook Air:OS X 10.11 El Captain 2.推荐 ...

  2. ESLint在vue中的使用

    ESLint的用途 1.审查代码是否符合编码规范和统一的代码风格: 2.审查代码是否存在语法错误:  中文网地址 http://eslint.cn/ 使用VSCode编译器在Vue项目中的使用 在初始 ...

  3. HDU - 6201:transaction transaction transaction(最长路)

    Kelukin is a businessman. Every day, he travels around cities to do some business. On August 17th, i ...

  4. PS抠图之单色背景图片

    PS一直大家比较喜欢的一款图像处理软件,很多朋友对使用基本的功能.最近很多的朋友都在问我关于PS抠图的方法,这些方法也不是一句两句就能说清楚,并且每天都重复的叫他们,不如直接写出来刚刚接触到的朋友一起 ...

  5. kali视频学习(11-15)

    第四周kali视频(11-15)学习 11.漏洞分析之OpenVAS使用 12.漏洞分析之扫描工具 13.漏洞分析之WEB爬行 14.漏洞分析之WEB漏洞扫描(一) 15.漏洞分析之WEB漏洞扫描(二 ...

  6. ubuntu下访问支付宝官网,安装安全控件

    (1)根据支付宝提示下载安装控件的压缩包 aliedit.tar.gz (2)解压安装 (3)重启浏览器就可以了

  7. jfrog artifactory docker 安装试用

    预备环境(docker 安装模式,使用的免费版本): docker-ce (启用镜像加速) 1. 镜像拉取 docker.bintray.io/jfrog/artifactory-oss 2. 启动 ...

  8. unity drawcall测试

    unity引擎影响drawcall的元素(使用Quad和Cube对比测试) 1.相机的background(没有渲染元素区域的颜色),4Verts.2Tris.1SetPass calls:      ...

  9. javax.servlet-api-xx.jar和servlet-api.jar区别

    一.简介支持servlet的jar包.应该叫servlet-api.jar如果编写过servlet就知道要用到HttpServletRequest和HttpServletResponse等对象,这些对 ...

  10. RESTful处理JSON

    @RequestMapping(value = "/dblist", method = RequestMethod.GET) @ResponseBody public Map< ...