游戏开发论坛

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

ddraw特殊效果实现(如任意角度旋转)!!!

[复制链接]

2

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2006-6-27 17:24:00 | 显示全部楼层 |阅读模式
  安是做休闲游戏的,现在有一个问题请兄弟们帮助,就是用什么方法可以实现图片任意角度的旋转,通道混合,如果有简单代码能给安看看,安会感激不禁请你吃饭,呵呵,安在北京.谢谢了先!!!

0

主题

1037

帖子

1037

积分

金牌会员

Rank: 6Rank: 6

积分
1037
发表于 2006-6-27 18:48:00 | 显示全部楼层

Re:ddraw特殊效果实现(如任意角度旋转)!!!

俺告诉你,用d3d好简单,用ddraw就麻烦了,一般都是先用其他软件将图片旋转好的。

2

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2006-6-28 10:47:00 | 显示全部楼层

Re:ddraw特殊效果实现(如任意角度旋转)!!!

是想用d3d,可是和原来的游戏兼容性不好,独立显卡可以保持刷新同步,不是独立的显卡刷新不同步(原来的扑克牌游戏是用mfc和GDI搞的),如果能再给些建议不胜感激.

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-6-28 11:30:00 | 显示全部楼层

Re:ddraw特殊效果实现(如任意角度旋转)!!!

GDI+能不能做到?

0

主题

1037

帖子

1037

积分

金牌会员

Rank: 6Rank: 6

积分
1037
发表于 2006-6-29 16:06:00 | 显示全部楼层

Re:ddraw特殊效果实现(如任意角度旋转)!!!

顶一下!没有人会吗?

2

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
发表于 2006-6-30 16:45:00 | 显示全部楼层

Re:ddraw特殊效果实现(如任意角度旋转)!!!

DDraw本身没有提供旋转的API,包括混色,缩放图像的反走样过滤等各种功能,必须软件实现。也就是lock了表面之后,自己一个点一个点的处理吧。

至于具体的算法,查查书,都有了。

没有特别的需求,考虑使用D3D吧。省了多少脑细胞^_^

7

主题

438

帖子

438

积分

中级会员

Rank: 3Rank: 3

积分
438
发表于 2006-7-3 18:31:00 | 显示全部楼层

Re:ddraw特殊效果实现(如任意角度旋转)!!!

第一个是msdn的资料,给你一个链接。
HOWTO: Display a Bitmap into a Rotated or Non-rectangular Area
(Using Windows 2000 "WarpBlt" API call)
http://support.microsoft.com/support/kb/articles/Q186/5/89.ASP

第二个是http://www.exaflop.org上找来的。直接抄给你了。
The easiest way, according to the comp.graphics faq, is to take the rotation transformation and invert it. Then you just iterate over the destination image, apply this inverse transformation and find which source pixel to copy there. A much nicer way comes from the observation that the rotation
matrix:

R(T) = { { cos(T), -sin(T) }, { sin(T), cos(T) } }is formed my multiplying three matrices, namely:

R(T) = M1(T) * M2(T) * M3(T)where

M1(T) = { { 1, -tan(T/2) },
          { 0, 1         } }
M2(T) = { { 1, 0         },
          { sin(T), 1    } }
M3(T) = { { 1, -tan(T/2) },
          { 0, 1         } }Each transformation can be performed in a separate pass, and because these transformations are either row-preserving or column-preserving, anti-aliasing is quite easy.

Reference:

Paeth, A. W., "A Fast Algorithm for General Raster Rotation", Proceedings Graphics Interface '89, Canadian Information Processing Society, 1986, 77-81
[Note - e-mail copies of this paper are no longer available]
[Gems I]

5

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2006-7-3 23:49:00 | 显示全部楼层

Re: Re:ddraw特殊效果实现(如任意角度旋转)!!!

jarod_jerry974: Re:ddraw特殊效果实现(如任意角度旋转)!!!

是想用d3d,可是和原来的游戏兼容性不好,独立显卡可以保持刷新同步,不是独立的显卡刷新不同步(原来的扑克牌游戏是用mfc和GDI搞的),如果能再给些建议不胜感激.

可能是你的d3d的参数用错了吧。d3d和ddraw有区别吗?都是绘制到surface上的。

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2006-7-4 17:22:00 | 显示全部楼层

Re:ddraw特殊效果实现(如任意角度旋转)!!!

建议不要用DDraw实现这种功能了,逐点绘制虽然原理很简单,但是速度太慢。

还是使用D3D去实现这些特效吧。旋转完毕之后再把表面交给DDraw。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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