Direct2D 适不树最适合用来表示做游戏

本帖子已过去太久远了,不再提供回复功能。2010年9月 专题开发/技术/项目大版内专家分月排行榜第三2010年7月 专题开发/技术/项目大版内专家分月排行榜第三
2008年10月 专题开发/技术/项目大版内专家分月排行榜第三
2010年1月 专题开发/技术/项目大版内专家分月排行榜第二2009年12月 专题开发/技术/项目大版内专家分月排行榜第二2009年11月 专题开发/技术/项目大版内专家分月排行榜第二2009年10月 专题开发/技术/项目大版内专家分月排行榜第二2009年9月 专题开发/技术/项目大版内专家分月排行榜第二2009年8月 专题开发/技术/项目大版内专家分月排行榜第二2009年7月 专题开发/技术/项目大版内专家分月排行榜第二
2010年3月 专题开发/技术/项目大版内专家分月排行榜第三2010年2月 专题开发/技术/项目大版内专家分月排行榜第三
2010年9月 专题开发/技术/项目大版内专家分月排行榜第三2010年7月 专题开发/技术/项目大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。DirectX(22)
ID3DXSprite(6)
.cn/s/blog_607adeb50100ee18.html
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个参数。
3&设置顶点格式为D3DFVF_
&&&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,&&//顶点坐标
&&&DWORD&&//顶点颜色
&&#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 );
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:512022次
积分:5490
积分:5490
排名:第5086名
原创:67篇
转载:261篇
评论:37条
(1)(2)(3)(2)(1)(4)(2)(1)(3)(1)(2)(5)(3)(4)(4)(1)(4)(1)(5)(1)(9)(11)(1)(2)(2)(2)(4)(2)(6)(25)(21)(34)(9)(6)(4)(9)(6)(8)(13)(4)(9)(1)(1)(3)(1)(3)(2)(7)(23)(11)(23)(14)(3)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 树最适合用来表示 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信