游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3207|回复: 12

请教-MMX汇编问题

[复制链接]

4

主题

17

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2006-10-24 09:45:00 | 显示全部楼层 |阅读模式
  请教一个问题,
有两个32位的点A, B,如何使用MMX汇编写成半透明混合效果,
请高手能否给出代码,小弟刚学。 [em24] [em24]

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2006-10-24 11:23:00 | 显示全部楼层

"两个32位的点A, B"

什么意思?

32位的颜色深度?
32位的X,Y坐标?

如果是颜色深度,颜色方案是什么? RGBA? 黑白? RGBX? ABGR?

4

主题

17

帖子

17

积分

新手上路

Rank: 1

积分
17
 楼主| 发表于 2006-10-24 11:57:00 | 显示全部楼层

Re: 请教-MMX汇编问题

  是颜色值,RGBA类型的。
就是将这两个点的R,G,B半透明混和。

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-10-24 12:34:00 | 显示全部楼层

Re:请教-MMX汇编问题

源颜色:
把RGB分别由8位扩展为16位,刚好占用一个MMX寄存器(每分量分别左移8位)
然后分别乘Alpha值(0~255),再分别右移8位(除256),得到结果1
目的颜色:
同上处理,只是乘255-Alpha而已,得到结果2
最后把两个结果相加

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2006-10-24 13:59:00 | 显示全部楼层

Re:请教-MMX汇编问题

__m64 m1 = _mm_set_pi16(r1, g1, b1, 0);
__m64 m2 = _mm_set_pi16(r2, g2, b2, 0);
__m64 m3 = _mm_set1_pi16(a1);
m1 = _mm_add_pi16(_mm_mullo_pi16(_mm_sub_pi16(m1, m2), m3), m2);

m1里的higher 48bits就是你要的最终rgb。


4

主题

17

帖子

17

积分

新手上路

Rank: 1

积分
17
 楼主| 发表于 2006-10-24 14:12:00 | 显示全部楼层

Re:请教-MMX汇编问题

  大侠能否贴出代码,小弟刚刚学,不太会写。
多谢了

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
发表于 2006-10-24 18:49:00 | 显示全部楼层

Re:请教-MMX汇编问题

建议楼主使用GPU来处理这种问题。

4

主题

17

帖子

17

积分

新手上路

Rank: 1

积分
17
 楼主| 发表于 2006-10-25 19:49:00 | 显示全部楼层

Re:请教-MMX汇编问题

小弟愚钝,还不知道GPU方面的知识,这个容易学吗?

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2006-10-25 20:57:00 | 显示全部楼层

Re:请教-MMX汇编问题

有钱就容易。象本菜鸟这样的穷鬼就难了,因为偶买不起好显卡。

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
发表于 2006-10-25 21:19:00 | 显示全部楼层

Re:请教-MMX汇编问题

GPU方面的知识我也很想学,可惜没这方面的中文书,我买的那本DX书上只有几页介绍。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 16:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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