游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5003|回复: 7

如何在 D3D9 中绘制平面矩形(附带例子程序)

[复制链接]

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
发表于 2009-3-13 11:45:00 | 显示全部楼层 |阅读模式
这个程序是我写的。。。
主要是测试我自己的 CDXFont 类。。
现在碰到一个问题,如何绘制平面矩形,注意是平面矩形,就是用屏幕的2D坐标度量的矩形。。。
我在这个程序中,使用了 SPRITE 绘制的矩形,总觉得有点别扭,因为我就为了画一个单色的矩形,还要去弄个 Texture 进来。。。。

注意:运行这个程序需要文件 D3DX9_39.dll 文件(没有的话,网上有下载的),或者,请确定你安装了 DirectX SDK with 2008 August

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
 楼主| 发表于 2009-3-13 17:18:00 | 显示全部楼层

Re:如何在 D3D9 中绘制平面矩形(附带例子程序)

晕,是不是画矩形这个任务过于简单了。。。
自己UP

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
 楼主| 发表于 2009-3-14 21:30:00 | 显示全部楼层

Re:如何在 D3D9 中绘制平面矩形(附带例子程序)

没人看到这个帖子吗????
如何画矩形啊。。。兄弟们。。。
自己UP。。。。

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2009-3-15 00:23:00 | 显示全部楼层

Re:如何在 D3D9 中绘制平面矩形(附带例子程序)

1.
选好纹理贴图
设置好绘制位置
pSprite->Draw
2.
使用FVF_XYZTHW
把顶点数据排好(此方式设置三大矩阵失效,如果实在要计算位置用点和矩阵叉乘)
设置好渲染状态和纹理
然后画出来

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
 楼主| 发表于 2009-3-15 21:30:00 | 显示全部楼层

Re:如何在 D3D9 中绘制平面矩形(附带例子程序)

无名剑 兄弟提的两种方法,都要使用纹理啊。。。
难道 DX9 里,没有像 DDRAW 里那样的 FILLRECT 函数可以直接绘制“单色矩形”吗??

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2009-3-15 22:27:00 | 显示全部楼层

Re: Re:如何在 D3D9 中绘制平面矩形(附带例子程序)

draculamx: Re:如何在 D3D9 中绘制平面矩形(附带例子程序)

无名剑 兄弟提的两种方法,都要使用纹理啊。。。
难道 DX9 里,没有像 DDRAW 里那样的 FILLRECT 函数可以直接绘制“单色矩形”吗??


你要这样画也可以阿,灵活顶点里面不要用纹理直接用颜色代替就OK了

这个是我测试着玩的代码,就是用第2种画的,没用纹理,设置顶点颜色就画上去(偶弄成全屏是为了测试设备丢失处理,你觉得不好就改回来吧) [em7]

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
 楼主| 发表于 2009-3-16 09:16:00 | 显示全部楼层

Re:如何在 D3D9 中绘制平面矩形(附带例子程序)

无名剑 兄弟,你的代码我看了,就是用 6 个顶点(用了索引列表就是4个)生成一个矩形平面,然后直接设置顶点颜色来画矩形
其实,这种画矩形的方法我在一本讲述 D3D 的书中看见过(这本书比较早,是用的 DX8)。。。
我现在在想,DX9中的SPRITE,如果单纯在全部为2D的项目中,应该是很好的选择,但是,就如我在顶楼发的那个程序一样,既有 2D 贴图,又有 3D 的 MESH,在渲染的时候,还要考虑到 2D 图形与 3D  MESH 之间的遮挡问题,我在那个程序中,只有把 SPRITE 的 Z 值设置为大于 0.9 的时候,SPRITE 才不会挡在 MESH 前面,但是我的 MESH 的 Z 值却是 0 。
按照道理来说,我只要把 SPRITE 的 Z 值设置为大于 0 就可以了。。为什么要设置为 0.9 才行呢??
设置 SPRITE 的 Z 值为一个大于0的数的时候,SPRITE 的大小会改变吗?(发生缩小??)
还有就是,如果在一个 2D 和 3D 需要同时渲染的环境下,SPRITE 够用吗??还是自己实现 SPRITE ?? DX9中的 SPRITE 实现的细节(内部源代码)该不会就是用的顶点吧。。。

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2009-3-16 11:16:00 | 显示全部楼层

Re:如何在 D3D9 中绘制平面矩形(附带例子程序)

楼上的,我这部分没咋去仔细研究,所以一些问题不大清楚,在实际应用我觉得用贴图比用颜色用得要多,sprite我使用的时候发现一个文件就是无法使用设置纹理寻址方式达到不同效果。

因为是2D渲染,个人觉得Z值起的作用只有前后遮挡效果而没有大小变化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-20 03:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表