SDL_CreateRGBSurface

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

名稱

SDL_CreateRGBSurface - 創建一個空平面。  

摘要

#include "SDL.h"

SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);  

描述

分配一個空平面(必須在調用SDL_SetVideoMode之後調用)。

若depth為8位,則為平面分配一個空的調色板;否則,以給定的[RGBA]mask創建符合SDL_PixelFormat格式(參見SDL_PixelFormat)的"組合像素"(譯注:像素在存儲器內的存儲方式有兩種。一種是組合像素法,即像素的所有位都一起放在存儲器的同一頁面;另一種是位平面法,即像素的各個位分別存放在存儲器的各分頁內)。flags指定所要創建的平面類型,它是以下可能值按位或的組合:

SDL_SWSURFACE
SDL將在系統內存上創建平面。這會提高像素級訪問的性能。然而,你將不能利用硬件圖塊傳送。
SDL_HWSURFACE
SDL會試圖在顯存上創建平面。這會允許SDL利用視頻到視頻的圖塊傳送(通常被加速)。
SDL_SRCCOLORKEY
此標記為從該平面的圖塊傳送而開啟摳色功能。若同時指定了SDL_HWSURFACE,則被摳色的圖塊的傳送將被硬件加速;SDL會試圖將平面放入顯存。平面創建之後,可以用SDL_SetColorKey來設置或清除此標記。
SDL_SRCALPHA
此標記為從該平面的圖塊傳送而開啟alpah混合功能。若同時指定了SDL_HWSURFACE,經alpha混合的圖塊的傳送將被硬件加速;如果可能的話,則將平面放入顯存。平面創建之後,可以用SDL_SetAlpha來設置或清除此標記。

備注:

若指定了alpha通道(亦即,Amask不為0),則自動設置SDL_SRCALPHA標記。平面創建之後,你可以通過調用SDL_SetAlpha來刪除此標記。

 

返回值

若成功,則返回所創建的平面;否則,返回NULL。  

例子

    /* 像OpenGL紋理那樣,以R、G、B、A的像素字節序列創建一個32位平面 */
    SDL_Surface *surface;
    Uint32 rmask, gmask, bmask, amask;

    /* SDL將每個像素解釋為32位數。因此,我們的掩碼必須依賴于機器字節序 */
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
    rmask = 0xff000000;
    gmask = 0x00ff0000;
    bmask = 0x0000ff00;
    amask = 0x000000ff;
#else
    rmask = 0x000000ff;
    gmask = 0x0000ff00;
    bmask = 0x00ff0000;
    amask = 0xff000000;
#endif

    surface = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 32,
                                   rmask, gmask, bmask, amask);
    if(surface == NULL) {
        fprintf(stderr, "CreateRGBSurface failed: %s", SDL_GetError());
        exit(1);
    }

 

另見

SDL_CreateRGBSurfaceFrom、SDL_FreeSurface、SDL_SetVideoMode、SDL_LockSurface、SDL_PixelFormat、SDL_Surface、SDL_SetAlpha、SDL_SetColorKey  

譯者

石仔<guoshimin57@gmail.com>  

中文版主頁

http://guoshimin.users.sf.net  

中文版最後更新時間

2010年2月23日


 

索引

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