游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2974|回复: 8

ddraw里的blt到底能否实现任意角度旋转?

[复制链接]

14

主题

61

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2005-9-15 23:10:00 | 显示全部楼层 |阅读模式
我按help上说的填充了以下一个结构:
DDBLTFX ddbltfx;
memset(&ddbltfx,0,sizeof(ddbltfx));
ddbltfx.dwSize=sizeof(ddbltfx);
ddbltfx.dwRotationAngle=angle;//angle=45
ddbltfx.dwDDFX=DDBLTFX_NOTEARING;
lpddsdes->Blt(&des_rect,lpddssrc,&rect,
DDBLT_WAIT|DDBLT_KEYSRC|DDBLT_ROTATIONANGLE,&ddbltfx);
这样运行时lpddssrc根本没blt到lpddsdes(blt后是透明的)!用DDBLT_DDFX的DDBLTFX_ROTATE90也一样!

而上面最后一行如果改成:
lpddsdes->Blt(&des_rect,lpddssrc,&rect,DDBLT_WAIT|DDBLT_KEYSRC,NULL);
就没问题。

我又看到网上说现在多数显卡都不支持ddraw里blt的任意角度旋转,这是真的么?那要如何实现旋转啊?

17

主题

165

帖子

167

积分

注册会员

Rank: 2

积分
167
发表于 2005-9-16 08:33:00 | 显示全部楼层

Re:ddraw里的blt到底能否实现任意角度旋转?

是真的,很多不支持。
一般旋转是自己做图来实现,还有就是使用图形学方法实现。

14

主题

61

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2005-9-16 10:59:00 | 显示全部楼层

Re:ddraw里的blt到底能否实现任意角度旋转?

谢楼上的,能给个算法么,谢谢拉:)

7

主题

136

帖子

136

积分

注册会员

Rank: 2

积分
136
发表于 2005-9-17 09:54:00 | 显示全部楼层

Re:ddraw里的blt到底能否实现任意角度旋转?

自己实现BLT.就行了

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-9-17 09:59:00 | 显示全部楼层

Re:ddraw里的blt到底能否实现任意角度旋转?

使用旋转矩阵,对每个点进行逐点处理,有必要的话可能还要进行平滑过滤。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-9-17 09:59:00 | 显示全部楼层

Re:ddraw里的blt到底能否实现任意角度旋转?

还有就是可以使用3D来实现2D,这样要简单的多。。。

14

主题

61

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2005-9-17 13:39:00 | 显示全部楼层

Re:ddraw里的blt到底能否实现任意角度旋转?

晕那~~就是不想用D3D实现啊...

还是老老实实学D3D把...

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-9-17 21:03:00 | 显示全部楼层

Re:ddraw里的blt到底能否实现任意角度旋转?

DDRAW可以不用了

用D3D可以实现DDRAW的所有功能,,而且D3DX还支持很多图片格式

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-9-18 10:57:00 | 显示全部楼层

Re:ddraw里的blt到底能否实现任意角度旋转?

嘿嘿。。。Q叔正解!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 00:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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