摘要: 2.3 引擎规划 和当今的商业游戏引擎相比较而言,本书中这个构建在游戏上的游戏引擎,显得微不足道。游戏Stranded的引擎小到足以包含在单独一个库中。由于游戏引擎取决于开发人员的需求,因此开发或分割游戏引擎的正确方法不止一种。通常,最好是将无关的系统分割成不同的动态链接库(DLL),这样可以更方便地将改动过的软件更新、修改和重新发布给用户。如果有任何类型的更新,那么将全部.exe文件重新发布给已经购买该款游戏的用户很不经济。只要开发人员重新发布一个动态链接库(DLL)(只是整个语系中的一小部分),那么效率将会提高很多。虽然现在的宽带Internet使得下载更新信息的速度比过去快很多,但目前所 阅读全文
posted @ 2011-08-19 17:18 小 楼 一 夜 听 春 雨 阅读(601) 评论(0) 推荐(0)
摘要: #include<d3d9.h>#include<d3dx9.h>#pragma comment(lib, "d3d9.lib")#pragma comment(lib, "d3dx9.lib")#define WINDOW_CLASS "UGPDX"#define WINDOW_NAME "Template"#define WINDOW_WIDTH 640#define WINDOW_HEIGHT 480// Function Prototypes...bool InitializeD3D 阅读全文
posted @ 2011-08-19 16:59 小 楼 一 夜 听 春 雨 阅读(830) 评论(0) 推荐(0)
摘要: 使用诸如Direct3D这样的渲染API在屏幕上渲染图形时,就会碰到所谓的“透支”(指的是渲染全景造成的内存浪费)问题。当在屏幕上绘制交迭(重爹)的两个或多个图元时,就会出现透支。这些图元有不同的位置,但在屏幕上渲染时,它们交迭在一起。因为Direct3D不知道要绘制的图元的先后顺序,所以会出现透支问题。Direct3D不仅不知道是哪个图元遮住了哪个图元,而且还不知道是哪个图元部分遮住了其他物体。解决透支问题的一个办法是使用一种名为“深度缓存或z缓存”的缓存。深度缓存是一个后台缓存,它类似于OpenGL和Direct3D这样的API渲染,存储场景深度信息。当绘制图元时,将物体的深度信息和深度缓 阅读全文
posted @ 2011-08-19 16:52 小 楼 一 夜 听 春 雨 阅读(1031) 评论(0) 推荐(2)
摘要: #include<d3d9.h>#include<d3dx9.h>#pragma comment(lib, "d3d9.lib")#pragma comment(lib, "d3dx9.lib")#define WINDOW_CLASS "UGPDX"#define WINDOW_NAME "View Matrix"#define WINDOW_WIDTH 640#define WINDOW_HEIGHT 480// Function Prototypes...bool Initialize 阅读全文
posted @ 2011-08-19 16:37 小 楼 一 夜 听 春 雨 阅读(858) 评论(0) 推荐(0)
摘要: #include<d3d9.h>#include<d3dx9.h>#pragma comment(lib, "d3d9.lib")#pragma comment(lib, "d3dx9.lib")#define WINDOW_CLASS "UGPDX"#define WINDOW_NAME "World Matrix"#define WINDOW_WIDTH 640#define WINDOW_HEIGHT 480// Function Prototypes...bool Initializ 阅读全文
posted @ 2011-08-19 16:22 小 楼 一 夜 听 春 雨 阅读(825) 评论(0) 推荐(0)
摘要: 无论计算机图形技术如何发展,只要它以二维的屏幕作为显示介质,那么它显示的图像即使多么的有立体感,也还是二维的。有时我会想,有没有以某个空间作为显示介质的的可能呢,不过即使有,也只能是显示某个范围内的图像,不可能有无限大的空间作为显示介质,如果有,那就是现实世界了。 既然显示器的屏幕是二维的,那么我们就要对图像作些处理,让它可以欺骗我们的眼睛,产生一种立体的真实感。在D3D中,这种处理就是一系列的空间变换,从模型空间变到世界空间,再变到视图空间,最后投影到我们的显示器屏幕上。·世界空间与世界矩阵 什么是模型空间呢?每个模型(3D物体)都有它自己的空间,空间的中心(原点)就是模型的中心。 阅读全文
posted @ 2011-08-19 15:56 小 楼 一 夜 听 春 雨 阅读(10030) 评论(5) 推荐(3)
摘要: #include<d3d9.h>#include<d3dx9.h>#pragma comment(lib, "d3d9.lib")#pragma comment(lib, "d3dx9.lib")#define WINDOW_CLASS "UGPDX"#define WINDOW_NAME "Perspective Projection Matrix"#define WINDOW_WIDTH 640#define WINDOW_HEIGHT 480// Function Prototypes 阅读全文
posted @ 2011-08-19 14:39 小 楼 一 夜 听 春 雨 阅读(1782) 评论(0) 推荐(0)
摘要: #include<d3d9.h>#include<d3dx9.h>#pragma comment(lib, "d3d9.lib")#pragma comment(lib, "d3dx9.lib")#define WINDOW_CLASS "UGPDX"#define WINDOW_NAME "Ortho Projection Matrix"#define WINDOW_WIDTH 640#define WINDOW_HEIGHT 480// Function Prototypes...boo 阅读全文
posted @ 2011-08-19 14:25 小 楼 一 夜 听 春 雨 阅读(2848) 评论(0) 推荐(0)
摘要: http://www.cppblog.com/lovedday/archive/2008/05/02/48632.html投影变换将摄影空间中的三维物体投影到二维胶片上,也就是Direct3D中的屏幕,这种三维到二维的变换过程就是投影变换,即从取景空间到摄影空间的变换。设三维物体在观察空间中的坐标为Pview,投影矩阵为Mproj,则顶点在投影空间中的坐标为:Pproj= Pview* Mproj下面分别介绍两种基本的投影变换:正交投影和透视投影,以及它们在Direct3D中的实现。1、正交投影正交投影中,投影向量和观察平面垂直,物体坐标沿观察坐标系的z轴平行投影到观察平面上,观察点和观察平面 阅读全文
posted @ 2011-08-19 14:19 小 楼 一 夜 听 春 雨 阅读(2741) 评论(0) 推荐(0)
摘要: #include<d3d9.h>#define WINDOW_CLASS "UGPDX"#define WINDOW_NAME "Drawing a Quad"// Function Prototypes...bool InitializeD3D(HWND hWnd, bool fullscreen);bool InitializeObjects();void RenderScene();void Shutdown();// Direct3D object and device.LPDIRECT3D9 g_D3D = NULL;LPDIREC 阅读全文
posted @ 2011-08-19 14:10 小 楼 一 夜 听 春 雨 阅读(483) 评论(0) 推荐(0)
摘要: #include<d3d9.h>#pragma comment(lib, "d3d9.lib")#pragma comment(lib, "d3dx9.lib")#define WINDOW_CLASS "UGPDX"#define WINDOW_NAME "Drawing a Triangle"// Function Prototypes...bool InitializeD3D(HWND hWnd, bool fullscreen);bool InitializeObjects();void Ren 阅读全文
posted @ 2011-08-19 14:03 小 楼 一 夜 听 春 雨 阅读(354) 评论(0) 推荐(0)
摘要: #include<d3d9.h>#pragma comment(lib, "d3d9.lib")#pragma comment(lib, "d3dx9.lib")#define WINDOW_CLASS "UGPDX"#define WINDOW_NAME "Drawing Lines"// Function Prototypes...bool InitializeD3D(HWND hWnd, bool fullscreen);bool InitializeObjects();void RenderSc 阅读全文
posted @ 2011-08-19 11:43 小 楼 一 夜 听 春 雨 阅读(1830) 评论(0) 推荐(1)
摘要: #include<d3d9.h>#include<d3dx9.h>#pragma comment(lib, "d3d9.lib")#pragma comment(lib, "d3dx9.lib")#define WINDOW_CLASS "UGPDX"#define WINDOW_NAME "Template"#define WINDOW_WIDTH 640#define WINDOW_HEIGHT 480// Function Prototypes...bool InitializeD3D 阅读全文
posted @ 2011-08-19 11:09 小 楼 一 夜 听 春 雨 阅读(497) 评论(0) 推荐(0)
摘要: #include<d3d9.h>#pragma comment(lib, "d3d9.lib")#pragma comment(lib, "d3dx9.lib")#define WINDOW_CLASS "UGPDX"#define WINDOW_NAME "Blank D3D Window"// Function Prototypes...bool InitializeD3D(HWND hWnd, bool fullscreen);void RenderScene();void Shutdown(); 阅读全文
posted @ 2011-08-19 10:57 小 楼 一 夜 听 春 雨 阅读(703) 评论(0) 推荐(0)