游戏开发论坛

 找回密码
 立即注册
搜索
楼主: fujingqiu

DX9的2D编程

[复制链接]

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-5-2 12:58:00 | 显示全部楼层

Re:DX9的2D编程

sprite内部有一个矩阵,默认是一个单位阵,即缩放平移旋转都没有。
draw是使用默认矩阵变换的,drawtransform是用特定矩阵变换的。

settransform getransform就是设置和改变默认矩阵的。
sprite是把rect分成两组顶点,一组计算成uv坐标,一组计算成3d坐标。
而矩阵就只对3d坐标起作用,矩阵用的是4*4矩阵,计算时丢掉了一维空间。

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-5-2 13:01:00 | 显示全部楼层

Re:DX9的2D编程

你贴的那篇文章纯属误导观众,surface到了3d中 ,身份发生了巨大转变,那篇文章还是2d时代的观念。

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2005-5-2 13:02:00 | 显示全部楼层

Re:DX9的2D编程

sprite::draw()不是总是在第六个参数画纹理吗?
顺便问一下,怎样把纹理用sprite水平到转来画?

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2005-5-2 13:04:00 | 显示全部楼层

Re: Re:DX9的2D编程

lights: ReX9的2D编程

你贴的那篇文章纯属误导观众,surface到了3d中 ,身份发生了巨大转变,那篇文章还是2d时代的观念。

不是呀,在g d 9 1 论坛上有人用surface做了个范例
在这篇文章我还找到一个函数:D3DXMatrixTransformation2D

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-5-2 13:14:00 | 显示全部楼层

Re:DX9的2D编程

因为sprite不允许倒转rect, 只有用矩阵了,x轴缩放-1即为水平翻转。

sprite这东西只是抛砖引玉的,效率高,绘制文字必须用他作接口(id3dxfont也会自己创建sprite)

需要特殊和复杂的功能时,还是自己写一个绘制3d面片的更方便。
sprite有几个地方有时候会造成点麻烦。
首先是不支持无贴图色块。
然后是不能四顶点异色,
然后是uv坐标和顶点坐标不能分离。
其他就没什么了,自己写就会发现,想超过sprite的效率还真难!

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-5-2 13:20:00 | 显示全部楼层

Re:DX9的2D编程

用surface来操作就是错误的,d3d中surface是一个渲染表面,他的定义已经从以前的图形缓存中解放了,一般的d3d程序只需要一个surface,还不需要显示的建立它。surface现在负责的功能和2d时代大不相同了。

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2005-5-2 13:24:00 | 显示全部楼层

Re:DX9的2D编程

“然后是不能四顶点异色,
然后是uv坐标和顶点坐标不能分离。”
没听懂......
你觉得sprite高效还是rhw高效?

31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
 楼主| 发表于 2005-5-2 13:26:00 | 显示全部楼层

Re:DX9的2D编程

to:hdm2968
sprite有两种用法:
sprite.begin(billboard,alpha);
sprite.settransform(平移加缩放);
sprite.draw(texture);
……
sprite.end()
这是3D的用法,画即时聊天和粒子非常好。
2D的上面有了。

有一个pointSprite我个人不推荐使用。

sprite.draw2D的参数里有旋转,想简单的话可以用。小游戏不一定搞得很复杂。
public void Draw2D(
    Texture srcTexture,
    Rectangle srcRectangle,
    Rectangle destinationRectangle,
    Point rotationCenter,
    float rotationAngle,
    Point position,
    int color
);我没用过啊

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2005-5-2 13:27:00 | 显示全部楼层

Re:DX9的2D编程

http://gd.91.com/bbs/Topic/ViewTopic.aspx?URL=0,37,3213,0,0,1

31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
 楼主| 发表于 2005-5-2 13:28:00 | 显示全部楼层

Re:DX9的2D编程

to:hdm2968
这些都是和复杂度无关的,和效率扯不上。我试过很快的。
想快就得加缓冲。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 04:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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