浅谈DirectX的模型加载
浅谈DirectX的模型加载
基于DirectX的游戏开发中,人物和模型由针对每个对象的成千上万个多边形组成的,对纹理映射而言这是非常复杂的,假设不加索引的几何图形,而只是用三角形(DirectX的模型基础是三角形)。那将会是一场恐怖的噩梦。所以现在将简单地介绍从游戏程序外获取那些图形开发资源。
加载模型的方法多种多样,鉴于现实生活中各式各样的模型文件格式,加载的渠道也不太一致。文件格式只是在特定文件中保存信息的方式。Direct3D中的文件格式也是多种多样,如X模型文件,OBJ模型,UMF模型等。现在主要对X模型也就是DirectX模型的加载进行介绍:首先先对X模型进行些微介绍,X模型是在Direct3D中使用的模型,可以使用内置的Direct3d函数加载,渲染,和释放X模型。X文件是基于Mesh模板网格的,这种模板包括外观,纹理,法线等。X模板可以被保存为文本文件,也可以被保存为二进制文件。这意味这可以在任意的文本编辑器中打开X文件并修改其内容。下面介绍一下由两个三角形组成的X模型:
两个三角形组成的X文件模型的实例
|
这就是一个完整的X模型实例代码 , 它包含了 几个模块:Material模板, Mesh模板,
MeshMaterial List模板,MeshTextureCoords模板。
下面将介绍次模型的加载,加载一个老虎模型,主要可分为两种类型的:Common与非Common类的。
非Common结构
1,模型的全局变量
|
2.初始化D3D流程
|
3,初始化几何数据流程
|
程序刚开始使用的缓冲区ID3DXBuffer,它是数据缓冲区接口,可以储存定点项目数据,索引数据,邻近数据,材质信息等。
它有两个非常重要的接口GetBufferPointer()和GetBufferSize(),分别是返回缓冲区数据指针和缓冲区大小指针。
(这上面的代码还缺少了一些渲染之类的,和释放处理内存的步棸)
其中包含了一个结构:
|
使用Common结构
步棸 1,在派生类CMyD3DApplication的声明中添加一行成员变量声明。
CD3DMesh* m_pMesheh;
步棸2,在CMyD3DApplication构造函数里添加一行。
m_pMesh = new CD3DMesh;
步棸3,在可重写函数InitDeviceObjects()里添加一行。
m_pMesh->Create(m_pd3dDevice, “Map.X”);
步棸4,可重写函数RestoreDeviceObjects()里添加
m_pd3dMesh->RestoreDeviceObjects(m_pd3dDevice);
步棸5, 在可重写函数Render()里添加
m_pMesh->Render(M_pd3dDevice);
步棸6,在可重写函数InvalidareDeviceObjects()中添加一行
m_pMesh->InvalidareDeviceObjects();
步棸7,在可重写函数DeleteDeviceObjects()中添加一行
m_pMesh->Destroy();
编译后即可完成加载 ,再用Common时应注意在安装DirectX时的环境配置应该添加DXSDK/Sampels/c++/common/include 以及其下的/Src.
——————————————–
浅谈DirectX的模型加载相关推荐
- 第八章 DirectX 3D模型加载和骨骼动画(下)
接下来,我们介绍一些骨骼动画.我们之前大致讲过骨骼动画,存储骨骼动画的网格文件要比普通的文件复杂一下.主要是增加了骨骼信息,蒙皮信息以及动画帧信息.骨骼动画的实现原理是仿照人体运动学,将3D模型由一种 ...
- 浅谈前端实现页面加载进度条以及 nprogress.js 的实现
以前在 Vue 的项目用了 nprogress 这个插件,一直对于其如何得知加载进度充满好奇,最近又看到了「前端如何实现页面加载进度条」这个问题,今天周六恰好一探究竟.以下仅为一家之言,如有异议,欢迎 ...
- html 中加载字体太慢,浅谈CSS字体的加载加速问题
除了各种特定字体系列外(如 Times.Verdana.Helvetica 或 Arial),CSS定义了 5 种通用字体系列: Serif 字体 这些字体成比例,而且有上下短线.如果字体中的所 ...
- 浅谈《MediaPlayer》加载进度定时刷新
这是我在CSDN的第一篇博客,也是我第一次写博客,当我踏进"码农"的世界的时候,我就要坚持往下走,学习更多的东西,废话不多说,开始进入正题. 由于才开始从入门到进阶的学习阶段,存在 ...
- 【TensorFlow】TensorFlow从浅入深系列之十三 -- 教你深入理解模型持久化(模型保存、模型加载)
本文是<TensorFlow从浅入深>系列之第13篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维 ...
- DirectX的OBJ模型加载与渲染
在之前的DirectX例子里我用的模型是.x文件,DirectX有一个方法D3DXLoadMeshFromX可以加载.x模型,但是这里有个问题,.x文件是没法用文本编辑器打开查看结构的,这里我来演示一 ...
- python模型保存save_浅谈keras保存模型中的save()和save_weights()区别
今天做了一个关于keras保存模型的实验,希望有助于大家了解keras保存模型的区别. 我们知道keras的模型一般保存为后缀名为h5的文件,比如final_model.h5.同样是h5文件用save ...
- 浅谈Java内存模型、并发、多线程
浅谈Java内存模型.并发.多线程 Java内存模型(Java Memory Model)是围绕着在并发编程中如何处理原子性,可见性,有序性三个特性而建立的模型. 下面我简单描述一下这三个特性: 原子 ...
- Python时间序列模型推理预测实战:时序推理数据预处理(特征生成、lstm输入结构组织)、模型加载、模型预测结果保存、条件判断模型循环运行
Python时间序列模型推理预测实战:时序推理数据预处理(特征生成.lstm输入结构组织).模型加载.模型预测结果保存.条件判断模型循环运行 目录
最新文章
- Imageloader4-ImageLoader中的变量
- 作为一名Java开发者应该掌握的基础知识汇总!
- 腾讯敏捷研发协作平台TAPD荣获CCF科学技术奖
- uniapp image图片切换动效_动效设计从概念到落地
- 浅谈Netty相关概念
- Java读中文乱码解决方案
- 泰迪杯A题通讯产品销售和盈利能力分析一等奖作品
- 初等变换和阶梯矩阵【】
- 参与openEuler社区不到1年,我成为了社区Maintainer……
- 【Linux】详解socket编程接口
- 南大通用GBase XDM支持的操作平台
- iframe标签控制视频大小及自动播放
- Kutools for Excel 结合 300 多种高级功能和工具
- 关于Halcon的离心机试管槽定位
- AR剪辑笔记之视频调色
- springboot高并发下耗时操作的实现,我先收藏为敬
- vc2012\vc\include\stdlib.h(360): error C2381: “exit”: 重定义;__declspec(noreturn) 不同
- 【无标题】常见攻击构造方法
- 福利|这是小编用工作为你换来的5折优惠!
- 应用程序图标设置 系统图标缓存问题