資源簡介
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\li
?????文件???????3120??2014-04-01?22:35??displaymodel\displaymodel\Debug\li
?????文件???????1012??2014-04-01?22:35??displaymodel\displaymodel\Debug\li
?????文件????????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個文件信息
評論
共有 條評論