direct3d到2D编程方法.doc

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

1 用DirectDraw 这是早期的做法,由于现在的DirectDraw已经并入到DirectGraphic当中,而且微软也已经在Direct SDk8中把DirectDraw部分的文档取消了,现在多用D3D来做2D的游戏 2 用ID3DXSprite 这个接口可以很好的制作2D动画,ID3DXSprite是DriectX 9.0里面的一个简单模块,在DriectX 9.0帮助文档里面对其功能的描术为:“向用户提供一套简单的在屏幕上实现精灵渲染的接口。”何为精灵渲染,说白了就是渲染2D画面,ID3DXSprite帮助用户通过简单的操作就能运用DriectX 9.0制作2D游戏(渲染2D图形)。对于绘制2D图片,其主要步骤就是 (1) 读取图片,载入纹理 (2) 如果需要对图片做旋转或者缩放的话,设置相应的矩阵 (3) ID3DXSprite::Draw(….) 具体参考代码如下: //初始化精灵对像 D3DXCreateSprite(g_pDevice, g_pSprite); g_pDevice-BeginScene(); g_pDevice-Clear(0,NULL,D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER|D3DCLEAR_STENCIL, D3DCOLOR_XRGB(0,0,0),1.0f,0L); g_pSprite-Begin(D3DXSPRITE_ALPHABLEND); //得到2D坐标转换矩阵 D3DXMatrixTransformation2D(mat, NULL, 0.0f, D3DXVECTOR2(0.1f, 0.1f), D3DXVECTOR2(50.0f, 50.0f), 0.5f, D3DXVECTOR2(100.0f, 100.0f)); g_pSprite-SetTransform(mat); //渲染精灵 g_pSprite-Draw(g_ptexSprite, NULL, NULL, NULL, 0x99ffffff); g_pSprite-End(); g_pDevice-EndScene(); g_pDevice-Present(NULL, NULL, NULL, NULL); 另:ID3DXSprite::Draw ()方法9.0C以上版本为5个参数., 9.0B版本为7个参数。 来源:(/s/blog_607adeb50100ee18.html) - 用DirectX做2D游戏的三种方法_不会游泳的鱼_新浪博客 3 设置顶点格式为D3DFVF_ XYZRHW Direct3D提供了一种坐标格式 D3DFVF_XYZRHW,用于变换后的坐标空间。它有 4 个分量 x、y、z、rhw,其中 x、y 使用窗口坐标,z、rhw 代表深度。只要把 z、rhw 设置成常数(通常 z 取 0,rhw取1),就可以用它来定义二维图形的顶点。在使用这种坐标格式绘制二维图形时,建议用顶点颜色或纹理进行渲染,不要使用光照和材质,而且要禁用 Z 缓存,此时后绘制的图形将覆盖在最上面。 下面来演示如何显示一个二维的红色三角形,使用顶点颜色渲染,图元格式选三角形列 //红色三角形的 FVF 格式:RHW 坐标、顶点颜色 struct CUSTOMVERTEX3 { float x,y,z,rhw; //顶点坐标 DWORD color; //顶点颜色 }; #define D3DFVF_CUSTOMVERTEX3 (D3DFVF_XYZRHW | D3DFVF_DIFFUSE) LPDIRECT3DVERTEXBUFFER9 m_pVB3;//红色三角形的顶点缓存区接口指针 //建立红色三角形 CUSTOMVERTEX3 vertices3[3] = //顶点为红色 {{ 10, 30, 0.0f, 1.0f, D3DCOLOR_XRGB(255,0,0) }, { 110, 30, 0.0f, 1.0f, D3DCOLOR_XRGB(255,0,0) }, { 10, 130, 0.0f, 1.0f, D3DCOLOR_XRGB(255,0,0) }}; //创建红色三角形的顶点缓存区,填入顶点数据(博文长度有限制,此处代码略) ..... //渲染红色三角形 m_pDevice-SetFVF( D3DFVF_CUSTOMVERTEX3 ); m_pDevice-SetStreamSource( 0, m_pVB3, 0, sizeof(CUSTOMVERTEX3) ); m_pDevice-DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 ); .....

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档