注意这里的GLM不是OPENGL MATHAMATICS LIBRAR——而是an Alias Wavefront OBJ file library,用来操作OBJ文件的一个库,这里用其来读取带纹理的OBJ文件并显示出来

1. 下载GLM库

http://devernay.free.fr/hacks/glm/

此时,最新版本为0.3.2

下载完后,是源码,当我们需要的时候,把这些源码加入我们的工程当中即可

2.由于带纹理的OBJ,需要读取图片文件,我们这里用到了jpeg格式的图片,所以我们需要先配置 libjpeg

配置方法见:http://blog.csdn.net/seamanj/article/details/50631699

3.在项目的预处理定义里面定义:HAVE_LIBJPEG

4.最最重要的一步,我们需要修改一下GLM的原文件

打开glm.c中的glmDraw函数

大概在1966行附近

if(blending == blenditer) {if(newmaterial) {newmaterial = 0;if (mode & GLM_TEXTURE) {//if(newtexture) {// newtexture = 0;glEnd();if(map_diffuse == -1)glBindTexture(_glmTextureTarget, 0);elseglBindTexture(_glmTextureTarget, model->textures[map_diffuse].id);glBegin(GL_TRIANGLES);//}}

把如下语句注释掉,这是因为没有纹理的时候, newtexture为0,但是此时需要把_glmTextureTarget绑到0上,即取消绑定,不让画的东西有纹理贴上去。 但如果按原来的代码执行的话,没有纹理的组会调用有纹理组的图片,但是由于程序不会给没有纹理的组画纹理坐标,所以得到的结果是,没有纹理的组取的是纹理的某一点,然后整个没有纹理的组的颜色就是纹理中某点的颜色。

5.在程序中使用,这里只给出关键代码,完整代码见附件

g_model = glmReadOBJ("teeth.obj");
glmDraw(g_model, GLM_SMOOTH|GLM_TEXTURE|GLM_MATERIAL);

渲染出来的效果如下:

如果按照自带的代码来的话,渲染效果如下:

源代码在此

注意,源代码用了AntTweakbar,如何配置它,请看

http://blog.csdn.net/seamanj/article/category/5858361

用GLM来读取显示有纹理的OBJ相关推荐

  1. opencv java 显示图片_【opencv三】利用opencv读取显示图片

    在opencv中读取显示图片的头文件是highgui.hpp. 整体代码如下,如要测试自己的图片,需要将代码段中的图片地址更改为自己图片的绝对路径. #include "opencv2/hi ...

  2. qt 关闭窗口的槽函数_勇哥的VC++应用框架学习之QT(1) 信号槽、按钮控件、opencv读取显示图片...

    前言勇哥对于C语言,C++早些年有一些接触,这个系列贴子就记载一下C++应用框架的学习经验. 在写程序时,UI.基础类库.应用程序框架对于vc来讲,只能依靠MFC和QT了. 勇哥对MFC有很强的抵触, ...

  3. python 3.8.0版本的skimage库是什么_python的skimage库 图像读取显示

    单幅图像读取并显示 代码 """ 读取图像并显示 """ import matplotlib.pyplot as plt import ma ...

  4. skimage 图像读取显示

    单幅图像读取并显示 代码 """ 读取图像并显示 """ import matplotlib.pyplot as plt import ma ...

  5. WFDB软件包简介——ECG数据在Matlab下的读取/显示方法

    转载自 http://pfyu.bokee.com/6946657.html ECG数据在Matlab下的读取/显示方法 WFDB软件包包含两大组件: 1.WFDB库,支持心电信号读取及分析: 2.W ...

  6. 微信小程序——读取显示用户头像昵称

    微信小程序--读取显示用户头像昵称 代码仓库地址 一.实验目标 1.学习使用快速启动模板创建小程序的方法: 2.学习不使用模板手动创建小程序的方法. 二.实验步骤 2.1 自动生成小程序 完成开发者注 ...

  7. GT21L16S2Y点阵数据的读取显示

    个人笔记:GT21L16S2Y点阵数据的读取显示 CC2640R2F+1.3寸OLED上机通过. 1.GT21L16S2Y.c /* GT21L16S2Y.c*/ #include "uti ...

  8. 【opencv四】利用opencv读取显示视频

    在opencv中读取显示视频的头文件是highgui.hpp.视频图像处理头文件imgproc.hpp. 整体代码如下,如要测试自己的图片,需要将代码段中的图片地址更改为自己图片的绝对路径. #inc ...

  9. PHP读取显示当前目录的图片

    PHP应用:读取显示 图片 2018-09-28 前言: 上PHP课,为了提交作业(都是截图)时让老师和我看得都比较舒服,然后我就想做一个主页,能够显示文件夹内所有的图片,并且不用经常上去改网页! 一 ...

最新文章

  1. LeetCode-106-Construct Binary Tree from Inorder and Postorder Traversal
  2. 三十三、基本分段存储管理方式
  3. C# 虚函数和重载函数
  4. omnigraffle怎么画曲线
  5. RD基本功——Shell、Bash与Linux环境变量配置
  6. Insightface项目爬坑指南+使用本地数据集训练流程(MXNET版)
  7. python读音播报-基于python GUI开发的点名小程序(语音播报)
  8. python reduce函数filter_Python filter()及reduce()函数使用方法解析
  9. Spring Cloud Sleuth Zipkin - (1)
  10. opencv特效编辑之雕刻效果
  11. VISIO各种图标超全(IT行业专用网络及硬件)_工业控制网络的现状
  12. 简约大气昼夜双色导航主题模板/WordPress导航主题模板
  13. Python数据解析
  14. 直播电商“变坏”,从罗永浩们开始
  15. (~ ̄▽ ̄)~罗马数字图表
  16. micropython 固件编译关于 spi psram opi qspi 的设置
  17. itext生成页眉页脚
  18. 求选修了学号为“95001”学生所学过的所有课程的学生学号和姓名
  19. IBM ServerGuide 9.0
  20. 网络变压器作用(续):T件和扼流圈(K件)组成的网络变压器及其作用

热门文章

  1. RBF(径向基)神经网络
  2. 机器视觉:PC式视觉系统与嵌入式视觉系统区别
  3. 机器视觉:偏振片应用
  4. 10条买房错误思维,你中招了几条?
  5. android切图倍数,【Flutter工具】fmaker:自动生成倍率切图/自动更换App图标
  6. [转贴]What's the Scroll Lock key on my computer for?
  7. SFB 项目经验-29-批量-启用用户-启用企业语音-设置分机号(项目中)
  8. IBM SVC (2145-CF8) node脱机故障恢复分享
  9. 【转】性能测试设计和LR原理的探讨
  10. RDC升级(remote desktop service)