資源簡介
使用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
評論
共有 條評論