- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)