资源简介
使用trackball和glm,可以读取和显示obj文件,并进行旋转与缩放。运行环境:vs2010, 运行后用o或者O选择obj文件,+和-进行缩放
代码片段和文件信息
/*
* GLM library. Wavefront .obj file format reader/writer/manipulator.
*
* Written by Nate Robins 1997.
* email: ndr@pobox.com
* www: http://www.pobox.com/~ndr
*/
/* includes */
#include
using namespace std;
#include
#include
#include
#include
#include “glm.h“
/* Some files do not define M_PI... */
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
/* defines */
#define T(x) model->triangles[(x)]
/* enums */
enum { X Y Z W }; /* elements of a vertex */
/* global variables */
/*
GLubyte *_teximage_new;
static int _teximageWidth_new = 1 _teximageHeight_new = 1;
*/
#define MAX_TEXTURES 100
static GLuint textureArray[MAX_TEXTURES] = {0};
/* typedefs */
/* _GLMnode: general purpose node
*/
typedef struct _GLMnode {
GLuint index;
GLboolean averaged;
struct _GLMnode* next;
} GLMnode;
/* strdup is actually not a standard ANSI C or POSIX routine
so implement a private one. OpenVMS does not have a strdup; Linux‘s
standard libc doesn‘t declare strdup by default (unless BSD or SVID
interfaces are requested). */
static char *
stralloc(const char *string)
{
char *copy;
copy = (char*) malloc(strlen(string) + 1);
if (copy == NULL)
return NULL;
strcpy(copy string);
return copy;
}
/* private functions */
/* _glmMax: returns the maximum of two floats */
static GLfloat
_glmMax(GLfloat a GLfloat b)
{
if (a > b)
return a;
return b;
}
/* _glmAbs: returns the absolute value of a float */
static GLfloat
_glmAbs(GLfloat f)
{
if (f < 0)
return -f;
return f;
}
/* _glmDot: compute the dot product of two vectors
*
* u - array of 3 GLfloats (GLfloat u[3])
* v - array of 3 GLfloats (GLfloat v[3])
*/
static GLfloat
_glmDot(GLfloat* u GLfloat* v)
{
assert(u);
assert(v);
/* compute the dot product */
return u[X] * v[X] + u[Y] * v[Y] + u[Z] * v[Z];
}
/* _glmCross: compute the cross product of two vectors
*
* u - array of 3 GLfloats (GLfloat u[3])
* v - array of 3 GLfloats (GLfloat v[3])
* n - array of 3 GLfloats (GLfloat n[3]) to return the cross product in
*/
static GLvoid
_glmCross(GLfloat* u GLfloat* v GLfloat* n)
{
assert(u);
assert(v);
assert(n);
/* compute the cross product (u x v for right-handed [ccw]) */
n[X] = u[Y] * v[Z] - u[Z] * v[Y];
n[Y] = u[Z] * v[X] - u[X] * v[Z];
n[Z] = u[X] * v[Y] - u[Y] * v[X];
}
/* _glmNormalize: normalize a vector
*
* n - array of 3 GLfloats (GLfloat n[3]) to be normalized
*/
static GLvoid
_glmNormalize(GLfloat* n)
{
GLfloat l;
assert(n);
/* normalize */
l = (GLfloat)sqrt(n[X] * n[X] + n[Y] * n[Y] + n[Z] * n[Z]);
n[0] /= l;
n[1] /= l;
n[2] /= l;
}
/* _glmEqual: compares two vectors and returns GL_TRUE if they are
* equal (within a certain threshold) or GL_FALSE if not. A
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 160256 2013-08-12 14:26 OpenGLDemo\Debug\glut32.dll
文件 2646136 2006-03-12 08:47 OpenGLDemo\Model\bunny.obj
文件 200151 2006-03-12 08:47 OpenGLDemo\Model\cow.obj
文件 3506958 2006-03-12 08:47 OpenGLDemo\Model\dinosaur.obj
文件 65180 2013-10-12 17:30 OpenGLDemo\OpenGLDemo\glm.cpp
文件 8982 2013-10-12 17:29 OpenGLDemo\OpenGLDemo\glm.h
文件 531058 2013-06-06 22:00 OpenGLDemo\OpenGLDemo\include\OpenGL\glew.h
文件 27670 2013-06-06 22:00 OpenGLDemo\OpenGLDemo\include\OpenGL\glut.h
文件 42822 2013-06-06 22:00 OpenGLDemo\OpenGLDemo\include\OpenGL\wglew.h
文件 28728 2013-06-06 22:00 OpenGLDemo\OpenGLDemo\lib\OpenGL\glut32.lib
文件 1426 2013-10-12 17:14 OpenGLDemo\OpenGLDemo\LoadFileDlg.cpp
文件 267 2013-09-24 21:38 OpenGLDemo\OpenGLDemo\LoadFileDlg.h
文件 5341 2013-10-13 23:02 OpenGLDemo\OpenGLDemo\OpenGLDemo.cpp
文件 391 2013-10-13 22:44 OpenGLDemo\OpenGLDemo\OpenGLDemo.h
文件 4323 2013-10-13 22:39 OpenGLDemo\OpenGLDemo\OpenGLDemo.vcxproj
文件 1647 2013-10-13 22:39 OpenGLDemo\OpenGLDemo\OpenGLDemo.vcxproj.filters
文件 9106 2013-10-13 22:39 OpenGLDemo\OpenGLDemo\trackball.cpp
文件 3394 2011-03-31 23:07 OpenGLDemo\OpenGLDemo\trackball.h
文件 897 2013-10-03 17:05 OpenGLDemo\OpenGLDemo.sln
文件 160256 2013-08-12 14:26 OpenGLDemo\Release\glut32.dll
目录 0 2013-10-03 17:19 OpenGLDemo\OpenGLDemo\include\OpenGL
目录 0 2013-10-13 23:14 OpenGLDemo\OpenGLDemo\lib\OpenGL
目录 0 2013-10-03 17:17 OpenGLDemo\OpenGLDemo\include
目录 0 2013-10-03 17:17 OpenGLDemo\OpenGLDemo\lib
目录 0 2013-10-13 23:15 OpenGLDemo\Debug
目录 0 2013-10-13 23:12 OpenGLDemo\Model
目录 0 2013-10-13 23:15 OpenGLDemo\OpenGLDemo
目录 0 2013-10-13 23:16 OpenGLDemo\Release
目录 0 2013-10-13 23:15 OpenGLDemo
----------- --------- ---------- ----- ----
............此处省略2个文件信息
- 上一篇:遗传算法优化支持向量机算法
- 下一篇:MySlideTabbar
相关资源
- GLFW-3.2.bin.WIN32
- OpenGL实现画球体算法的源码
- OPenGL实现 3DS卫星地球
- 实验一 OpenGL 程序设计基础
- OpenGL Shading Language 橙宝书 源代码 De
- Opengl实现樱花飞舞贴图
- NeHe opengl教程48课全中文pdf,英文pdf,
- opengl实现太阳系动态模型,地球,月
- 计算机图形学 OpenGL实验源码+实验文档
- OpenNI获取三维点云并用OpenGL显示可旋
- glfw-3.2.1源码(需要自行编译)
- 计算机图形学的设计作业。。OpenGl源
- OpenGL绘制3D企鹅
- opengl 实现的机器人行走
- OpenGL 纹理 二重纹理
- Bezier曲面 Coons曲面 B样条曲面绘制(用
- Opengles2.0地球
- 计算机图形学-基于OpenGL的3D迷宫漫游
- 大量Opengl
- Opengl 太阳系
- 用opengl绘制的兔子
- 基于OpenGL的描点绘制Bezier曲线
- opengl天空盒的效果源代码
- Qt5版NeHe OpenGL教程6-10
- 基于opengl下的选择物体局部放大
- OPENGL粒子系统之喷泉
- 3D opengl魔方
- opengles加载3d模型(纹理+光照)
- opengl画的小花
- OpenGL三维图形系统开发与实用技术.
评论
共有 条评论