OpenGl读取obj格式文件


可以通过OPENGL打开obj格式的文件,运行之后按“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  OpenGLDemoDebugglut32.dll

     文件      89088  2016-06-02 18:00  OpenGLDemoDebugOpenGLDemo.exe

     文件     464564  2016-06-02 18:00  OpenGLDemoDebugOpenGLDemo.ilk

     文件     724992  2016-06-02 18:00  OpenGLDemoDebugOpenGLDemo.pdb

     文件    2646136  2006-03-12 08:47  OpenGLDemoModelunny.obj

     文件     200151  2006-03-12 08:47  OpenGLDemoModelcow.obj

     文件    3506958  2006-03-12 08:47  OpenGLDemoModeldinosaur.obj

     文件     919720  2016-06-02 16:44  OpenGLDemoModelHand2.obj

     文件     109386  2016-06-02 18:00  OpenGLDemoOpenGLDemoDebugglm.obj

     文件      31017  2016-06-02 18:00  OpenGLDemoOpenGLDemoDebugLoadFileDlg.obj

     文件       1506  2016-06-02 18:00  OpenGLDemoOpenGLDemoDebugOpenGLDemo.log

     文件      49419  2016-06-02 18:00  OpenGLDemoOpenGLDemoDebugOpenGLDemo.obj

     文件       2598  2016-06-02 18:00  OpenGLDemoOpenGLDemoDebugOpenGLDemo.tlogcl.command.1.tlog

     文件      42446  2016-06-02 18:00  OpenGLDemoOpenGLDemoDebugOpenGLDemo.tlogCL.read.1.tlog

     文件       2220  2016-06-02 18:00  OpenGLDemoOpenGLDemoDebugOpenGLDemo.tlogCL.write.1.tlog

     文件       1486  2016-06-02 18:00  OpenGLDemoOpenGLDemoDebugOpenGLDemo.tloglink.command.1.tlog

     文件       2894  2016-06-02 18:00  OpenGLDemoOpenGLDemoDebugOpenGLDemo.tloglink.read.1.tlog

     文件        856  2016-06-02 18:00  OpenGLDemoOpenGLDemoDebugOpenGLDemo.tloglink.write.1.tlog

     文件        167  2016-06-02 18:00  OpenGLDemoOpenGLDemoDebugOpenGLDemo.tlogOpenGLDemo.lastbuildstate

     文件      28757  2016-06-02 18:00  OpenGLDemoOpenGLDemoDebug rackball.obj

     文件     691200  2016-06-02 18:00  OpenGLDemoOpenGLDemoDebugvc120.idb

     文件     176128  2016-06-02 18:00  OpenGLDemoOpenGLDemoDebugvc120.pdb

     文件      65180  2013-10-12 17:30  OpenGLDemoOpenGLDemoglm.cpp

     文件       8982  2013-10-12 17:29  OpenGLDemoOpenGLDemoglm.h

     文件     531058  2013-06-06 22:00  OpenGLDemoOpenGLDemoincludeOpenGLglew.h

     文件      27670  2013-06-06 22:00  OpenGLDemoOpenGLDemoincludeOpenGLglut.h

     文件      42822  2013-06-06 22:00  OpenGLDemoOpenGLDemoincludeOpenGLwglew.h

     文件      28728  2013-06-06 22:00  OpenGLDemoOpenGLDemolibOpenGLglut32.lib

     文件       1426  2013-10-12 17:14  OpenGLDemoOpenGLDemoLoadFileDlg.cpp

     文件        267  2013-09-24 21:38  OpenGLDemoOpenGLDemoLoadFileDlg.h

............此处省略24个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)