资源简介
将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使用Window API绘制矢量字体非常简
- 计算机图形学四面体几何变换.doc
- 交互式计算机图形学-基于OpenGL的自顶
- 《实战OPENGL三维可视化系统开发与源
- Qt加OpenGL实现鼠标控制视角
- OpenGLSETest.zip
- QTopengl模块使用demo
- QT使用openglES模块做的立方体程序
- OpenGL坦克大战2D游戏文档包含所有模块
- opengl下的贪吃蛇
- 华南理工大学实验——OpenGL Shader导入
- OpenGL透视投影小程序源码
- OpenGL纹理贴图.jpg格式图片小程序源码
- QT5.7+OPENGL画正方体
- OpenGL实现多边形扫描转换的扫描线算
- OpenGL鼠标点选平移物体
- 基于opengl es 的显示gif的
- OpenGL编程指南(第八版)中文高清晰
- OpenGL精美房屋,落雪其上
- OpenGL光照,多种情况下的建立
- vlc opengl播放视频
- Opengl写的3d人物模型
- OPENGL学习 3D小雪人
- opengl动态云彩的模拟
- nvidia-opengl-rdp 英伟达显卡 rdp 远程桌面
- OpenGL模型视图矩阵演示
- 基于VC_的OpenGL三维动画仿真及场景漫
- OpenGL仿微信视频聊天
- OpenGL预览摄像头
- OpenGl 会走路的机器人
评论
共有 条评论