资源简介
将3DS文件导入到OpenGL中,并根据鼠标移动的位置动态调整相机的视角,实时的显示不同角度的三维场景。

代码片段和文件信息
// 3ds.cpp: implementation of the C3ds class.
//
//////////////////////////////////////////////////////////////////////
#include “3ds.h“
#include
#include “gamehead.h“
#include “Frustum.h“
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//#define INT_MAX 2147483647
//#define INT_MIN 2147483647-1
#define FLT_MAX 3.402823466e+38F
#define FLT_MIN 1.175494351e-38F
C3DS::C3DS()
{
// m_Model.numOfMaterials = 0;
// m_Model.numOfobjects = 0;
}
C3DS::~C3DS()
{
for(int i = 0;iject.size();i++)
{
if(m_Model.vobject[i].pVerts)
delete []m_Model.vobject[i].pVerts;
if(m_Model.vobject[i].pTexVerts)
delete []m_Model.vobject[i].pTexVerts;
if(m_Model.vobject[i].pFaces)
delete []m_Model.vobject[i].pFaces;
// if(m_Model.vobject[i].pNormals)
// delete []m_Model.vobject[i].pNormals;
}
}
void ReadString(FILE *filechar *str)
{
int i=0;char l_char;
do
{
fread (&l_char 1 1 file);
str[i]=l_char;
i++;
}while(l_char != ‘\0‘ && i<255);
}
bool C3DS::Load3DS ( char *p_filename)
{
t3DModel *pModel = &m_Model;
int i; //Index variable
FILE *l_file; //File pointer
t3Dobject *pObj;
unsigned short l_chunk_id; //Chunk identifier
unsigned int l_chunk_lenght; //Chunk lenght
unsigned short l_qty; //Number of elements in each chunk
unsigned short l_face_flags; //Flag that stores some face information
if ((l_file=fopen (p_filename “rb“))== NULL) return false; //Open the file
while (ftell (l_file) < filelength (fileno (l_file))) //Loop to scan the whole file
{
fread (&l_chunk_id 2 1 l_file); //Read the chunk header
fread (&l_chunk_lenght 4 1 l_file); //Read the lenght of the chunk
switch (l_chunk_id)
{
//----------------- MAIN3DS -----------------
// Description: Main chunk contains all the other chunks
// Chunk ID: 4d4d
// Chunk Lenght: 0 + sub chunks
//-------------------------------------------
case 0x4d4d:
break;
//----------------- EDIT3DS -----------------
// Description: 3D Editor chunk objects layout info
// Chunk ID: 3d3d (hex)
// Chunk Lenght: 0 + sub chunks
//-------------------------------------------
case 0x3d3d:
break;
//--------------- EDIT_object ---------------
// Description: object block info for each object
// Chunk ID: 4000 (hex)
// Chunk Lenght: len(object name) + sub chunks
//-------------------------------------------
case 0x4000:
{
t3Dobject obj;
obj.numOfFaces = 0;
obj.numOfVerts = 0;
obj.numTexVertex = 0;
obj.pFaces = 0;
obj.pTexVerts = 0;
obj.pVerts = 0;
// memset(&obj0sizeof(t3Dobject));
ReadString(l_fileobj.strName);
pModel->vobject.push_back(obj);
}
break;
//--------------- OBJ_TRIMESH ---------------
// Descr
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10025 2003-11-05 22:15 235235343\3ds.cpp
文件 3100 2003-11-05 17:50 235235343\3ds.h
文件 749898 2003-10-23 20:10 235235343\BRICK.bmp
文件 245814 2003-10-23 17:15 235235343\brown-ma.bmp
文件 16367 2003-11-05 22:17 235235343\Camera.cpp
文件 3244 2003-11-05 22:17 235235343\Camera.h
文件 1911 2003-11-05 22:12 235235343\DemoHouse.3DS
文件 28996 2003-11-03 23:46 235235343\Frustum.cpp
文件 2216 2003-11-03 23:27 235235343\Frustum.h
文件 1668 2003-08-12 00:15 235235343\GameHead.h
文件 14733 2003-11-02 14:00 235235343\GameWnd.cpp
文件 1319 2003-11-05 17:38 235235343\GameWnd.h
文件 107406 2003-10-23 20:13 235235343\greenLf.bmp
文件 5075 2003-11-05 22:18 235235343\Load3DSDemo.dsp
文件 545 2003-08-09 21:20 235235343\Load3DSDemo.dsw
文件 1813 2003-11-05 22:20 235235343\Load3DSDemo.plg
文件 1757 2003-10-24 23:42 235235343\main.cpp
文件 16758 2003-06-12 18:19 235235343\Math.cpp
文件 2644 2003-06-12 18:19 235235343\Math.h
文件 1730 2003-11-05 22:18 235235343\Portal.plg
文件 1020 2003-11-05 22:09 235235343\Scene.cpp
文件 703 2003-11-05 22:17 235235343\Scene.h
文件 15735 2003-11-05 22:15 235235343\Texture.cpp
文件 934 2003-11-05 22:15 235235343\Texture.h
文件 3132 2003-08-05 07:26 235235343\vector.cpp
文件 1805 2003-10-23 10:19 235235343\Vector.h
文件 2916 2004-10-04 21:33 235235343\Cn700.com.txt
文件 223 2004-10-04 20:06 235235343\readme.htm
文件 2470 2004-10-04 21:37 235235343\readme.txt
目录 0 2004-11-14 15:11 235235343
............此处省略4个文件信息
相关资源
- OpenGL参考手册
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
- 用OPENGL画的一个简单的直升飞机
- opengl完美天空盒
- 3D绘图程序设计:使用Direct3D 10/9和Ope
- OpenGL绘制可运动自行车源程序.zip
- OpenGL实现飘动效果
- opengl室内场景的绘制,包括碰撞检测
评论
共有 条评论