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

资源简介

opengl读取 obj 文件,并用键盘和鼠标控制放大缩小和camera的角度

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#include
#include“read_obj.h“
//globals


//other functions and main
//.obj loader code


void loadObj(char *fname)
{
   FILE *fp;
   int read;
   //GLfloat x y z;
   char ch;
  // object=glGenLists(1);
   fp=fopen(fname“r“);
   if (!fp)
   {
    printf(“can‘t open file %s\n“ fname);
    //exit(1);
   }
    glPushMatrix();
    while(!(feof(fp)))
    {
     read=fscanf(fp“%c“&ch);
     switch(ch)
 {
  case ‘v‘:
  fscanf(fp“%f %f %f“&vertex[ivertex].x&vertex[ivertex].y&vertex[ivertex].z);
  ivertex++;
      break;
  case ‘f‘:
      fscanf(fp“%d %d %d“&polygon[ipolygon].f1&polygon[ipolygon].f2&polygon[ipolygon].f3);
      ipolygon++;
      break;  
 }
}
 
   glPopMatrix();
   fclose(fp);
}
//.obj loader code ends here
void findobjcenter()
{
for(int i=0;i {
if(xmin>vertex[i].x)
{
xmin = vertex[i].x;
}
if(xmax {
xmax = vertex[i].x;
}
if(ymin>vertex[i].y)
{
ymin = vertex[i].y;
}
if(ymax {
ymax = vertex[i].y;
}
if(zmin>vertex[i].z)
{
zmin = vertex[i].z;
}
if(ymax {
zmax = vertex[i].z;
}
xcenter=(xmin+xmax)/2;
ycenter=(ymin+ymax)/2;
}
}
void reshape(int wint h)

   glViewport(00wh);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   aspect = (GLfloat)w / (GLfloat)h;
   gluPerspective (field_of_view aspect zNear zFar);
   //glOrtho(-2525-220.1100);
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
}


void draw_object()
{
   glPushMatrix();
   findobjcenter();
   glTranslatef(-xcenter-ycenter0.0);
   glTranslatef(00-105);
   glTranslatef(position[0]position[1]position[2]);
   glColor3f(1.00.230.27);
   glScalef(x_scaley_scalez_scale);
   glRotatef(xangle100);
   glRotatef(yangle010);
   glRotatef(zangle001);
   for (int i=0;i  {
 glBegin(mode);
 glVertex3d(vertex[polygon[i].f1-1].xvertex[polygon[i].f1-1].yvertex[polygon[i].f1-1].z);
 glVertex3d(vertex[polygon[i].f2-1].xvertex[polygon[i].f2-1].yvertex[polygon[i].f2-1].z);
 glVertex3d(vertex[polygon[i].f3-1].xvertex[polygon[i].f3-1].yvertex[polygon[i].f3-1].z);
 glEnd();
 }
   glPopMatrix();
}


void display(void)
{
glClearColor (0.00.00.01.0);
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotated(camera_angle_v 1.0 0.0 0.0);
glRotated(camera_angle_h 0.0 1.0 0.0);

glShadeModel (GL_SMOOTH);
GLfloat light_ambient[] = {0.2 0.2 0.2 1.0};
GLfloat light_diffuse[] = { 0.8 0.8 0.8 1.0  };
GLfloat light_specular[] = { 0.0 0.0 0.0 1.0 };
GLfloat light_position[] = { 1.0 1.0 1.0 0.0 };
glLightfv(GL_LIGHT0 GL_AMBIENT light_ambient);
glLightfv(GL_LIGHT0 GL_DIFFUSE light_diffuse);
glLightfv(GL_LIGHT0 GL_SPECULAR light_specular

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      34816  2014-04-01 22:35  displaymodel\Debug\displaymodel.exe

     文件     383916  2014-04-01 22:35  displaymodel\Debug\displaymodel.ilk

     文件     920576  2014-04-01 22:35  displaymodel\Debug\displaymodel.pdb

     文件        736  2014-04-01 22:35  displaymodel\displaymodel\Debug\cl.command.1.tlog

     文件      18950  2014-04-01 22:35  displaymodel\displaymodel\Debug\CL.read.1.tlog

     文件        592  2014-04-01 22:35  displaymodel\displaymodel\Debug\CL.write.1.tlog

     文件        381  2014-04-01 22:35  displaymodel\displaymodel\Debug\displaymodel.exe.intermediate.manifest

     文件         95  2014-04-01 22:35  displaymodel\displaymodel\Debug\displaymodel.lastbuildstate

     文件       3848  2014-04-01 22:35  displaymodel\displaymodel\Debug\displaymodel.log

     文件        707  2014-03-31 14:38  displaymodel\displaymodel\Debug\displaymodel.vcxprojResolveAssemblyReference.cache

     文件          0  2014-03-31 14:38  displaymodel\displaymodel\Debug\displaymodel.write.1.tlog

     文件       1524  2014-04-01 22:35  displaymodel\displaymodel\Debug\link.command.1.tlog

     文件       3120  2014-04-01 22:35  displaymodel\displaymodel\Debug\link.read.1.tlog

     文件       1012  2014-04-01 22:35  displaymodel\displaymodel\Debug\link.write.1.tlog

     文件        628  2014-04-01 22:35  displaymodel\displaymodel\Debug\mt.command.1.tlog

     文件        902  2014-04-01 22:35  displaymodel\displaymodel\Debug\mt.read.1.tlog

     文件        442  2014-04-01 22:35  displaymodel\displaymodel\Debug\mt.write.1.tlog

     文件      45806  2014-04-01 22:35  displaymodel\displaymodel\Debug\read_obj.obj

     文件     732160  2014-04-01 22:35  displaymodel\displaymodel\Debug\vc100.idb

     文件     372736  2014-04-01 22:35  displaymodel\displaymodel\Debug\vc100.pdb

     文件       3301  2014-03-31 22:55  displaymodel\displaymodel\displaymodel.vcxproj

     文件       1070  2014-03-31 22:55  displaymodel\displaymodel\displaymodel.vcxproj.filters

     文件        143  2014-03-13 19:21  displaymodel\displaymodel\displaymodel.vcxproj.user

     文件       5446  2014-04-01 22:35  displaymodel\displaymodel\read_obj.cpp

     文件       1057  2014-04-01 20:40  displaymodel\displaymodel\read_obj.h

     文件   33509376  2014-04-01 23:18  displaymodel\displaymodel.sdf

     文件        908  2014-03-13 19:21  displaymodel\displaymodel.sln

    ..A..H.     35840  2014-04-01 23:18  displaymodel\displaymodel.suo

     文件   34013184  2014-04-01 22:35  displaymodel\ipch\displaymodel-ff9ebc1\displaymodel-8c569a93.ipch

     目录          0  2014-04-01 22:35  displaymodel\displaymodel\Debug

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

评论

共有 条评论