SDL_SetAlpha

章節:SDL API 參考 (3)
更新:2001年9月11日 星期二 23:01
索引
 

名稱

SDL_SetAlpha - 調整平面的alpha屬性。  

摘要

#include "SDL.h"

int SDL_SetAlpha(SDL_Surface *surface, Uint32 flags, Uint8 alpha);  

描述

備注:

自從1.1.4版以後,此函數和SDL alpha混合的意思已經有所變化。直至1.1.5版,若alpha的值為0,則表示不透明;若為255,則表示透明。但現在的情況就相反了:0(SDL_ALPHA_TRANSPARENT)表示透明,而255(SDL_ALPHA_OPAQUE)表示不透明。

SDL_SetAlpha用于設置基于平面的alpha值、允許或禁止alpha混合。

surface參數指定你想調整的平面的alpha屬性。flags用于指定是否使用alpha混合(SDL_SRCALPHA)以及平面是否為圖塊傳送而使用RLE加速(SDL_RLEACCEL)。flags可以是這兩個選項(譯注:指SDL_SRCALPHA和SDL_RLEACCEL)按位或的組合或者其中之一、0。若不設置SDL_SRCALPHA標記,則當傳送平面時所有alpha信息都被忽略。alpha參數是基于平面的alpha值;平面不一定要有alpha通道才能使用基于平面的alpha,而仍可通過SDL_RLEACCEL來加速圖塊傳送。

備注:

128這個基于平面的alpha值是一種特殊情況,它被優化成比其他基于平面的值快得多。

alpha通過以下方式來實現平面圖塊傳送:

RGBA->RGB,並且設置SDL_SRCALPHA
用alpha通道對源與目標進行alpha混合。SDL_SRCCOLORKEY和基于平面的alpha都被忽略。
RGBA->RGB,並且不設置SDL_SRCALPHA
RGB數據從源復制而得。源的alpha通道和基于平面的alpha值都被忽略。
RGB->RGBA,並且設置SDL_SRCALPHA
用基于平面的alpha值對源和目標進行alpha混合。若設置SDL_SRCCOLORKEY,則僅僅復制不匹配色鍵值的像素。被復制的像素的alpha通道設置為不透明。
RGB->RGBA,並且不設置SDL_SRCALPHA

 RGB數據從源復制而得,並且被復制的像素的alpha通道設置為不透明。若設置SDL_SRCCOLORKEY,則僅僅復制不匹配色鍵值的像素。
RGBA->RGBA,並且設置SDL_SRCALPHA
用源alpha通道對源和目標進行alpha混合。目標平面的alpha通道不受影響。忽略SDL_SRCCOLORKEY。
RGBA->RGBA,並且不設置SDL_SRCALPHA
RGBA數據被復制到目標平面。若設置SDL_SRCCOLORKEY,則僅僅復制不匹配色鍵值的像素。
RGB->RGB,並且設置SDL_SRCALPHA
用基于平面的alpha值對源和目標進行alpha混合。若設置SDL_SRCCOLORKEY,則僅僅復制不匹配色鍵值的像素。
RGB->RGB,並且不設置SDL_SRCALPHA
RGB數據從源復制而得。若設置SDL_SRCCOLORKEY,則僅僅復制不匹配色鍵值的像素。

備注:

請注意RGBA->RGBA傳送圖塊(通過設置SDL_SRCALPHA)會保持目標平面的alpha值不變。這意味著,若通過此方式組合任意兩個RGBA平面,則不會得到你所期望的覆蓋效果,而結果是目標的alpha將通過掩碼來運作。

同時要注意,基于像素的和基于平面的alpha不可組合;如果有效的話,總是使用基于像素的alpha。

 

返回值

若成功,則此函數返回0;否則,返回-1。  

另見

SDL_MapRGBA、SDL_GetRGBA、SDL_DisplayFormatAlpha、SDL_BlitSurface  

譯者

石仔<guoshimin57@gmail.com>  

中文版主頁

http://guoshimin.users.sf.net  

中文版最後更新時間

2010年2月20日


 

索引

名稱
摘要
描述
返回值
另見
譯者
中文版主頁
中文版最後更新時間