用GLM来读取显示有纹理的OBJ
注意这里的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相关推荐
- opencv java 显示图片_【opencv三】利用opencv读取显示图片
在opencv中读取显示图片的头文件是highgui.hpp. 整体代码如下,如要测试自己的图片,需要将代码段中的图片地址更改为自己图片的绝对路径. #include "opencv2/hi ...
- qt 关闭窗口的槽函数_勇哥的VC++应用框架学习之QT(1) 信号槽、按钮控件、opencv读取显示图片...
前言勇哥对于C语言,C++早些年有一些接触,这个系列贴子就记载一下C++应用框架的学习经验. 在写程序时,UI.基础类库.应用程序框架对于vc来讲,只能依靠MFC和QT了. 勇哥对MFC有很强的抵触, ...
- python 3.8.0版本的skimage库是什么_python的skimage库 图像读取显示
单幅图像读取并显示 代码 """ 读取图像并显示 """ import matplotlib.pyplot as plt import ma ...
- skimage 图像读取显示
单幅图像读取并显示 代码 """ 读取图像并显示 """ import matplotlib.pyplot as plt import ma ...
- WFDB软件包简介——ECG数据在Matlab下的读取/显示方法
转载自 http://pfyu.bokee.com/6946657.html ECG数据在Matlab下的读取/显示方法 WFDB软件包包含两大组件: 1.WFDB库,支持心电信号读取及分析: 2.W ...
- 微信小程序——读取显示用户头像昵称
微信小程序--读取显示用户头像昵称 代码仓库地址 一.实验目标 1.学习使用快速启动模板创建小程序的方法: 2.学习不使用模板手动创建小程序的方法. 二.实验步骤 2.1 自动生成小程序 完成开发者注 ...
- GT21L16S2Y点阵数据的读取显示
个人笔记:GT21L16S2Y点阵数据的读取显示 CC2640R2F+1.3寸OLED上机通过. 1.GT21L16S2Y.c /* GT21L16S2Y.c*/ #include "uti ...
- 【opencv四】利用opencv读取显示视频
在opencv中读取显示视频的头文件是highgui.hpp.视频图像处理头文件imgproc.hpp. 整体代码如下,如要测试自己的图片,需要将代码段中的图片地址更改为自己图片的绝对路径. #inc ...
- PHP读取显示当前目录的图片
PHP应用:读取显示 图片 2018-09-28 前言: 上PHP课,为了提交作业(都是截图)时让老师和我看得都比较舒服,然后我就想做一个主页,能够显示文件夹内所有的图片,并且不用经常上去改网页! 一 ...
最新文章
- LeetCode-106-Construct Binary Tree from Inorder and Postorder Traversal
- 三十三、基本分段存储管理方式
- C# 虚函数和重载函数
- omnigraffle怎么画曲线
- RD基本功——Shell、Bash与Linux环境变量配置
- Insightface项目爬坑指南+使用本地数据集训练流程(MXNET版)
- python读音播报-基于python GUI开发的点名小程序(语音播报)
- python reduce函数filter_Python filter()及reduce()函数使用方法解析
- Spring Cloud Sleuth Zipkin - (1)
- opencv特效编辑之雕刻效果
- VISIO各种图标超全(IT行业专用网络及硬件)_工业控制网络的现状
- 简约大气昼夜双色导航主题模板/WordPress导航主题模板
- Python数据解析
- 直播电商“变坏”,从罗永浩们开始
- (~ ̄▽ ̄)~罗马数字图表
- micropython 固件编译关于 spi psram opi qspi 的设置
- itext生成页眉页脚
- 求选修了学号为“95001”学生所学过的所有课程的学生学号和姓名
- IBM ServerGuide 9.0
- 网络变压器作用(续):T件和扼流圈(K件)组成的网络变压器及其作用
热门文章
- RBF(径向基)神经网络
- 机器视觉:PC式视觉系统与嵌入式视觉系统区别
- 机器视觉:偏振片应用
- 10条买房错误思维,你中招了几条?
- android切图倍数,【Flutter工具】fmaker:自动生成倍率切图/自动更换App图标
- [转贴]What's the Scroll Lock key on my computer for?
- SFB 项目经验-29-批量-启用用户-启用企业语音-设置分机号(项目中)
- IBM SVC (2145-CF8) node脱机故障恢复分享
- 【转】性能测试设计和LR原理的探讨
- RDC升级(remote desktop service)