• 大小: 2.34MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-06
  • 语言: 其他
  • 标签: opengl  trackball  glm  obj  

资源简介

使用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个文件信息

评论

共有 条评论