资源简介
使用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
相关资源
- OpenGL参考手册
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
- 用OPENGL画的一个简单的直升飞机
- opengl完美天空盒
- 3D绘图程序设计:使用Direct3D 10/9和Ope
- OpenGL绘制可运动自行车源程序.zip
- OpenGL实现飘动效果
- opengl室内场景的绘制,包括碰撞检测
评论
共有 条评论