- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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视讯槽并且常在需要时用系统内存当
您可能关注的文档
最近下载
- NB_T35106-2017 国家行业标准.pdf VIP
- 建设项目海绵设施施工验收标准.pdf VIP
- 2024-2025学年小学信息科技湘教版2024五年级上册-湘教版(2024)教学设计合集.docx
- 热控专业简介(基础系统介绍)(精品课件).ppt VIP
- 2025湘美版美术八年级上册第一单元第1课《假期视觉笔记》课件.pptx
- 2025-2030中国相容剂行业市场发展分析及前景趋势与投资机会研究报告.docx
- TSG 11-2020 锅炉安全技术监察规程.docx VIP
- 2023-2024年版中国运动康复产业白皮书.pdf
- 小学生抽屉整理课件.pptx VIP
- 打字员速录技能培训课件.pptx VIP
文档评论(0)