OBJ文件: 这里的OBJ文件是Wavefront公司的一种3D模型文件,不是VC在连接过程中产生的OBJ文件。GLM实现了用C语言对OBJ文件的常用操作,用于简单的3D游戏编程应该足够了。3DS MAX,MAYA都可以把模型以OBJ文件式导出。OBJ文件中包含模型的顶点,面,三角形,法向,纹理坐标等数据,但是其中不包含纹理和材质。材质可以放在OBJ文件中指定一个材质库文件中,使用时材质库文件一般和OBJ文件放在一起。纹理图形就要自己想办法了。//模型数据结构:struct GLMmodel{ char* pathname; //模型文件和材质库的路径 char* mtllibname; //材质库名 GLuint numvertices; //顶点数 GLfloat* vertices; //储存顶点的向量 GLuint numnormals; //模型法向数 GLfloat* normals; //储存法向的向量 GLuint numtexcoords; //纹理坐标数 GLfloat* texcoords; //储存纹理坐标的向量 GLuint numfacetnorms; //规则平面数 GLfloat* facetnorms; //储存规则平面的向量 GLuint numtriangles; //三角形数 GLMtriangle* triangles; //储存三角形的向量 GLuint nummaterials; //材质数 GLMmaterial* materials; //储存材质的向量 GLuint numgroups;//图元组数 GLMgroup* groups;//储存图元组的向量 GLfloat position[3];//模型的位置 了解这个模型数据结构主要用于自己扩充操作,以下是glm提供的相关操作://单位化模型model并返回缩放比例因子单位化就是把模型通过平移和缩放变换限制到3维坐标系中点为中心的一个单位正方体区域内GLfloat glmUnitize(GLMmodel* model); //计算模型的宽,高,深尺寸,结果保存在dimensions所指的3元素数组中GLvoid glmDimensions(GLMmodel* model, GLfloat* dimensions); //按比例参数缩放模型,参数大于1放大,大于0小于1缩小,小于0反射,等于0缩小到0GLvoid glmScale(GLMmodel* model, GLfloat scale); //反转模型的多边形顶点顺序,同时反转法向量,默认多边形顶点顺序是逆时针的。GLvoid glmReverseWinding(GLMmodel* model); //计算模型面的法向(假定多边形顶点顺序为逆时针)GLvoid glmFacetNormals(GLMmodel* model); //计算模型的平滑顶点法向,angle参数为平滑交叉的最大角度(角度制)GLvoid glmVertexNormals(GLMmodel* model, GLfloat angle); //按线性投影产生纹理坐标,它把顶点线性映射到矩形上GLvoid glmLinearTexture(GLMmodel* model); //按球形映射产生纹理坐标GLvoid glmSpheremapTexture(GLMmodel* model); //从内存中释放模型GLvoid glmDelete(GLMmodel* model); //从Wavefront公司标准的.OBJ文件中读取模型GLMmodel* glmReadOBJ(char* filename); //将模型按Wavefront .OBJ文件式写入文件,文件名由filename参数指定//mode指定写入方式,此参数为取或(“|”)的位联合://GLM_NONE - 只按顶点处理//GLM_FLAT - 按面计算法向//GLM_SMOOTH - 按顶点计算法向//GLM_TEXTURE - 包含纹理座标//GLM_COLOR - 只包含颜色信息(纯色材质)//GLM_MATERIAL - 包含材质信息//其中GLM_FLAT和GLM_SMOOTH不能同时指定//GLM_COLOR和GLM_MATERIAL也不能同时指定GLvoid glmWriteOBJ(GLMmodel* model, char* filename, GLuint mode); //按mode指定模式使用当前的OPENGL绘制上下文(context)绘制模型//mode参数同glmReadOBJ中的mode参数GLvoid glmDraw(GLMmodel* model, GLuint mode); //由模型生成OPENGL显示列表并返回显示列表索引号//其中mode参数同glmWriteOBJ和glmDraw中的mode参数GLuint glmList(GLMmodel* model, GLuint mode); //合并模型中差别很小的顶点,epsilon参数指定要合并顶点间的最大差距//推荐epsilon参数0.为焊接模型的起点GLvoid glmWeld(GLMmodel* model, GLfloat epsilon); //读取PPM式的图形文件//返回一个位色的图象指针(可用于OPENGL纹理映射和图象绘制函数)//同时图象尺寸存储在width,height指针参数指定的地址中glmReadPPM(char* filename, int* width, int* height);
推荐整理分享glm使用说明(glimp使用方法),希望有所帮助,仅作参考,欢迎阅读内容。
![glm使用说明(glimp使用方法)](https://www.jiuchutong.com/image/20240129/1706502691.jpg)
文章相关热门搜索词:glm0,glocalme使用说明书,glm25说明书中文,glm1,glm30说明书,glm25说明书中文,glm25说明书中文,glm02,内容如对您有帮助,希望把文章链接给更多的朋友!
在MAC平台上编译GLFW并配置到Xcode 由于MacOSX.已经不再鼓励使用GLUT库进行OpenGL开发,缘由是因为其实在太老了其项目组已经停止更新好多年,而且不怎么安全,现在可供OpenGL开发的窗
OpenGL ES常用API OPenGLES常用API:glClearColor(0.f,0.f,0.f,1.f);//设置模式窗口的背景颜色,颜色采用的是RGBAglViewport(0,0,iScreenWidth,iScreenHeight);//设置视口的大小以及位置,视口:
Android OpenGL ES 入门 原创: