快速业务通道

设计自己的3D图像引擎(4):WuguiEngine之模型、特效、贴图

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
VertexBuffer,IndexBuffer等等,这些内容也同样需要在ResourceManager中加载,因为他们也是“公有”的内容。

为了更方便的使用模型,我加入了ModelResource类,保存模型中的公有数据

下面就贴上ModelResource的定义

1: class ModelResource : IDisposed
2: {
3: public:
4:   ModelResource(string _filename, GraphicsDevice* device);
5:   virtual void Dispose();
6:
7:   ID3DXMesh* GetD3DMesh();
8:   IDirect3DVertexBuffer9* GetVertexBuffer();
9:   IDirect3DIndexBuffer9* GetIndexBuffer();
10:   BoundingSphere* GetOriginalSphere();
11: protected:
12:   void Initialize();
13:   void CalculateBoundingSphere();
14:
15:   string filename;
16:   GraphicsDevice* pDevice;
17:   ID3DXMesh* pMesh;
18:   IDirect3DVertexBuffer9* pVertexBuffer;
19:   IDirect3DIndexBuffer9* pIndexBuffer;
20:   BoundingSphere* pOriginalSphere;
21:   DWORD FVF;
22: };

我在ModelResource中保存有VertexBuffer,IndexBuffer。OriginalSphere是模型加载时候的包围球,也是属于公有的,方便做变换的时候使用。

代码具体参加ModelResource.cpp,这里就不详细的说了。

模型类中还包含有Material类(主要包含贴图),Transformation类(包含变换),这些代码都是比较好懂的,就不一一解释了。

4. 示例

本节的示例代码在Mainlogic中的Example2中可以找到

初始化一个模型,并加入贴图与Effect的代码看起来像这个样子:

1: //初始化模型
2: pModel = new Model("Content\\Tiger.x", pDevice);
3: pModel->SetDiffuseMap("Content\\Tiger.bmp");
4: pModel->SetPosition(D3DXVECTOR3(0,0,-20));
5:
6: //初始化模型的属性
7: pModel->SetEffect(new SimpleEffect(pDevice, pModel, "SimpleTexture.fx"));
8: pModel->GetEffect()->Initialize();

很简单吧。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号