sunjiahaoz
文章平均质量分 74
beansKey
这个作者很懒,什么都没留下…
展开
-
11. cNodeTreeMesh::Render
因为渲染函数需要通过viewing frustum,你需要一条重载视角范围距离的路。如果你想画出网格的一部分,可以通过制定到视点的距离。比如,如果frustum可以看到20000单位,但你逆袭那个渲染5000单位的多边形,那么指定5000到ZDistance。Render函数开始与计算viewing frustum和锁定顶点缓冲:BOOL cNodeTreeMesh:翻译 2008-07-26 18:46:00 · 378 阅读 · 0 评论 -
2.11 Making Meshes Move With cAnimation(动画了吧)
2.11 Making Meshes Move With cAnimation(动画了吧)这是Game Core的最后一个了——网格动画。使用cAnimation你可以从x文件中装载一系列的动画并结合cObject来赋以网格生命力。cAnimation类很小,很像cMesh,cAnimation有一个很小的结构体用来保存动画数据,看看声明:class cAnimat翻译 2008-07-18 15:57:00 · 378 阅读 · 0 评论 -
2.10 Drawing Objects Using cObject(用cObject绘出对象)
“为什么不直接用cMesh对象绘出模型?”答案是:memory usage(内存用法);要是你想反复利用同一个网格(mesh),那cObject就可以帮你解决:class cObject{protected:cGraphics *m_Graphics; // cGraphics父对象cMesh *m_Mesh; // 要绘出的网格sAnimationS翻译 2008-07-18 15:56:00 · 338 阅读 · 0 评论 -
2.7 World Transformations with cWorldPosition(世界坐标啊)
2.7 World Transformations with cWorldPosition(世界坐标啊)我想你一定想知道老外在这各地方说些什么废话,我为什么不翻译呢?恩,现在还是不翻译了吧:class cWorldPosition{protected:BOOL m_Billboard; // 标志是否使用公告牌// 当前坐标、旋转、缩放floa翻译 2008-07-18 15:42:00 · 340 阅读 · 0 评论 -
9. cNodeTreeMesh::IsPolygonContained
BOOL cNodeTreeMesh::IsPolygonContained(sPolygon *Polygon, /float XPos, float YPos, float ZPos, /float Size){float XMin, XMax, YMin, YMax, ZMin, ZMax;sVertex *Vertex[3];// Get翻译 2008-07-26 18:27:00 · 306 阅读 · 0 评论 -
将分解的C++RPG引擎分配到VC++6.0 DirectX9.0 AppWizard项目中
因为项目需要,我们打算用vc++6.0 中的DirectX9.0 AppWizard工程框架。此框架可以实现MFC与DirectX的结合,可以免去很多麻烦。但之前研究的DX代码都是基于Win32,所以有移植的问题。需要 C++ -Game Programming RPGs With DirectX 中带的引擎代码转换到框架中可用。最重要的是Graphics_Core,所以对此我将原创 2008-07-26 17:48:00 · 847 阅读 · 0 评论 -
12. Using cNodeTree
只要你使用Core在你的项目中,那使用cNodeTree类是非常容易的。给他一个网格,并渲染。// Graphics = pre-initialized cGraphics objectcMesh Mesh;cNodeTreeMesh NodeTreeMesh;cCamera Camera;cFrustum Frustum;// Load a mesh翻译 2008-07-26 18:47:00 · 340 阅读 · 0 评论 -
10. cNodeTreeMesh::AddNode
你要结合Render 函数来使用cNodeTreeMesh::AddNode函数。AddNode执行对所有节点的frustum验证,并递归验证他的所有子节点。起初调用AddNode,m_ParentNode变量已经被传进AddNode,从根节点开始处理:void cNodeTreeMesh::AddNode(sNode *Node){unsigned long i翻译 2008-07-26 18:27:00 · 459 阅读 · 0 评论 -
8.cNodeTreeMesh::SortNode
cNodeTreeMesh::SortNode是一个递归函数,它计算节点3D空间中多边形的数量,并决定节点是否需要分裂为4个或8个子节点(根据树类型)。当节点适当的分裂之后,SortNode函数建立一个多边形列表包含于节点3D空间。 这个函数储存节点的坐标和开始分裂的节点:void cNodeTreeMesh::SortNode(sNode *Node, /f翻译 2008-07-26 18:26:00 · 300 阅读 · 0 评论 -
7. cNodeTreeMesh::Create and cNodeTreeMesh::Free
7. cNodeTreeMesh::Create and cNodeTreeMesh::FreecNodeTreeMesh::Create是整个处理过程的开端。要创建一个NodeTree结构,你需要一个网格(mesh)资源,较好的方法是从cMesh对象中获得。cMesh对象包含了一个网格列表,它把含一个.x文件,并可以使得事情变得简单,仅仅需要处理列表中的第一个网格就可以。 要翻译 2008-07-26 18:24:00 · 312 阅读 · 0 评论 -
6. Creating the cNodeTree Class(创建cNodeTree类)
6. Creating the cNodeTree Class(创建cNodeTree类)是时候设计下了。你得先创建一些结构用来描绘顶点(vertices)、多边形(polygons)、节点(nodes)、纹理组(texture Groups):// 这个sVertex结构体是一个常用的顶点结构体, // 它只包含3D坐标. 这里他被用于从网格顶点缓冲中返回坐标信翻译 2008-07-26 18:22:00 · 320 阅读 · 0 评论 -
2.3 Colors and cMaterial(颜色和材质)
2.3 Colors and cMaterial(颜色和材质)。。。。。又整这些没用的,直接看声明吧:class cMaterial{protected:D3DMATERIAL8 m_Material; // 材质结构体 public:cMaterial(); // 构造函数D3DMATERIAL8 *GetMaterial(); // 返翻译 2008-07-18 14:35:00 · 465 阅读 · 0 评论 -
1.3 Processes and cProcessManager(进程和cProcessManager)
1.3 Processes and cProcessManager(进程和cProcessManager)cProcessManager与cStateManager是非常相似的,只有一个微小的差别:栈中的每一个函数将会在每一个frame中调用。cProcessManager的声明是和cStateManager同一的。与其再看一遍声明,不如跳过直接看他的例子吧,每一个frame,调用两原创 2008-07-18 14:05:00 · 387 阅读 · 0 评论 -
2.8 View Transformations and cCamera(摄像机)
2.8 View Transformations and cCamera(摄像机)咦,估计老外也腻了,直接来个声明:class cCamera{protected:float m_XPos, m_YPos, m_ZPos; //位置坐标float m_XRot, m_YRot, m_ZRot; // 旋转值// 摄像机跟踪目标float m_S翻译 2008-07-18 15:44:00 · 399 阅读 · 0 评论 -
2. The Graphics Core
GraphicsCore包含的类看看表:Graphics Core 组件类描述cGraphicsD3D初始化句柄,设置渲染状态,设置纹理、材质、灯光cTexture保存一个纹理和一个显示2-D部分纹理的函数cMaterial保存一个材质的定义cLight包含一个灯光的定义翻译 2008-07-18 14:27:00 · 366 阅读 · 0 评论 -
翻译(Using the cApplication Core Object:(使用cApplication对象))
1. The System Core: Systetem Core 控制游戏应用窗口的初始化和程序流(Program flow),还有进程(Processes)、状态(States)、数据包(data Packaging)。这是开始你新游戏工程的第一个步骤。 1.1 Using the cApplication Core Object:(使用翻译 2008-07-18 10:26:00 · 442 阅读 · 0 评论 -
1.2 State Processing with cStateManager(用cStateManager处理状态)
1.2 State Processing with cStateManager(用cStateManager处理状态)这个状态管理类(state Manager)引入连个概念:调用目的(calling purposes)和在函数中加入一个用户自定义数据指针(。。。不懂吧,看程序理解吧)。NOTE:调用目的(Calling Purposes),就像它的名字一样,调用原因翻译 2008-07-18 10:32:00 · 367 阅读 · 0 评论 -
ID3DSprite实现一个“窥视”功能
这是直接贴在Device->BegainScene()和Device->EndScene();之间的。实现一个小窗口显示图片的一部分,并通过方向键查看图片的其它部分。但没有实现当该图片到达边界时,不能再往外走。if(SUCCEEDED(sprite->Begin(D3DXSPRITE_ALPHABLEND ))) { // 设置方向键事件 if原创 2008-07-15 14:25:00 · 596 阅读 · 0 评论 -
2.6 Vertices and cVertexBuffer(顶点缓冲)
2.6 Vertices and cVertexBuffer(顶点缓冲)累死我了:class cVertexBuffer{private:cGraphics *m_Graphics; // cGraphics父类IDirect3DVertexBuffer8 *m_pVB; // Vertex buffer COMDWORD m_NumVertice翻译 2008-07-18 15:09:00 · 381 阅读 · 0 评论 -
3 The Input Core(输入)
3 The Input Core(输入)吆!。。。。。设备输入只有两个简单的类:cInput和cInputDevice。你要使用cInput类实例化DirectInput,别使用cInputDevice类去容纳一个DirectInput设备。如果你使用多个设备,就用多个cInputDevice对象分开表示他们 3.1 Using DirectInput with cInput翻译 2008-07-18 15:59:00 · 343 阅读 · 0 评论 -
2.2 Images with cTexture(图像和纹理)
2.2 Images with cTexture(图像和纹理)纹理可以使3D图像有质量感。没。。。。用。。。。的。。。话。。现在,有了cTexture的帮助,啊~~~世界变得美好了:class cTexture{protected:cGraphics *m_Graphics; // cGraphics父类IDirect3DTexture8 *m_T翻译 2008-07-18 14:30:00 · 586 阅读 · 0 评论 -
3.3 Using the Input Core
3.3 Using the Input Core使用Input Core是非常简单的,只需实例化一个cInput类对象,并列出你想使用的设备的cInputDevice对象,并初始化他们就可是开用了。比如,你说你想使用两个设备,键盘和鼠标:cInput g_Input; // 全局声明cInputDevice g_Keyboard;cInputDevice g_翻译 2008-07-18 16:07:00 · 326 阅读 · 0 评论 -
2.9 Loadable Meshes using cMesh(网格)
2.9 Loadable Meshes using cMesh(网格):class cMesh{private:cGraphics *m_Graphics; // cGraphics 父对象long m_NumMeshes; // 网格数量sMesh *m_Meshes; //网格列表long m_NumFrames; // 框架(frame)翻译 2008-07-18 15:51:00 · 387 阅读 · 0 评论 -
2.5(?) Text and Fonts Using cFont(字)
2.5(?) Text and Fonts Using cFont(字)。。。。。。。。。。。。。。。。。。。。。。。class cFont{private:ID3DXFont *m_Font; // Font COM 对象public: cFont(); // 构造函数~cFont(); // 析构函数ID3DXFont *GetFon翻译 2008-07-18 14:39:00 · 487 阅读 · 0 评论 -
2.4 Light It Up with cLitht(照耀他吧灯光!)
2.4 Light It Up with cLitht(照耀他吧灯光!)I Don’t Why 老外总要在这整些没用的。。。。。class cLight{protected:D3DLIGHT8 m_Light; // Light 结构体 public:cLight(); // 构造函数D3DLIGHT8 *GetLight(); // 返回翻译 2008-07-18 14:36:00 · 390 阅读 · 0 评论 -
1.4 Managing Data with cDataPackage(用cDataPackage处理数据)
1.4 Managing Data with cDataPackage(用cDataPackage处理数据)废话少说吧,这是类的声明:class cDataPackage{protected:void *m_Buf; // 数据缓冲unsigned long m_Size; // 数据缓冲大小public:cDataPackage(); //原创 2008-07-18 14:11:00 · 333 阅读 · 0 评论 -
3.2 Input Devices with cInputDevice
3.2 Input Devices with cInputDevice这才是真正的重点。cInputDevice用于初始化一个指定的输入设备(如键盘、鼠标、游戏杆),并返回一些可以用到你游戏中的设备信息。class cInputDevice{public:cInput *m_Input; // cInput父类short m_Type; // 设备类型翻译 2008-07-18 16:00:00 · 452 阅读 · 0 评论