在您開始發展自己的3D遊戲和模擬之前.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在您開始發展自己的3D遊戲和模擬之前.doc

14. 让Direct 3D应用程序最佳化 在您开始发展自己的3D游戏和模拟之前,我要提出一些能协助您的程序最佳化的技巧。我和很多Microsoft的3D开发者发现很多在产生高效率程序时必要的事项,本章会逐一列出。这些建议用得愈多,您的程序就愈快。我在本书稍早涵盖了其中部分的主题,不过还是在这里重提一遍,以确保您在撰写Microsoft Direct3D立即模式程序时能有份须考虑重要事项的清单。 Direct3D程序框架   Microsoft DirectX 7提供一个程序框架(framework):CD3DFramework7类别。这个类别在DirectX 7安装程序覆制到\mssdk\samples\multimedia\D3dim \src\目录中的立即模式范例中被使用。虽然这个程序框架不一定能加快您的程序,不过却是协助您加速开发过程的好起点。 Direct3D提供一组以D3Denum起头的程序配合这个类别来列举并选取装置。CD3Dapplication类别提供了一个程序类别,您可以用它来建立使用Direct3D Framework链接库的程序。在使用Direct3D Framwwork时还有另外一组辅助函式。这些程序是以D3DUtil起头的。这些程序提供一组包含各种功能的工具,可以取得DirectX媒体路径,建立DDSURFACEDESC2结构,初始化D3DMATERIAL7以及D3DLIGHT7结构,建立观察矩阵、投影矩阵以及旋转矩阵,还能处理被送到输出串流的错误讯息。 本书所有的RoadRage程序代码都是架构在Direct3D Framework上。我建议您以后的程序也都用Direct3D Framework。 保留贴图内存   这一节的建议能协助你在使用Direct3D贴图时最佳化内存的使用。 AGP内存   对使用贴图的程序来说,加速绘图端口(AGP)内存是个很棒的工具。利用AGP内存可以获得极佳的效率,同时它也是使用多张高分辨率贴图时的最佳选择。下面的程序示范如何像用视讯内存一样的运用AGP内存: // //用IDirect3DDevice7::GetCaps方法来检查 //D3DDEVCAPS_TEXTURENONLOCALVIDMEM旗标,以决定该 //装置是否能由非本机端(nonlocal)的视讯(AGP)内存取用贴图。 // if (D3DHWDesc.dwDevCaps D3DDEVCAPS_TEXTURENONLOCALVIDMEM !=0) { // //这块卡支援AGP贴图。您应该用IDirectDraw7::GetCaps方法来检查 //非本机端及本机端是否使用相同的blt运算旗标。 // . . . // //现在您可以把AGP内存视作视讯内存。 // //在AGP内存中建立一个绘图页。 // DDSURFACEDESC2 ddsd2; ZeroMemory(ddsd2,sizeof(ddsd2)); ddsd2.dwSize =sizeof(ddsd2); ddsd2.dwFlags =DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH; ddsd2.dwWidth =width; ddsd2.dwHeight =height; ddsd2.ddsCaps.dwCaps = DDSCAPS_VIDEOMEMORY| DDSCAPS_NONLOCALVIDMEM| DDSCAPS_TEXTURE| DDSCAPS_ALLOCONLOAD; lpDD7-CreateSurface(ddsd2,lpDDSurface7,NULL); } . . . // //在这里执行AGP写入动作。 // lpDDSurface7-Blt(ScreenCoords0,BackBuffer,ScreenCoords1, NULL,NULL); 注意如果您使用Direct3D的自动贴图管理功能,它会在适当时候自动运用AGP内存。 贴图对映压缩   高质量的贴图对映大小通常是512×512像素,而且每个像素至少有16位的颜色。所以这样一张图会超过500KB。在一块4MB的卡上,用7张这种贴图就会用光所有内存。为了解决这个问题,现在很多卡都有16到64MB专用的视讯内存。其它视讯卡则用AGP视讯槽并且常在需要时用系统内存当

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档