碰到個古老的問題,畫素的alpha混合,於是查閱了mmx指令,寫出了如下32位畫素格式的alpha混合,不過alpha值固定為半透明,**效率還能接受。如下:
mov eax, dest;
;dest是目的畫素指標
movd mm0, [eax];
; 把目的畫素值移入mm0暫存器的低32位
movd mm1, color;
; 把源畫素值移入mm1暫存器的低32位
pxor mm2, mm2;
; mm2暫存器置零
pxor mm3, mm3;
; mm3暫存器置零
punpcklbw mm0, mm2;
; 目的畫素值rgb各分量從1byte擴充套件成2byte
punpcklbw mm1, mm3;
;源畫素值rgb各分量從1byte擴充套件成2byte
paddsw mm0, mm1;
; 源畫素和目的畫素每個2byte分量相加,結果存放在mm0暫存器
psrlw mm0, 1;
; 各分量除以2
packuswb mm0, mm1;
; 每個2byte分量再壓縮成1byte,混合結果儲存在mm0的低32位,mm0高32位為無效值
movd [eax], mm0;
; 混合結果寫回目的畫素
Alpha顏色混合的魔法 上篇
摘要 本系列文章介紹了一種在影象處理 2d遊戲 3d遊戲中經常使用的混合模型 alpha顏色混合 它就像神奇的魔法一樣,在電腦螢幕上給我們展現出乙個個絢麗多彩的世界 全文 分為 上篇 各種alpha顏色混合方式 下篇 其他一些顏色混合方案 補充 tag alpha,blend,透明,顏色混合,顏色混...
alpha混合的數學原理與實現
alpha混合技術,主要是用於實現半透明的效果,假設一種不透明東西的顏色是a 即video1 另一種透明的東西的顏色是b 即osd0 那麼透過b去看a,看上去的顏色c 即attribute 就是b和a的混合顏色,可以用下面的式子來近似,設b物體的透明度為alpha 取值為0 1之間的浮點數,0為完全...
32位和64位的理解
大家都知道現在流行的作業系統是32位和64位的,都知道32位作業系統能 認出 4g以內的記憶體而64位的 可以認出多記憶體 2的64次方byte 簡稱大b,還有一種是小b,1個byte由8個bit組成 但是為什麼會64位的能認到的記憶體就多呢?先看一下概念 32位和64位 cpu一次處理資料的能力是...