SDL2中文API(整理)

相關文件 SDL2/SDL.h

功能:初始化SDL
參數: 
flags 系統名稱,取值如下
SDL_INIT_TIMER
  定時器子系統
  SDL_INIT_AUDIO
  音頻子系統
  SDL_INIT_VIDEO
  視頻子系統
  SDL_INIT_JOYSTICK
  操縱桿子系統
  SDL_INIT_HAPTIC
  觸屏反饋子系統
  SDL_INIT_GAMECONTROLLER
  控制器子系統
  SDL_INIT_EVENTS
  事件子系統
  SDL_INIT_EVERYTHING
  上述所有子系統
  SDL_INIT_NOPARACHUTE
  不致命的信號
返回值:
成功返回0
失敗返回 -1
原型:
int SDL_Init(Uint32 flags)
功能:初始化SDL子系統
參數:
flags 系統名稱
同SDL_Init()
返回值:
成功返回0
失敗返回 -1
原型:
int SDL_InitSubSystem(Uint32 flags)
功能:退出SDL
參數 : 無
返回值 : 無
原型:
void SDL_Quit(void)
功能:退出系統
參數:
flags 系統名稱
同SDL_Init()
返回值: 無
原型:
void SDL_QuitSubSystem(Uint32 flags)
功能:檢測系統是否啓動
參數:
flags同SDL_Init()
返回值:
成功返回0
失敗返回 SDL_INIT_NOPARACHUTE.
原型:
Uint32 SDL_WasInit(Uint32 flags)

相關文件 SDL2/SDL_hints.h

函數名:SDL_ClearHints
功能:清空所有提示
參數:無
返回值:無
備註:
原型:void SDL_ClearHints(void)
函數名: SDL_GetHint
功能:獲取一個提示
參數:
name 提示名稱
返回值: 提示名稱所代表的內容
備註:
原型:
const char* SDL_GetHint(const char* name)
函數名:SDL_SetHint
功能:設置提示
參數:
name 提示名稱
value 提示內容
返回值: 
成功返回SDL_TRUE
失敗返回 SDL_FALSE
備註:
原型:
SDL_bool SDL_SetHint(const char* name, const char* value)
函數名:SDL_SetHintWithPriority
功能:設置提示優先級
參數:
name 提示名稱
value 提示內容
priority 優先級
SDL_HINT_DEFAULT
  低優先級,使用默認值
  SDL_HINT_NORMAL
  中優先級
  SDL_HINT_OVERRIDE
  高優先級
返回值:
成功返回SDL_TRUE
失敗返回 SDL_FALSE
備註:
原型:
SDL_bool SDL_SetHintWithPriority(const char* name, const char* value, SDL_HintPriority priority)

相關文件 SDL2/SDL_error.h

函數名: SDL_ClearError
功能:清空所有錯誤提示
參數:無
返回值:無
備註:
原型:
void SDL_ClearError(void)
函數名: SDL_GetError
功能:獲取一個錯誤提示
參數:無
返回值:提示內容
備註:
原型:
const char* SDL_GetError(void)
函數名:SDL_SetError
功能:設置錯誤提示
參數: 
fmt printf()風格消息格式字符串
返回值:-1
備註:
原型:
int SDL_SetError(const char* fmt, ...)
函數名:
SDL_CreateWindowAndRenderer
功能:給窗口配置渲染器
參數:
width 窗口寬
height 窗口高
window 窗口指針
renderer 渲染器指針
返回值:
備註:
原型:
int SDL_CreateWindowAndRenderer(int width,
int height,
Uint32 window_flags,
SDL_Window** window,
SDL_Renderer** renderer)
函數名:SDL_CreateWindowFrom
功能:從現有的窗口創建sdl窗口
參數:data 窗口指針
返回值:sdl窗口指針
備註:
原型:
SDL_Window* SDL_CreateWindowFrom(const void* data)
例子:
//用mfc窗口句柄創建一個sdl window
SDL_Window * pWindow = 
SDL_CreateWindowFrom( (void *)( 
GetDlgItem(IDC_STATIC1)->GetSafeHwnd() ) );
函數名:SDL_DestroyWindow
功能:銷燬一個窗口
參數:
window 窗口指針
返回值:無
備註:
原型:
void SDL_DestroyWindow(SDL_Window* window)
函數名:SDL_DisableScreenSaver
功能:禁止屏幕儲存
參數:
返回值:
備註: 
原型:
void SDL_DisableScreenSaver(void)
函數名:SDL_EnableScreenSaver
功能:允許屏幕儲存
參數:
返回值:
備註:
原型:
void SDL_EnableScreenSaver(void)
函數名:SDL_GetClosestDisplayMode
功能:獲得最接近的匹配請求的顯示模式。
參數:
displayIndex索引
mode 顯示模式
closest 最接近的匹配可用的顯示模式
返回值:
備註:
原型:
SDL_DisplayMode* SDL_GetClosestDisplayMode(int displayIndex,
const SDL_DisplayMode* mode,
SDL_DisplayMode* closest)
函數名:SDL_GetCurrentDisplayMode
功能:獲得當前的顯示模式的信息
參數:
displayIndex索引
mode 顯示模式
返回值:
成功返回0,失敗返回-1
備註:
原型:
int SDL_GetCurrentDisplayMode(int displayIndex,SDL_DisplayMode* mode)
函數名:SDL_GetCurrentVideoDriver
功能:獲取當前視頻驅動
參數:
返回值:視頻驅動名稱
備註:
原型:
const char* SDL_GetCurrentVideoDriver(void)
函數名:SDL_GetDesktopDisplayMode
功能:獲取關於桌面顯示模式的信息
參數:
返回值:
成功返回0
失敗返回 -1
備註:
原型:
int SDL_GetDesktopDisplayMode(int displayIndex,
SDL_DisplayMode* mode)
函數名:SDL_GetDisplayBounds
功能:獲取桌面區域顯示
參數:
返回值:成功 0 失敗 -1
備註:
原型:
int SDL_GetDisplayBounds(int displayIndex,
SDL_Rect* rect)
函數名: SDL_GetDisplayMode
功能:獲取特定信息顯示模式
參數:
displayIndex顯示查詢的索引
modeIndex查詢的索引顯示模式
mode 顯示模式
返回值:
成功返回0
失敗返回 -1
備註:
原型:
int SDL_GetDisplayMode(int 
displayIndex,
int modeIndex,
SDL_DisplayMode* mode)
函數名:SDL_GetNumVideoDisplays
功能:返回可用的視頻顯示器的數量。
參數:
返回值:
顯示器數量
備註:
原型:
int SDL_GetNumVideoDisplays(void)

函數名: SDL_GetNumVideoDrivers
功能:返回可用的視頻驅動的數量
參數:
返回值:
驅動數量
備註:
原型:
int SDL_GetNumVideoDrivers(void)
函數名:SDL_GetVideoDriver
功能:獲取指定索引視頻驅動名稱
參數:
返回值:
成功返回 名稱
失敗返回 空字符串
備註:
原型:
const char* SDL_GetVideoDriver(int index)

函數名:SDL_GetWindowBrightness
功能:獲取窗口亮度
參數:
返回值:
0.0 完全黑暗
1.0正常亮度
備註:
原型:
float SDL_GetWindowBrightness(SDL_Window* window)
函數名:SDL_GetWindowData
功能:獲取窗口數據
參數:
window 窗口指針
name 名稱
返回值:
成功返回 窗口數據指針
失敗 NULL
備註:
原型:
void* SDL_GetWindowData(SDL_Window* window,
const char* name)

函數名:SDL_GetWindowDisplayIndex
功能:獲取窗口顯示索引
參數:window 窗口指針
返回值:顯示索引
備註:
原型:
int SDL_GetWindowDisplayIndex(SDL_Window* window)

函數名:SDL_GetWindowDisplayMode
功能:獲取窗口顯示模式
參數:
window 窗口指針
mode 顯示模式
返回值:0 -1
備註:
原型:
int SDL_GetWindowDisplayMode(SDL_Window* window,
SDL_DisplayMode* mode)
函數名:SDL_GetWindowFlags
功能:獲取窗口旗幟
參數:
window 窗口指針
返回值:
SDL_WINDOW_FULLSCREEN
  全屏窗口
  SDL_WINDOW_FULLSCREEN_DESKTOP
  全屏窗口在當前桌面分辨率
  SDL_WINDOW_OPENGL
  與OpenGL窗口可用的上下文
  SDL_WINDOW_SHOWN
  窗口是可見的
  SDL_WINDOW_HIDDEN
  窗口不可見
  SDL_WINDOW_BORDERLESS
  沒有窗口裝飾
  SDL_WINDOW_RESIZABLE
  窗口可以調整大小
  SDL_WINDOW_MINIMIZED
  窗口最小化
  SDL_WINDOW_MAXIMIZED
  窗口最大化
  SDL_WINDOW_INPUT_GRABBED
  窗口有輸入焦點
  SDL_WINDOW_INPUT_FOCUS
  窗口有輸入焦點
  SDL_WINDOW_MOUSE_FOCUS
  窗口有鼠標焦點
  SDL_WINDOW_FOREIGN
  不是由SDL的窗口
備註:
原型:
Uint32 SDL_GetWindowFlags(SDL_Window* window)
函數名稱:SDL_GetWindowFromID
功能:獲取指定id窗口
參數:窗口id
返回值:
成功 窗口指針
失敗 NULL
原型:
SDL_Window* SDL_GetWindowFromID(Uint32 id)
函數名稱:
SDL_GetWindowGammaRamp
功能:獲取窗口的顏色
參數:
返回值:
成功返回0
失敗返回 -1
原型:
int SDL_GetWindowGammaRamp(SDL_Window* window,
Uint16* red,
Uint16* green,
Uint16* blue)
函數名稱:SDL_GetWindowGrab
功能:得到一個窗口的輸入模式
參數:window 窗口指針
返回值:
成功返回SDL_TRUE
失敗返回 SDL_FALSE
原型:
SDL_bool SDL_GetWindowGrab(SDL_Window* window)
函數名稱:SDL_GetWindowID
功能:獲取窗口id
參數:window 窗口指針
返回值:窗口id
原型:
Uint32 SDL_GetWindowID(SDL_Window* window)
函數名稱:
SDL_GetWindowMinimumSize
功能:獲取窗口最小值
參數:
window 窗口指針
w,h 窗口寬高
返回值:
原型:
void SDL_GetWindowMinimumSize(SDL_Window* window,
int* w,
int* h)
函數名稱:
SDL_GetWindowMaximumSize
功能:獲取窗口最大值
參數:
window 窗口指針
w,h 寬高
返回值:
原型:
void SDL_GetWindowMaximumSize(SDL_Window* window,
int* w,
int* h)
函數名稱:SDL_GetWindowPixelFormat
功能:獲取窗口像素格式
參數:
返回值:
成功返回 像素格式
失敗返回SDL_PIXELFORMAT_UNKNOWN
原型:
Uint32 SDL_GetWindowPixelFormat(SDL_Window* window)
函數名稱:SDL_GetWindowPosition
功能:獲取窗口座標
參數:
window 窗口指針
x,y 座標
返回值:
原型:
void SDL_GetWindowPosition(SDL_Window* window,
int* x,
int* y)
函數名稱:SDL_GetWindowSize
功能:獲取窗口大小
參數:
window 窗口指針
w,h 窗口寬高
返回值:
原型:
void SDL_GetWindowSize(SDL_Window* window,
int* w,
int* h)
函數名稱:SDL_GetWindowSurface
功能:獲取窗口貼圖
參數:
window 窗口指針
返回值:
成功返回 窗口貼圖
失敗返回 NULL
原型:
SDL_Surface* SDL_GetWindowSurface(SDL_Window* window)
函數名稱:SDL_GetWindowTitle
功能:獲取窗口標題
參數:
window 窗口指針
返回值:
成功返回 窗口標題
失敗返回 空字符串
原型:
const char* SDL_GetWindowTitle(SDL_Window* window)
函數名稱:SDL_HideWindow
功能:隱藏窗口
參數:
window 窗口指針
返回值:
原型:
void SDL_HideWindow(SDL_Window* window)

函數名稱:SDL_IsScreenSaverEnabled
功能:檢測屏幕儲存是否啓用
參數:
返回值:
成功返回 SDL_TRUE
失敗返回 SDL_FALSE
原型:
SDL_bool SDL_IsScreenSaverEnabled(void)
函數名稱:SDL_MaximizeWindow
功能:窗口最大化
參數:
window 窗口指針
返回值:
原型:
void SDL_MaximizeWindow(SDL_Window* window)
函數名稱:SDL_MinimizeWindow
功能:窗口最小化
參數:
window 窗口指針
返回值:
原型:
void SDL_MinimizeWindow(SDL_Window* window)
函數名稱: SDL_RaiseWindow
功能:提高上方的窗口,設置輸入焦點
參數:
window 窗口指針
返回值:
原型:
void SDL_RaiseWindow(SDL_Window* window)

函數名稱:SDL_RestoreWindow
功能:恢復被最大化或最小化的窗口
參數:
window 窗口指針
返回值:
原型:
void SDL_RestoreWindow(SDL_Window* window)
函數名稱:SDL_SetWindowBrightness
功能:設置窗口亮度
參數:
window 窗口指針
brightness 亮度值(參考 0.0爲黑暗,1.0爲光亮)
返回值:
成功返回 0
失敗返回 -1
原型:
int SDL_SetWindowBrightness(SDL_Window* window,
float brightness)

函數名稱:SDL_SetWindowDisplayMode
功能:設置窗口顯示模式
參數:
window 窗口指針
mode 顯示模式
返回值:
成功返回 0
失敗返回 -1
原型:
int SDL_SetWindowDisplayMode(SDL_Window* window,
const SDL_DisplayMode* mode)
函數名稱:SDL_SetWindowFullscreen
功能:設置窗口全屏狀態
參數:
window 窗口指針
flags 旗幟
SDL_WINDOW_FULLSCREEN, 真全屏SDL_WINDOW_FULLSCREEN_DESKTOP 假全屏(以桌面大小)
返回值:
成功返回 0
失敗返回 -1
原型:
int SDL_SetWindowFullscreen(SDL_Window* window,
Uint32 flags)

函數名稱:
SDL_SetWindowGammaRamp
功能:設置窗口的伽馬坡道
參數:
window 窗口指針
red,green,blue 紅綠藍
返回值:
成功返回 0
失敗返回 -1
原型:
int SDL_SetWindowGammaRamp(SDL_Window* window,
const Uint16* red,
const Uint16* green,
const Uint16* blue)
函數名稱:SDL_SetWindowGrab
功能:設置窗口的輸入
參數:
window 窗口指針
grabbed 是否開啓
返回值:
原型:
void SDL_SetWindowGrab(SDL_Window* window,
SDL_bool grabbed)
函數名稱:SDL_SetWindowIcon
功能:設置窗口小圖標
參數:
window 窗口指針
icon 圖標貼圖
返回值:
原型:
void SDL_SetWindowIcon(SDL_Window* window,
SDL_Surface* icon)
函數名稱:
SDL_SetWindowMaximumSize
功能:設置窗口最大大小
參數:
window 窗口指針
max_w,max_h 最大寬和最大高
返回值:
原型:
void SDL_SetWindowMaximumSize(SDL_Window* window,
int max_w,
int max_h)
函數名稱:
SDL_SetWindowMinimumSize
功能:設置窗口最小大小
參數:
window 窗口指針
min_w,min_h 最小寬和最小高
返回值:
原型:
void SDL_SetWindowMinimumSize(SDL_Window* window,
int min_w,
int min_h)
函數名稱:SDL_SetWindowPosition
功能:設置窗口位置座標
參數:
window 窗口指針
x,y 座標
返回值:
原型:
void SDL_SetWindowPosition(SDL_Window* window,
int x,
int y)
函數名稱:SDL_SetWindowSize
功能:設置窗口大小
參數:
window 窗口指針
w,h 寬,高
返回值:
原型:
void SDL_SetWindowSize(SDL_Window* window,
int w,
int h)
函數名稱:SDL_SetWindowTitle
功能:設置窗口標題
參數:
window 窗口指針
title 標題
返回值:
原型:
void SDL_SetWindowTitle(SDL_Window* window,
const char* title)
函數名稱:SDL_ShowWindow
功能:顯示窗口
參數:
window 窗口指針
返回值:
原型:
void SDL_ShowWindow(SDL_Window* window)
函數名稱:
SDL_UpdateWindowSurfaceRects
功能:更新窗口指定區域
參數:
window 窗口指針
rects 矩形局域
numrects 矩形數量
返回值:
成功返回 0
失敗返回 -1
原型:
int SDL_UpdateWindowSurfaceRects(SDL_Window* window,const SDL_Rect* 
rects,int numrects)
函數名稱:SDL_UpdateWindowSurface
功能:更新窗口
參數:
window 窗口指針
返回值:
成功返回 0
失敗返回 -1
原型:
int SDL_UpdateWindowSurface(SDL_Window* window)
函數名稱:SDL_VideoInit
功能:初始化視頻子系統,可以選擇指定的視頻驅動程序
參數:
driver_name 驅動名稱
返回值:
成功返回 0
失敗返回 -1
原型:
int SDL_VideoInit(const char* 
driver_name)
函數名稱:SDL_VideoQuit
功能:結束視頻子系統
參數:
返回值:
原型:
void SDL_VideoQuit(void)
函數名稱:SDL_GetWindowWMInfo
功能:獲取驅動程序特定的信息
參數:
window 窗口指針
info 信息
返回值:
成功返回 SDL_TRUE 
失敗返回 SDL_FALSE
原型:
SDL_bool SDL_GetWindowWMInfo(SDL_Window* window,
SDL_SysWMinfo* info)
發幾個結構體
SDL_DisplayMode結構 顯示模式
Uint32 format SDL_PixelFormatEnum值之一
int w 寬
int h 高
int refresh_rate 刷新率


SDL_WindowEvent結構 窗口事件
Uint32 type 類型
Uint32 timestamp 時間戳
Uint32 windowID 窗口ID
Uint8 event 事件
Uint8 padding1 填充1
Uint8 padding2 填充2
Uint8 padding3 填充3
Sint32 data1 事件相關數據1
Sint32 data2 事件相關數據2

SDL_RendererInfo結構 渲染器信息
const char* name 渲染器名稱
Uint32 flags 支持渲染器的"旗幟"
Uint32 num_texture_formats 紋理格式的數量
Uint32[16] texture_formats 紋理格式
int max_texture_width 紋理最大寬
int max_texture_height 紋理最大高
SDL_PixelFormat結構 像素格式
Uint32 format:依據它解析出的uint32_t類型32位值
SDL_Palette* palette:調色板數據
Uint8 BitsPerPixel:每像素位數。
Uint8 BytesPerPixel:每像素字節數。
Uint8 padding[2]:(對結構對齊而使用的填充字節)
Uint32 Rmask:32位值,R分量掩碼。
Uint32 Gmask:32位值,G分量掩碼。
Uint32 Bmask:32位值,B分量掩碼。
Uint32 Amask:32位值,A分量掩碼。
Uint8 Rloss:8減去R分量佔用位數。
Uint8 Gloss:8減去G分量佔用位數。
Uint8 Bloss:8減去B分量佔用位數。
Uint8 Aloss:8減去A分量佔用位數。
Uint8 Rshift:Rmask的第一非0位位置。
Uint8 Gshift:Gmask的第一非0位位置。
Uint8 Bshift:Bmask的第一非0位位置。
Uint8 Ashift:Amask的第一非0位位置。
int refcount:引用計數。分配和釋放時使用。
struct SDL_PixelFormat* next:下一個像素格式結構塊。

關聯文件 SDL2/SDL_assert.h

每個SDL_ASSERT_LEVEL設置和相應的影響三個SDL_assert功能:
三個SDL_assert函數:
SDL_assert
  SDL_assert_release
   SDL_assert_paranoid
SDL_ASSERT_LEVEL值 描述 
0 禁用 ,禁用,禁用 
1 禁用,啓用,禁用 
2 啓用,啓用,禁用
3 啓用,啓用,啓用

SDL_assert_data結構體 斷點數據
int always_ignore 1或0 是否同意用該斷點
unsigned int trigger_count 多少次觸發斷點
const char* condition 斷點檢查條件 
const char* filename 包含該斷點的文件名
int linenum 斷點在文件中的位置
const char* function 包含斷點的函數名
const struct SDL_assert_data* next 下一個斷點

函數名稱:SDL_SetAssertionHandler
功能:設置斷點處理
參數:
返回值:
備註:
這個函數允許應用程序來顯示自己的斷點或強迫響應斷點失敗。
處理程序的函數原型:
  SDL_assert_state YourAssertionHandler(const SDL_assert_data *data
  void *userdata)
data 一個指針SDL_assert_data結構對應於當前的斷點
userdata 作爲用戶數據傳遞給SDL_SetAssertionHandler

原型:
void SDL_SetAssertionHandler(SDL_AssertionHandler handler,
void* userdata)
函數名稱:SDL_TriggerBreakpoint
功能:觸發斷點調試
參數:
返回值:
原型:void SDL_TriggerBreakpoint(void)
函數名稱:SDL_assert
功能:設置調試斷點
參數:
返回值:
原型:
void SDL_assert(condition)
函數名稱:
SDL_assert_paranoid
功能:設置調試paranoid斷點
參數:
返回值:
原型:
void SDL_assert_paranoid(condition)
函數名稱:SDL_assert_release
功能:設置調試release斷點
參數:
返回值:
原型:
void SDL_assert_release(condition)

關聯文件 SDL2/SDL_render.h

函數名稱:
功能:創建渲染器
參數:
返回值:
原型:
SDL_Renderer* SDL_CreateRenderer(SDL_Window* window,
int index,
Uint32 flags)

函數名稱:
功能:創建一個2 d軟件渲染表面。
參數:
surface 表面指針
返回值:
成功 渲染器指針
失敗 NULL
原型:
SDL_Renderer* SDL_CreateSoftwareRenderer(SDL_Surface* surface)
access 
SDL_TEXTUREACCESS_STATIC
  變化很少,而不是可鎖定的
SDL_TEXTUREACCESS_STREAMING
  經常變化,可鎖定的
w,h 寬高
返回值:
成功 紋理指針
失敗 請用SDL_GetError() 獲取錯誤信息
原型:
SDL_Texture* SDL_CreateTexture(SDL_Renderer* renderer,
Uint32 format,
int access, 
int w,
int h)
函數名稱:
功能:創建一個從現有的表面紋理
參數:
renderer 渲染器指針
surface 表面指針
返回值:
成功 紋理指針
失敗 請用SDL_GetError() 獲取錯誤信息
原型:
SDL_Texture* SDL_CreateTextureFromSurface(SDL_Renderer* renderer,
SDL_Surface* surface)
函數名稱:
功能:創建一個窗口並配置渲染器
參數:
width 窗口寬
height 窗口高
window_flags 參見
SDL_CreateWindow()
window 創建的窗口指針
renderer 渲染器指針
返回值:
成功 0
失敗 -1
原型:
int SDL_CreateWindowAndRenderer(int width,
int height,
Uint32 window_flags,
SDL_Window** window,
SDL_Renderer** renderer)
函數名稱:
功能:銷燬一個渲染器
參數:renderer 渲染器指針
返回值:
原型
void SDL_DestroyRenderer(SDL_Renderer* renderer)
函數名稱:
功能:銷燬一個紋理
參數: texture 紋理指針
返回值:
原型:
void SDL_DestroyTexture(SDL_Texture* texture)
函數名稱:
功能:獲取渲染器驅動數量
參數:
返回值:
成功 >=1
原型:
int SDL_GetNumRenderDrivers(void)
函數名稱:
功能:獲取渲染器繪圖混合模式
參數:
renderer 渲染器指針
blendMode
SDL_BLENDMODE_NONE
沒有混合
dstRGBA = srcRGBA
SDL_BLENDMODE_BLEND
灰度混合
dstRGB =(srcRGB * srcA)+(dstRGB *(1-srcA))
dstA = srcA +(dstA *(1-srcA))
SDL_BLENDMODE_ADD
添加混合
dstRGB =(srcRGB * srcA)+ dstRGB
dstA = dstA
SDL_BLENDMODE_MOD
顏色調整
dstRGB = srcRGB * dstRGB
dstA = dstA
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_GetRenderDrawBlendMode(SDL_Renderer* renderer,
SDL_BlendMode* blendMode)
函數名稱:
功能:獲取渲染器繪圖顏色
參數:
renderer 渲染器指針
r,g,b,a 紅,綠,藍,灰度(透明度)
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_GetRenderDrawColor(SDL_Renderer* renderer,
Uint8* r,
Uint8* g,
Uint8* b,
Uint8* a)
函數名稱:
功能:獲取渲染器驅動信息
參數:
index 驅動序列
info 信息,詳細參見
SDL_RendererInfo結構體
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_GetRenderDriverInfo(int index,
SDL_RendererInfo* info)
函數名稱:
功能:獲取指定窗口的渲染器
參數:
window 窗口指針
返回值:
成功 渲染器指針
失敗 NULL
原型
SDL_Renderer* SDL_GetRenderer(SDL_Window* window)
函數名稱:
功能:獲取紋理灰度(透明度)
參數:
texture 紋理指針
alpha 灰度(透明度)
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_GetTextureAlphaMod(SDL_Texture* texture,
Uint8* alpha)
函數名稱:
功能:獲取紋理混合模式
參數:
texture 紋理指針
blendMode 混合模式
SDL_BLENDMODE_NONE
沒有混合
dstRGBA = srcRGBA
SDL_BLENDMODE_BLEND
灰度混合
dstRGB =(srcRGB * srcA)+(dstRGB *(1-srcA))
dstA = srcA +(dstA *(1-srcA))
SDL_BLENDMODE_ADD
添加混合
dstRGB =(srcRGB * srcA)+ dstRGB
dstA = dstA
SDL_BLENDMODE_MOD
顏色調整
dstRGB = srcRGB * dstRGB
dstA = dstA
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_GetTextureBlendMode(SDL_Texture* texture,
SDL_BlendMode* blendMode)
函數名稱:
功能:獲取紋理顏色模式
參數:
texture 紋理指針
r,g,b 顏色
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_GetTextureColorMod(SDL_Texture* texture,
Uint8* r,
Uint8* g,
Uint8* b)
函數名稱:
功能:鎖定紋理
參數:
texture 紋理指針
rect 鎖定區域,NULL 爲整個紋理
pixels 像素 
pitch 暫時理解爲程度
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_LockTexture(SDL_Texture* texture,
const SDL_Rect* rect,
void** pixels,
int* pitch)
函數名稱:
功能:查詢紋理
參數:
texture 紋理指針
format,access,w,h 參見
SDL_CreateTexture
返回值:
原型:
int SDL_QueryTexture(SDL_Texture* texture,
Uint32* format, 
int* access,
int* w, 
int* h)
函數名稱:
功能:清空渲染器
參數:
renderer 渲染器指針
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型
int SDL_RenderClear(SDL_Renderer* renderer)
函數名稱:
功能:複製紋理到渲染器
參數:
renderer 渲染器指針
texture 紋理指針
srcrect 源區域,NULL爲整個紋理
dstrect 目標區域,NULL爲整個渲染目標
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_RenderCopy(SDL_Renderer* renderer,
SDL_Texture* texture,
const SDL_Rect* srcrect,
const SDL_Rect* dstrect)
函數名稱:
功能:複製紋理到指定區域2
參數:
renderer 渲染器指針
texture 紋理指針
srcrect 源區域,NULL爲整個紋理
dstrect 目標區域,NULL爲整個渲染目標
angle 旋度
center 中心
flip 翻轉
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_RenderCopyEx(SDL_Renderer* renderer,
SDL_Texture* texture,
const SDL_Rect* srcrect,
const SDL_Rect* dstrect,
const double angle,
const SDL_Point *center,
const SDL_RendererFlip flip);
函數名稱:
功能:向渲染器繪製一個線段
參數:
renderer 渲染器指針
x1,y1 第一個端點的座標
x2,y2 第二個端點的座標
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_RenderDrawLine(SDL_Renderer* renderer,
int x1,
int y1,
int x2,
int y2)
函數名稱:
功能:繪製多個線段
參數:
renderer 渲染器指針
points SDL_Point 數組 點座標
count 數組長度
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_RenderDrawLines(SDL_Renderer* renderer,
const SDL_Point* points,
int count)
函數名稱:
功能:繪製一個點
參數:
renderer 渲染器指針
x,y 點座標
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_RenderDrawPoint(SDL_Renderer* renderer,
int x, 
int y)
函數名稱:
功能:繪製多個點
參數:
renderer 渲染器指針
points SDL_Point 數組 點座標
count 數組長度
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型
int SDL_RenderDrawPoints(SDL_Renderer* renderer,
const SDL_Point* points,
int count)
函數名稱:
功能:繪製一個矩形
參數:
renderer 渲染器指針
rect 矩形,詳細參見SDL_Rect結構
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_RenderDrawRect(SDL_Renderer* 
renderer,
const SDL_Rect* rect)
函數名稱:
功能:繪製多個矩形
參數:
renderer 渲染器指針
rects SDL_Rect數組
count 數組長度
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_RenderDrawRects(SDL_Renderer* renderer,
const SDL_Rect* rects,
int count)
函數名稱:
功能:繪製一個填充矩形
參數:
renderer 渲染器指針
rect 矩形
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_RenderFillRect(SDL_Renderer* renderer,
const SDL_Rect* rect)
函數名稱:
功能:繪製多個填充矩形
參數:
renderer 渲染器指針
rects SDL_Rect數組
count 數組長度
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_RenderFillRects(SDL_Renderer* renderer,
const SDL_Rect* rects,
int count)

函數名稱:
功能:獲取渲染器剪切區域
參數:
renderer 渲染器指針
rect 矩形區域
返回值:
原型:
void SDL_RenderGetClipRect(SDL_Renderer* renderer,
SDL_Rect* rect);

函數名稱:
功能:獲取繪圖區域繪製當前目標
參數:
renderer 渲染器指針
rect 矩形區域
返回值:
原型
void SDL_RenderGetViewport(SDL_Renderer* renderer,
SDL_Rect* rect)

函數名稱:
功能:更新屏幕
參數:
返回值:
原型:
void SDL_RenderPresent(SDL_Renderer* renderer)
函數名稱:
功能:讀取渲染器區域像素
參數:
renderer 渲染器指針
rect 讀取區域
format 格式
pixels 像素
pitch 像素間距
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_RenderReadPixels(SDL_Renderer* renderer,
const SDL_Rect* rect,
Uint32 format,
void* pixels,
int pitch)
函數名稱:
功能:設置渲染器剪切區域
參數:
renderer 渲染器指針
rect 剪切區域
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_RenderSetClipRect(SDL_Renderer* renderer,
const SDL_Rect* rect);
函數名稱:
功能:設置繪圖區域繪製當前目標
參數:
renderer 渲染器指針
rect 繪圖區域
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_RenderSetViewport(SDL_Renderer* renderer,
const SDL_Rect* rect)
函數名稱:
功能:設置渲染器繪製混合模式
參數:
renderer 渲染器指針
blendMode 混合模式
SDL_BLENDMODE_NONE
沒有混合
dstRGBA = srcRGBA
SDL_BLENDMODE_BLEND
透明混合
dstRGB =(srcRGB * srcA)+(dstRGB *(1-srcA))
dstA = srcA +(dstA *(1-srcA))
SDL_BLENDMODE_ADD
添加混合
dstRGB =(srcRGB * srcA)+ dstRGB
dstA = dstA
SDL_BLENDMODE_MOD
顏色調整
dstRGB = srcRGB * dstRGB
dstA = dstA
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_SetRenderDrawBlendMode(SDL_Renderer* renderer,
SDL_BlendMode blendMode)
函數名稱:
功能:設置繪製顏色
參數:
renderer 渲染器指針
r,g,b,a 紅,綠,藍,透明度
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型
int SDL_SetRenderDrawColor(SDL_Renderer* renderer,
Uint8 r,
Uint8 g,
Uint8 b,
Uint8 a)
函數名稱:
功能:設置一個紋理作爲當前渲染目標
參數:
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_SetRenderTarget(SDL_Renderer *renderer,
SDL_Texture *texture)
函數名稱:
功能:設置紋理透明度
參數:
texture 紋理指針
alpha 透明度
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_SetTextureAlphaMod(SDL_Texture* texture,
Uint8 alpha)
函數名稱:
功能:設置紋理混合模式
參數:
texture 紋理指針
blendMode 混合模式

SDL_BLENDMODE_NONE
沒有混合
dstRGBA = srcRGBA
SDL_BLENDMODE_BLEND
透明混合
dstRGB =(srcRGB * srcA)+(dstRGB *(1-srcA))
dstA = srcA +(dstA *(1-srcA))
SDL_BLENDMODE_ADD
添加混合
dstRGB =(srcRGB * srcA)+ dstRGB
dstA = dstA
SDL_BLENDMODE_MOD
顏色調整
dstRGB = srcRGB * dstRGB
dstA = dstA
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_SetTextureBlendMode(SDL_Texture* texture,
SDL_BlendMode blendMode)
函數名稱:
功能:設置紋理顏色模式
參數:
texture 紋理指針
r,g,b 顏色
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型:
int SDL_SetTextureColorMod(SDL_Texture* texture,
Uint8 r,
Uint8 g,
Uint8 b)
函數名稱:
功能:解鎖紋理
參數:texture 紋理指針
返回值:
原型:
void SDL_UnlockTexture(SDL_Texture* texture)
函數名稱:
功能:更新紋理
參數:
texture 紋理指針
rect 區域
pixels 像素
pitch 像素間距
返回值:
成功返回 0
失敗 用 SDL_GetError() 獲取
原型
int SDL_UpdateTexture(SDL_Texture* texture,
const SDL_Rect* rect,
const void* pixels,
int pitch)
宏
像素格式宏
SDL_PIXELTYPE(format)
像素的類型格式
SDL_PIXELORDER(format)

位像素格式
SDL_PIXELLAYOUT(format)

通道像素格式的位模式
SDL_BITSPERPIXEL(format)

像素顏色信息
SDL_BYTESPERPIXEL(format)

一個像素的字節數
SDL_ISPIXELFORMAT_INDEXED(format)

適用於像素格式的調色板
SDL_ISPIXELFORMAT_ALPHA(format)

alpha通道的像素格式
SDL_ISPIXELFORMAT_FOURCC(format)

適用於像素格式代表獨特的格式,例如YUV格式

常量
像素格式的值
SDL_PIXELFORMAT_UNKNOWN
SDL_PIXELFORMAT_INDEX1LSB
SDL_PIXELFORMAT_INDEX1MSB
SDL_PIXELFORMAT_INDEX4LSB
SDL_PIXELFORMAT_INDEX4MSB
SDL_PIXELFORMAT_INDEX8
SDL_PIXELFORMAT_RGB332
SDL_PIXELFORMAT_RGB444
SDL_PIXELFORMAT_RGB555
SDL_PIXELFORMAT_BGR555
SDL_PIXELFORMAT_ARGB4444
SDL_PIXELFORMAT_RGBA4444
SDL_PIXELFORMAT_ABGR4444
SDL_PIXELFORMAT_BGRA4444
SDL_PIXELFORMAT_ARGB1555
SDL_PIXELFORMAT_RGBA5551
SDL_PIXELFORMAT_ABGR1555
SDL_PIXELFORMAT_BGRA5551
SDL_PIXELFORMAT_RGB565
SDL_PIXELFORMAT_BGR565
SDL_PIXELFORMAT_RGB24
SDL_PIXELFORMAT_BGR24
SDL_PIXELFORMAT_RGB888
SDL_PIXELFORMAT_RGBX8888
SDL_PIXELFORMAT_BGR888
SDL_PIXELFORMAT_BGRX8888
SDL_PIXELFORMAT_ARGB8888
SDL_PIXELFORMAT_RGBA8888
SDL_PIXELFORMAT_ABGR8888
SDL_PIXELFORMAT_BGRA8888
SDL_PIXELFORMAT_ARGB2101010
SDL_PIXELFORMAT_YV12
SDL_PIXELFORMAT_IYUV
SDL_PIXELFORMAT_YUY2
SDL_PIXELFORMAT_UYVY
SDL_PIXELFORMAT_YVYU

結構體
SDL_Color
Uint8 r 紅色 取值範圍0-255
Uint8 g綠色 取值範圍 0-255
Uint8 b藍色 取值範圍0-255
Uint8 a透明度 取值範圍 0-255

SDL_Palette
int ncolors 調色板顏色數量,數組長度
SDL_Color* colors 顏色數組
Uint32 version 內部使用,不翻譯
int refcount 內部使用,不翻譯

功能:創建一個SDL_Palette 結構對應調色板
參數:ncolors 顏色數量
返回值:
成功 參見SDL_Palette結構
失敗 NULL
備註:調色板初始化爲白色的
原型:
SDL_Palette* SDL_AllocPalette(int ncolors)
功能:計算256伽馬值
參數:
gamma 伽馬值 0.0~1.0
ramp 一個數組存放的是需要正的梯度 長度256
返回值:
原型:
void SDL_CalculateGammaRamp(float gamma,
Uint16* ramp)
功能:釋放一個由SDL_AllocFormat創建的像素格式
參數:format 像素格式指針 
返回值:
原型:
void SDL_FreeFormat(SDL_PixelFormat* format)
功能:釋放一個調色板
參數:palette 調色板指針
返回值:
原型:
void SDL_FreePalette(SDL_Palette* palette)
功能:獲取像素格式對應名稱
參數:
format參見常量 像素格式的值
返回值:
成功 名稱字符串
失敗 SDL_PIXELFORMAT_UNKNOWN
原型:
const char* SDL_GetPixelFormatName(Uint32 format)
功能:獲取一個像素的RGB值
參數:
pixel 像素值
format 格式
r,g,b 顏色
返回值:
原型:
void SDL_GetRGB(Uint32 pixel,
const SDL_PixelFormat* format,
Uint8* r, 
Uint8* g, 
Uint8* b)
功能:獲取一個像素的RGB值
參數:
部分同上
a 透明度
返回值:
原型:
void SDL_GetRGBA(Uint32 pixel,
const SDL_PixelFormat* format,
Uint8* r,
Uint8* g,
Uint8* b,
Uint8* a)
功能:將RGB值映射到一個像素格式
參數:
format 像素格式 ,詳細參見SDL_PixelFormat結構體
r,g,b 顏色
返回值:
如果這個像素格式有一個8位索引,則返回匹配的調色板
如果這個像素格式有灰度,將返回1
如果這個像素格式bpp(顏色深度)小於32-bpp,將忽略返回值
原型:
Uint32 SDL_MapRGB(const SDL_PixelFormat* format,
Uint8 r, 
Uint8 g, 
Uint8 b)
功能:獲取一個像素的RGBA值
參數:
部分同上函數
a 灰度(透明度)
返回值:
返回的像素值最接近給定的RGBA顏色值的格式
如果指定的像素格式沒有灰度值,返回將被忽略
如果這個像素格式有一個8位索引,則返回匹配的調色板
如果這個像素格式bpp(顏色深度)小於32-bpp,將忽略返回值
原型:
Uint32 SDL_MapRGBA(const SDL_PixelFormat* format,
Uint8 r, 
Uint8 g, 
Uint8 b,
Uint8 a)
功能:用bpp值和RGBA值來獲得像素格式
參數:
bpp 顏色深度
Rmask R分量掩碼
Gmask G分量掩碼
Bmask B分量掩碼
Amask A分量掩碼
返回值:
參見上面的 像素格式的值
原型:
Uint32 SDL_MasksToPixelFormatEnum(int bpp,
Uint32 Rmask,
Uint32 Gmask,
Uint32 Bmask,
Uint32 Amask)
功能:獲取像素格式的值的顏色深度和RGBA值
參數:
format 參見上面的 像素格式的值 常量
bpp顏色深度
Rmask Gmask Bmask Amask 顏色分量掩碼
返回值:
成功 SDL_TURE
失敗 SDL_FALSE
原型:
SDL_bool SDL_PixelFormatEnumToMasks(Uint32 format,
int* bpp,
Uint32* Rmask,
Uint32* Gmask,
Uint32* Bmask,
Uint32* Amask)
功能:設置調色板的顏色
參數:
palette 調色板
colors 顏色數組
firstcolor 第一個顏色
ncolors 顏色數組長度
返回值:
成功 0
失敗 用SDL_GetError() 獲取錯誤信息
原型:
int SDL_SetPaletteColors(SDL_Palette* palette,
const SDL_Color* colors,
int firstcolor,
int ncolors)
功能 爲一個像素格式配置調色板
參數:
format 像素格式
palette 調色板
返回值:
成功 0
失敗 用SDL_GetError() 獲取錯誤信息
原型:
int SDL_SetPixelFormatPalette(SDL_PixelFormat* format,
SDL_Palette* palette)

關聯文件 SDL2/SDL_rect.h

結構體
SDL_Point
int x 橫座標
int y 縱座標

SDL_Rect
int x 橫座標
int y 縱座標
int w 寬
int h 高
功能:檢測矩形A與矩形B是否碰撞
參數:
A 矩形A
B 矩形B
返回值:
成功返回 SDL_TRUE
失敗返回 SDL_FALSE
原型:
SDL_bool SDL_HasIntersection(const SDL_Rect* A,
const SDL_Rect* B)
功能:矩形A矩形B相交區域
A 矩形A
B 矩形B
result 相交區域
返回值:
成功返回 SDL_TRUE
失敗返回 SDL_FALSE
原型:
SDL_bool SDL_IntersectRect(const SDL_Rect* A,
const SDL_Rect* B,
SDL_Rect* result)
功能:計算最小矩形封閉的點的集合
參數:
points 點集,數組
count 數組長度
clip 用於剪切區域內的點,NULL 所有點
result 結果矩形
返回值:
成功返回 SDL_TRUE
失敗返回 SDL_FALSE
原型:
SDL_bool SDL_EnclosePoints(const SDL_Point* points,
int count,
const SDL_Rect* clip,
SDL_Rect* result)
功能:檢測線段與矩形是否碰撞
參數:
rect 矩形
x1,y1,x2,y2 線段座標
返回值:
成功返回 SDL_TRUE
失敗返回 SDL_FALSE
原型:
SDL_bool SDL_IntersectRectAndLine(const SDL_Rect* rect,
int* X1,
int* Y1,
int* X2,
int* Y2)
功能:檢查矩形是否爲空
參數:r 矩形
返回值:
成功返回 SDL_TRUE
失敗返回 SDL_FALSE
原型:
SDL_bool SDL_RectEmpty(const SDL_Rect* r)
功能:合併兩個矩形
參數:
A 矩形A
B 矩形B
result 結果矩形
返回值:
成功返回 SDL_TRUE
失敗返回 SDL_FALSE
原型:
void SDL_UnionRect(const SDL_Rect* A,
const SDL_Rect* B,
SDL_Rect* result)
功能:檢查兩個矩形是否相等
參數:
a 矩形a
b 矩形b
返回值:
成功返回 SDL_TRUE
失敗返回 SDL_FALSE
原型:
SDL_bool SDL_RectEquals(const SDL_Rect* a,
const SDL_Rect* b)

關聯文件 SDL2/SDL_surface.h

結構體


SDL_Surface
Uint32 flags (內部使用)
SDL_PixelFormat* format 像素格式,
詳細請看SDL_PixelFormat結構體(只讀)
int w, h 寬,高 (只讀)
int pitch 像素間距(只讀)
void* pixels 像素(讀寫)
void* userdata 用戶數據(讀寫)
int locked 鎖定(內部使用)
void* lock_data 鎖數據 (內部使用)
SDL_Rect clip_rect剪切區域 (只讀)
SDL_!BlitMap* map (內部使用)
int refcount 引用計數
函數部分
功能:實現縮放表面複製到目標表面
參數:
src 源表面指針
srcrect 源區域
dst 目標表面
dstrect 目標區域
返回值:
成功 0
失敗 請用SDL_GetError() 獲取錯誤信息
原型:
int BlitScaled(SDL_Surface* src,
const SDL_Rect* srcrect,
SDL_Surface* dst,
SDL_Rect* dstrect)
功能:可進行快速表面複製到目標表面
參數:
src 源表面指針
srcrect 源區域
dst 目標表面
dstrect 目標區域
返回值:
成功 0
失敗 請用SDL_GetError() 獲取錯誤信息
原型:
int SDL_BlitSurface(SDL_Surface* src,
const SDL_Rect* srcrect,
SDL_Surface* dst,
SDL_Rect* dstrect)
功能:以一種格式的像素塊複製到另一種格式
參數:
width 以像素爲單位的塊的寬度
height 以像素爲單位的塊的高度 
src_format 源像素的格式
src 一個指向源像素的指針
src_pitch 複製該塊的間距
dst_format 目標像素的格式
dst 填充了新的象素數據的指針
dst_pitch 目標塊的間距
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
原型:
int SDL_ConvertPixels(int width,
int height,
Uint32 src_format,
const void* src,
int src_pitch,
Uint32 dst_format,
void* dst,
int dst_pitch)
功能:將表面傳送到指定的像素格式的表面進行優化
參數:
src 源表面
fmt 像素格式
flags 未被使用,應置爲0
返回值:
成功 優化後的表面指針
失敗 NULL
原型:
SDL_Surface* SDL_ConvertSurface(SDL_Surface* src,
const SDL_PixelFormat* fmt,
Uint32 flags)
功能:將現有的表面複製到指定格式的新的表面
參數:
src 源表面指針
pixel_format 像素格式,取值參考 像素格式的值 常量
flags 設置爲0既可
返回值:
原型:
SDL_Surface* SDL_ConvertSurfaceFormat(SDL_Surface* src,
Uint32 pixel_format,
Uint32 flags)
功能:創建一個RGB表面
參數:
flags 設置爲0既可
width,height 寬,高
depth 顏色深度
Rmask Gmask Bmask Amask 顏色掩碼
返回值:
成功 表面指針
失敗 NULL
原型:
SDL_Surface* SDL_CreateRGBSurface(Uint32 flags,
int width,
int height,
int depth,
Uint32 Rmask,
Uint32 Gmask,
Uint32 Bmask,
Uint32 Amask)
功能:繪製多個填充矩形
參數:
dst 繪製表面
rects 矩形數組,參見SDL_Rect結構體
count 數組長度
color 顏色,可以通過SDL_MapRGB()或SDL_MapRGBA()被生成。
返回值:
原型:
int SDL_FillRects(SDL_Surface* dst,
const SDL_Rect* rects,
int count,
Uint32 color)
功能:釋放一個表面
參數:
surface 表面指針
返回值:
原型:
void SDL_FreeSurface(SDL_Surface* surface)
功能:獲得的裁剪的矩形表面
參數:
surface 表面指針
rect 裁剪矩形
返回值:
原型:
void SDL_GetClipRect(SDL_Surface* surface,
SDL_Rect* rect)
功能:獲取表面的顏色鍵(透明度)
參數:
surface 表面指針
key 顏色鍵指針
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:顏色鍵是用表面上的格式的一個象素,由SDL_MapRGB()作爲生成的。
原型:
int SDL_GetColorKey(SDL_Surface* surface,
Uint32* key)
功能:獲取表面透明度
參數:
surface 表面指針
alpha 透明度指針
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:
原型:
int SDL_GetSurfaceAlphaMod(SDL_Surface* surface,
Uint8* alpha)
功能:獲得用於位塊傳輸操作的混合模式
參數:
surface 表面指針
blendMode 混合模式
SDL_BLENDMODE_NONE 無混合
dstRGBA = srcRGBA
SDL_BLENDMODE_BLEND 透明混合
dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA))
dstA = srcA + (dstA * (1-srcA))
SDL_BLENDMODE_ADD 添加混合
dstRGB = (srcRGB * srcA) + dstRGB
dstA = dstA
SDL_BLENDMODE_MOD 顏色混合
dstRGB = srcRGB * dstRGB
dstA = dstA
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:
原型:
int SDL_GetSurfaceBlendMode(SDL_Surface* surface,
SDL_BlendMode* blendMode)
功能:獲得表面的顏色值
參數:
surface 表面指針
r,g,b 顏色指針
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:
原型:
int SDL_GetSurfaceColorMod(SDL_Surface* surface,
Uint8* r,
Uint8* g,
Uint8* b)
功能:加載一張bmp圖片
參數:
file 文件
返回值:
成功 表面指針
失敗 NULL
備註:
原型:
SDL_Surface* SDL_LoadBMP(const char* file)
功能:從一個SDL提供的數據流,加載bmp格式圖片
參數:
src 數據流指針
freedst 不爲0獲取後關閉數據流,爲0則相反
返回值:
成功 表面指針
失敗 NULL
備註:
原型:
SDL_Surface* SDL_LoadBMP_RW(SDL_RWops* src,
int freesrc)
功能:鎖定表面
參數:
surface 被鎖定表面指針
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:
原型:
int SDL_LockSurface(SDL_Surface* surface)
功能:進行低層次的位塊傳輸
參數:
src 源表面
srcrect 源矩形
dst 目標表面
dstrect 目標矩形
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:
原型:
int SDL_LowerBlit(SDL_Surface* src,
SDL_Rect* srcrect,
SDL_Surface* dst,
SDL_Rect* dstrect)
功能:進行低層次的表面縮放位塊傳輸
參數:
src 源表面
srcrect 源矩形
dst 目標表面
dstrect 目標矩形
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:
原型:
int SDL_LowerBlitScaled(SDL_Surface* src,
SDL_Rect* srcrect,
SDL_Surface* dst,
SDL_Rect* dstrect)
功能:確定一個表面是否必須鎖定訪問。
參數:surface 表面指針
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:
原型:
int SDL_MUSTLOCK(SDL_Surface* surface)
功能:保存一個表面爲bmp圖片
參數:
surface 表面指針
file 保存文件
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:
原型:
int SDL_SaveBMP(SDL_Surface* surface,
const char* file)
功能:保存表面到一個SDL數據流
參數:
surface 表面指針
dst 數據流指針
freedst 不爲0保存後關閉數據流,爲0則相反
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:
原型:
int SDL_SaveBMP_RW(SDL_Surface* surface,
SDL_RWops* dst,
int freedst)
功能:設置裁剪矩形表面
參數:
surface 表面指針
rect 剪裁矩形
返回值:
成功SDL_TRUE
失敗 SDL_FALSE
備註:
原型:
SDL_bool SDL_SetClipRect(SDL_Surface* surface,
const SDL_Rect* rect)
功能:設置表面透明度
參數:
surface 表面指針
alpha 透明度
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:
原型:
int SDL_SetSurfaceAlphaMod(SDL_Surface* surface,
Uint8 alpha)
功能:設置表面混合模式
參數:
surface 表面指針
blendMode 混合模式
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:
原型:
int SDL_SetSurfaceBlendMode(SDL_Surface* surface,
SDL_BlendMode blendMode)
功能:設置表面顏色模式
參數:
surface 表面指針
r,g,b 顏色
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:
原型:
int SDL_SetSurfaceColorMod(SDL_Surface* surface,
Uint8 r,
Uint8 g,
Uint8 b)
功能:設置表面調色板
參數:
surface 表面指針
palette 調色板指針
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:
原型:
int SDL_SetSurfacePalette(SDL_Surface* surface,
SDL_Palette* palette)
功能:設置RLE加速表面
參數:
surface 表面指針
flag 爲0關閉加速,非0開啓
返回值:
返回0表示成功
失敗則返回一個負的錯誤代碼,請使用SDL_GetError()獲取更多信息。
備註:
原型:
int SDL_SetSurfaceRLE(SDL_Surface* surface,
int flag)
功能:解鎖表面
參數:
surface 表面指針
返回值:
備註:
原型:
void SDL_UnlockSurface(SDL_Surface* surface)
功能:設置表面的顏色鍵(透明像素)
參數:
surface 表面指針
flag
SDL_TRUE啓用,SDL_FALSE禁用
key 顏色鍵,透明象素
返回值:
備註:
原型:
int SDL_SetColorKey(SDL_Surface* surface,
int flag,
Uint32 key)

頭文件 SDL_syswm.h

枚舉
枚舉名:SDL_SYSWM_TYPE
簡介:支持窗口化子系統的枚舉
值:
SDL_SYSWM_UNKNOWN 未知系統
SDL_SYSWM_WINDOWS
微軟的Windows
SDL_SYSWM_X11
X Window系統
SDL_SYSWM_DIRECTFB
DirectFB
SDL_SYSWM_COCOA
蘋果Mac OS X
SDL_SYSWM_UIKIT
蘋果iOS

結構名:SDL_SysWMmsg
簡介 包含系統相關的窗口管理器消息的結構。
成員:
SDL_version version
包含當前SDL版的SDL_version結構
SDL_SYSWM_TYPE subsystem
窗口系統類型,詳細參見SDL_SYSWM_TYPE枚舉
int dummy
未使用(沒有特定的系統可用,幫助編譯器)
HWND win.hwnd 該消息的窗口
UINT win.msg 該消息的類型
WPARAM win.wParam
WORD消息參數
LPARAM win.lParam
長消息的參數
XEvent x11.event
X11事件結構
DFBEvent dfb.event
DirectFB的事件

函數

功能:獲得有關的窗口的具體信息
參數:
window 其信息被請求的窗口
info 一個SDL_SysWMinfo結構,保存窗口信息
返回值:
成功 SDL_TRUE
失敗 SDL_FALSE
原型:
SDL_bool SDL_GetWindowWMInfo(SDL_Window* window,
SDL_SysWMinfo* info)
示例:
#include "SDL.h"
#include "SDL_syswm.h"


int main(int argc, char *argv[]) {
SDL_Init(0);
SDL_Window* window = SDL_CreateWindow("",0,0,0,0,SDL_WINDOW_HIDDEN);

SDL_SysWMinfo info;

SDL_VERSION(&info.version); // initialize info structure with SDL version info

if(SDL_GetWindowWMInfo(window,&info)) { // the call returns true on success
// success
const char *subsystem = "an unknown system!";
switch(info.subsystem) {
case SDL_SYSWM_UNKNOWN: break;
case SDL_SYSWM_WINDOWS: subsystem = "Microsoft Windows(TM)"; break;
case SDL_SYSWM_X11: subsystem = "X Window System"; break;
case SDL_SYSWM_DIRECTFB: subsystem = "DirectFB"; break;
case SDL_SYSWM_COCOA: subsystem = "Apple OS X"; break;
case SDL_SYSWM_UIKIT: subsystem = "UIKit"; break;
}
SDL_Log("This program is running SDL version %d.%d.%d on %s", 
(int)info.version.major,
(int)info.version.minor,
(int)info.version.patch,
subsystem);

} else {
// call failed
SDL_LogError(SDL_LOG_CATEGORY_ERROR, "Couldn't get window information: %s", SDL_GetError());
}

SDL_DestroyWindow(window);
SDL_Quit();

}

頭文件 SDL_clipboard.h

功能:從剪切板中獲取一條utf-8字符串
參數:
返回值:
成功 字符串指針
失敗 NULL
原型:
char* SDL_GetClipboardText(void)
功能:檢查剪貼板中是否有字符串
參數:
返回值:
有 SDL_TRUE
沒有 SDL_FALSE
原型:
SDL_bool SDL_HasClipboardText(void)
功能:設置一條字符串到剪貼板
參數:
text 字符串指針
返回值:
成功返回 0
失敗 請用SDL_GetError()獲取錯誤信息
原型:
int SDL_SetClipboardText(const char* text)

頭文件 SDL_events.h

枚舉 
枚舉名:SDL_EventType
值:
SDL_FIRSTEVENT
刪除(未使用)

應用程序事件
SDL_QUIT
用戶請求的事件
Android和iOS的事件
SDL_APP_TERMINATING
操作系統終止應用
SDL_APP_LOWMEMORY
操作系統是內存不足;釋放一些
SDL_APP_WILLENTERBACKGROUND
應用程序進入後臺
SDL_APP_DIDENTERBACKGROUND
進入應用背面
SDL_APP_WILLENTERFOREGROUND
應用正進入前面
SDL_APP_DIDENTERFOREGROUND
進入應用前面
窗口事件
SDL_WINDOWEVENT
窗口狀態變化
SDL_SYSWMEVENT
特定的系統事件

鍵盤事件
SDL_KEYDOWN
鍵按下
SDL_KEYUP
按鍵鬆開

SDL_TEXTEDITING
鍵盤文字編輯(組成)
SDL_TEXTINPUT
鍵盤文字輸入

鼠標事件
SDL_MOUSEMOTION
鼠標移動
SDL_MOUSEBUTTONDOWN
按下鼠標按鈕
SDL_MOUSEBUTTONUP
釋放鼠標按鈕
SDL_MOUSEWHEEL
鼠標滾輪運動

操縱桿事件
SDL_JOYAXISMOTION
搖桿軸運動
SDL_JOYBALLMOTION
操縱桿軌跡球運動
SDL_JOYHATMOTION
搖桿帽位置變化
SDL_JOYBUTTONDOWN
操縱桿按鈕按下
SDL_JOYBUTTONUP
搖桿鍵發佈
SDL_JOYDEVICEADDED
搖桿連接
SDL_JOYDEVICEREMOVED
斷開操縱桿

控制器事件
SDL_CONTROLLERAXISMOTION
控制軸運動
SDL_CONTROLLERBUTTONDOWN
控制按鈕被按下
SDL_CONTROLLERBUTTONUP
控制按鈕發佈
SDL_CONTROLLERDEVICEADDED
控制器相連
SDL_CONTROLLERDEVICEREMOVED
控制器斷開連接
SDL_CONTROLLERDEVICEREMAPPED
控制器映射更新

觸摸事件
SDL_FINGERDOWN
用戶觸摸輸入裝置
SDL_FINGERUP
用戶停止觸摸輸入設備
SDL_FINGERMOTION
用戶拖動手指輸入設備

手勢事件
SDL_DOLLARGESTURE
SDL_DOLLARRECORD
SDL_MULTIGESTURE

剪貼板事件
SDL_CLIPBOARDUPDATE
改變剪貼板

拖放事件
SDL_DROPFILE

這些是供您使用,並應分配SDL_RegisterEvents()
SDL_USEREVENT
一個用戶指定的事件
SDL_LASTEVENT
僅適用於邊界內部數組
例子:
SDL_Event e;
while (SDL_PollEvent(&e) {
if (e.type == SDL_KEYDOWN) {
printf("User just pressed down a key!");
}
}
結構名:SDL_DollarGestureEvent
簡介 包含複雜的手勢事件信息的結構
成員:
Uint32 type 類型
Uint32 timestamp 事件的時間戳
SDL_TouchID touchId 觸摸設備序列
SDL_GestureID gestureId 描述
Uint32 numFingers 描述
float error 錯誤描述
float x
//0 ~1。切換到屏幕COORDS
float y 描述
結構名: SDL_DropEvent
簡介:
包含用於請求一個文件系統打開一個文件的結構
成員:
Uint32 type 事件類型
Uint32 timestamp 事件的時間戳
char* file 文件名,它應該用SDL_free()釋放
結構名:SDL_Event
簡介 包含不同事件類型的結構
成員:
Uint32 type 事件類型,所有事件都可用
SDL_CommonEvent common 常見的事件數據
SDL_WindowEvent window 窗口事件
SDL_KeyboardEvent key 鍵盤事件
SDL_TextEditingEvent edit 文本編輯事件
SDL_TextInputEvent text 文本輸入事件
SDL_MouseMotionEvent motion 鼠標移動事件
SDL_MouseButtonEvent button 鼠標按鈕事件
SDL_MouseWheelEvent wheel
鼠標滾輪事件
SDL_JoyAxisEvent jaxis 
操縱桿軸事件數據
SDL_JoyBallEvent jball
操縱桿球事件數據
SDL_JoyHatEvent jhat
搖桿帽事件數據
SDL_JoyButtonEvent jbutton
操縱桿按鈕事件數據
SDL_JoyDeviceEvent jdevice
操縱桿設備事件數據
SDL_ControllerAxisEvent caxis
遊戲手柄軸事件數據
SDL_ControllerButtonEvent cbutton
遊戲控制器按鈕事件數據
SDL_ControllerDeviceEvent cdevice
遊戲控制器設備的事件數據
SDL_QuitEvent quit
退出請求事件數據
SDL_UserEvent user
自定義事件數據
SDL_SysWMEvent syswm
系統相關的窗口事件數據
SDL_TouchFingerEvent tfinger
手指觸碰事件數據
SDL_MultiGestureEvent mgesture
多手指手勢數據
SDL_DollarGestureEvent dgesture
UINT32
類型
事件類型,所有活動共享
SDL_CommonEvent
常見
常見的事件數據
SDL_WindowEvent
窗口
窗口事件數據
SDL_KeyboardEvent
關鍵
鍵盤事件數據
SDL_TextEditingEvent
編輯
文本編輯事件數據
SDL_TextInputEvent
文本
文本輸入事件數據
SDL_MouseMotionEvent
運動
鼠標移動事件數據
SDL_MouseButtonEvent
鈕
鼠標按鈕的事件數據
SDL_MouseWheelEvent
輪
鼠標滾輪事件數據
SDL_JoyAxisEvent
jaxis
操縱桿軸事件數據
SDL_JoyBallEvent
jball
操縱桿球事件數據
SDL_JoyHatEvent
與jHat
搖桿帽事件數據
SDL_JoyButtonEvent
JButton的
操縱桿按鈕事件數據
SDL_JoyDeviceEvent
jdevice
操縱桿設備的事件數據
SDL_ControllerAxisEvent
CAXIS
遊戲手柄軸事件數據
SDL_ControllerButtonEvent
CButton的
遊戲控制器按鈕事件數據
SDL_ControllerDeviceEvent
cdevice
遊戲控制器設備的事件數據
SDL_QuitEvent
退出
退出請求事件數據
SDL_USEREVENT
用戶
自定義事件數據
SDL_SysWMEvent
syswm
系統相關的窗口事件數據
SDL_TouchFingerEvent
tfinger
手指觸碰事件數據
SDL_MultiGestureEvent
mgesture
多手指手勢數據
SDL_DollarGestureEvent
dgesture
多手指手勢數據
SDL_DropEvent
多手指手勢數據
SDL_DropEvent drop
拖放事件數據
結構名:SDL_JoyAxisEvent
簡介:包含搖桿軸運動事件信息的結構。
成員:
Uint32 type 事件類型
Uint32 timestamp 時間戳
SDL_JoystickID which 搖桿事件索引
Uint8 axis
Uint8 padding1
Uint8 padding2
Uint8 padding3
Sint16 value 軸的當前位置,取值範圍: -32768 to 32767
Uint16 padding4

結構名 :SDL_JoyBallEvent
簡介 包含操縱桿軌跡球移動事件信息的結構
Uint32 type 事件類型
Uint32 timestamp 時間戳
SDL_JoystickID which 事件操縱桿的索引
Uint8 ball 軌跡球
Uint8 padding1
Uint8 padding2
Uint8 padding3
Sint16 xrel 在X方向上的相對運動
Sint16 yrel
在Y方向上的相對運動
結構名:SDL_JoyButtonEvent
簡介 :包含操縱桿按鈕事件信息的結構。
成員:
Uint32 type 事件類型
Uint32 timestamp 時間戳
SDL_JoystickID which 事件操縱桿的索引
Uint8 button 按鈕的索引
Uint8 state 按鈕的狀態
Uint8 padding1
Uint8 padding2
結構名:SDL_JoyHatEvent
簡介 包含搖桿帽的位置變化事件信息的結構。
成員
Uint32 type 事件類型
Uint32 timestamp 時間戳
SDL_JoystickID which 事件操縱桿的索引
Uint8 hat 搖桿帽的索引
Uint8 value 搖桿帽的新位置
Uint8 padding1
Uint8 padding2
SDL_KeyboardEvent

Uint32 type 事件類型
Uint32 timestamp 時間戳
Uint32 windowID 有鍵盤焦點的窗口
Uint8 state 鍵的狀態
Uint8 repeat 重複,非0值
Uint8 padding2
Uint8 padding3
SDL_Keysym keysym 鍵值
SDL_MouseMotionEvent
包含鼠標移動事件信息的結構。
UINT32 type 事件類型
UINT32 timestamp 事件的時間標記
UINT32 WINDOWID
鼠標焦點的窗口
UINT32 which SDL_TOUCH_MOUSEID
UINT32 state 按鈕的狀態
SINT32 x
X座標,相對於窗口
SINT32 y
Y座標,相對於窗口
SINT32 xrel
在X方向上的相對運動
SINT32 yrel
在Y方向上的相對運動
SDL_MouseButtonEvent
包含鼠標按鈕事件信息的結構。
UINT32 type 事件類型 SDL_MOUSEBUTTONDOWN或SDL_MOUSEBUTTONUP
UINT32 timestamp
事件的時間標記
UINT32 WINDOWID
鼠標焦點的窗口
UINT32 which
鼠標ID
UINT8 button 按鈕
UINT8 state 按鈕的狀態 SDL_PRESSED或SDL_RELEASED
UINT8 padding1
UINT8 padding2
SINT32 x
X座標,相對於窗口
SINT32 y
Y座標,相對於窗口

SDL_MouseWheelEvent
包含鼠標滾輪事件信息的結構。
UINT32 type SDL_MOUSEWHEEL
UINT32 timestamp 事件的時間標記
UINT32 WINDOWID 鼠標焦點的窗口
UINT32 which
鼠標ID SDL_TOUCH_MOUSEID;
SINT32 x 水平滾動
SINT32 y 垂直滾動
SDL_MultiGestureEvent
包含多個手指的手勢事件信息的結構
UINT32 type SDL_MULTIGESTURE
UINT32 timestamp 
事件的時間標記
SDL_TouchID touchId 觸摸設備索引
float dTheta 描述
float dDist 描述
float x 描述
float y 描述
UINT16 numFingers 描述
UINT16 padding

SDL_QuitEvent
包含了“退出請求”事件的結構。
Uint32 type 值爲SDL_QUIT
Uint32 timestamp 時間戳
SDL_SysWMEvent
它包含一個視頻驅動程序相關的系統事件的結構。
UINT32 type SDL_SYSWMEVENT
UINT32 timestamp 事件的時間標記
SDL_SysWMmsg * msg
驅動程序相關的數據

SDL_TextEditingEvent
包含鍵盤的文本編輯事件信息的結構。
Uint32 type 值爲SDL_TEXTEDITING
Uint32 timestamp 時間戳
Uint32 windowID
具有鍵盤焦點的窗口
char text 字符串
Sint32 start 開始位置
Sint32 length 長度
SDL_TextInputEvent
包含鍵盤文本輸入事件信息的結構。
Uint32 type SDL_TEXTINPUT
Uint32 timestamp 時間戳
Uint32 windowID
有鍵盤輸入焦點的窗口
char text 輸入的字符串,utf-8編碼
SDL_TouchFingerEvent
包含手指觸摸事件信息的結構。

Uint32 type
SDL_FINGERMOTION, SDL_FINGERDOWN, 或 SDL_FINGERUP
Uint32 timestamp 時間戳
SDL_TouchID 觸摸索引
SDL_FingerID 手指索引
float x 觸摸事件x軸的座標
float y 觸摸事件y軸的座標
float dx 移動於x軸的距離
float dy 移動於y軸的距離
float pressure 施加的壓力值
SDL_USEREVENT
它包含一個應用程序定義的事件類型的結構。
UINT32 type
從SDL_RegisterEvents得到的值
UINT32 timestamp 
事件的時間標記
UINT32 WINDOWID
相關的窗口
SINT32 code
用戶定義的事件代碼
void* data1
用戶定義的數據指針1
void* data2
用戶定義的數據指針2
代碼示例
Uint32 myEventType = SDL_RegisterEvents(1);
if (myEventType != ((Uint32)-1)) {
SDL_Event event;
SDL_zero(event);
event.type = myEventType;
event.user.code = my_event_code;
event.user.data1 = significant_data;
event.user.data2 = 0;
SDL_PushEvent(&event);
}
SDL_WindowEvent
UINT32 type
取值SDL_WINDOWEVENT
UINT32 timestamp 事件的時間標記
UINT32 WINDOWID
相關的窗口
UINT8 event
SDL_WindowEventID
UINT8 padding1
UINT8 padding2
UINT8 padding3
SINT32 data1
事件相關的數據
SINT32 data2
事件相關的數據
代碼示例
void PrintEvent(const SDL_Event * event)
{
if (event->type == SDL_WINDOWEVENT) {
switch (event->window.event) {
case SDL_WINDOWEVENT_SHOWN:
SDL_Log("Window %d shown", event->window.windowID);
break;
case SDL_WINDOWEVENT_HIDDEN:
SDL_Log("Window %d hidden", event->window.windowID);
break;
case SDL_WINDOWEVENT_EXPOSED:
SDL_Log("Window %d exposed", event->window.windowID);
break;
case SDL_WINDOWEVENT_MOVED:
SDL_Log("Window %d moved to %d,%d",
event->window.windowID, event->window.data1,
event->window.data2);
break;
case SDL_WINDOWEVENT_RESIZED:
SDL_Log("Window %d resized to %dx%d",
event->window.windowID, event->window.data1,
event->window.data2);
break;
case SDL_WINDOWEVENT_MINIMIZED:
SDL_Log("Window %d minimized", event->window.windowID);
break;
case SDL_WINDOWEVENT_MAXIMIZED:
SDL_Log("Window %d maximized", event->window.windowID);
break;
case SDL_WINDOWEVENT_RESTORED:
SDL_Log("Window %d restored", event->window.windowID);
break;
case SDL_WINDOWEVENT_ENTER:
SDL_Log("Mouse entered window %d",
event->window.windowID);
break;
case SDL_WINDOWEVENT_LEAVE:
SDL_Log("Mouse left window %d", event->window.windowID);
break;
case SDL_WINDOWEVENT_FOCUS_GAINED:
SDL_Log("Window %d gained keyboard focus",
event->window.windowID);
break;
case SDL_WINDOWEVENT_FOCUS_LOST:
SDL_Log("Window %d lost keyboard focus",
event->window.windowID);
break;
case SDL_WINDOWEVENT_CLOSE:
SDL_Log("Window %d closed", event->window.windowID);
break;
default:
SDL_Log("Window %d got unknown event %d",
event->window.windowID, event->window.event);
break;
}
}
}
函數

功能:使用此函數來添加一個回調,當一個事件被添加到事件隊列中被觸發
參數:
filter 當一個事件發生時要調用的函數
userdata 用戶數據
返回值:
備註:
原型:
void SDL_AddEventWatch(SDL_EventFilter filter,
void* userdata)

功能:使用這個函數來刪除事件回
參數:
filter 當一個事件發生時要調用的函數
userdata 用戶數據
返回值:
備註:
原型:
void SDL_DelEventWatch(SDL_EventFilter filter,
void* userdata)
功能:利用此函數的類型來設置處理事件的狀態
參數:
type 事件的類型,見SDL_EventType
state 如何處理該事件,見備註詳細信息
返回值:
返回SDL_DISABLE或SDL_ENABLE
備註:
state可以是下列任何一項:
-1
SDL_QUERY
返回指定事件的當前處理狀態

0
SDL_IGNORE(又名SDL_DISABLE)
該事件將被自動從事件隊列丟棄,不會被過濾

1
SDL_ENABLE
該事件將被正常處理
原型:
Uint8 SDL_EventState(Uint32 type,
int state)
功能:
使用此函數可對當前事件隊列中運行特定的過濾功能
參數:
filter 當一個事件發生時要調用的函數
userdata 用戶數據
返回值:
備註:
原型:
void SDL_FilterEvents(SDL_EventFilter filter, void* userdata)
功能:
使用此函數可從事件隊列中清除事件
參數:
type 要清除事件的類型,見SDL_EventType的詳細信息
返回值:
備註:
原型:
void SDL_FlushEvent(Uint32 type)
功能:
使用此函數可從事件隊列中清除多個事件。
參數:
minType 清除的最小事件類型,見SDL_EventType的詳細信息
maxType 清除的最大事件類型,見SDL_EventType的詳細信息
返回值:
備註:
原型:
void SDL_FlushEvents(Uint32 minType,
Uint32 maxType)
功能:
使用此函數來查詢當前的事件過濾器。
參數:
filter 當前的回調函數將存儲在這裏
userdata 傳遞給當前的事件過濾器的指針將被保存在這裏
返回值:
成功 SDL_TRUE
失敗 SDL_FALSE
備註:
原型:
SDL_bool SDL_GetEventFilter(SDL_EventFilter* filter,
void** userdata)
功能:
使用此函數來檢查事件隊列中的某些事件類型的存在。
參數:
要查詢的事件類型
返回值:
成功 SDL_TRUE
失敗 SDL_FALSE
備註:
原型:
SDL_bool SDL_HasEvent(Uint32 type)
功能:
使用此函數來檢查一系列事件隊列中的事件類型的存在。
參數:
minType
要查詢的最低類型事件;見SDL_EventType的詳細信息
maxType
要查詢的最高類型事件;見SDL_EventType的詳細信息
返回值:
成功 SDL_TRUE
失敗 SDL_FALSE
備註:
原型:
SDL_bool SDL_HasEvents(Uint32 minType,
Uint32 maxType)
功能:
使用此功能來檢查事件隊列中的消息,並返回它們。
參數:
events 事件
numevents 事件數量
action 要採取的行動,見備註
minType 事件類型的最小值
maxType 事件類型的最大值
返回值:
成功返回實際存儲的事件數量
失敗返回一個爲負的錯誤代碼
備註:
action可以是以下任一操作(從枚舉SDL_eventaction也可以看到)
SDL_ADDEVENT
numevents事件將被添加到事件隊列的後面
SDL_PEEKEVENT
到在事件隊列的前面numevents事件時,指定的最小和最大事件類型範圍內,將被返回,不會被從隊列中刪除
SDL_GETEVENT
到在事件隊列的前面numevents事件時,指定的最小和最大事件類型範圍內,將被返回,將被從隊列中刪除

如果action是SDL_ADDEVENT,最多numevents事件將被添加到事件隊列的後面。

如果action是SDL_PEEKEVENT,最多在事件隊列的前面numevents事件時,指定的最小和最大事件類型範圍內,將被返回,不會被從隊列中刪除。

如果action是SDL_GETEVENT,最多在事件隊列的前面numevents事件時,指定的最小和最大事件類型範圍內,將被返回,將被從隊列中刪除
在2.0以下版本中,您可能必須在調用此函數之前調用SDL_PumpEvents()。否則,當你調用SDL_PeepEvents()的事件可能還沒有準備好進行過濾。
原型:
int SDL_PeepEvents(SDL_Event* events,
int numevents,
SDL_eventaction action,
Uint32 minType,
Uint32 maxType)

功能:使用此函數來輪詢當前掛起的事件。
參數:
event 事件,SDL_Event結構
返回值:
有一個可用事件返回1
沒有則返回 0
備註:
原型:
int SDL_PollEvent(SDL_Event* event)
功能:使用此函數可從事件循環,收集從輸入設備的事件。
參數:
返回值:
備註:
原型:
void SDL_PumpEvents(void)
功能:使用此函數可將事件添加到事件隊列。
參數:
event 被添加到隊列中的事件,參見SDL_Event
返回值:
成功,則返回0,如果返回1的情況下,則過濾掉,或者在失敗時返回一個負的錯誤代碼,請SDL_GetError()獲取更多信息。一個常見的錯誤原因是事件隊列已滿。
備註:
原型:
int SDL_PushEvent(SDL_Event* event)
功能:查詢SDL_Quit是否在隊列中
參數:
返回值:
在 SDL_TRUE
不在 SDL_FALSE
備註:
原型:
SDL_bool SDL_QuitRequested(void)
功能:
使用此函數來分配一組用戶定義的事件
參數:
numevents 要分配的事件數
返回值:
成功 開始事件編號
失敗 -1
備註:
原型:
Uint32 SDL_RegisterEvents(int numevents)
例子:
Uint32 myEventType = SDL_RegisterEvents(1);
if (myEventType != ((Uint32)-1)) {
SDL_Event event;
SDL_zero(event);
event.type = myEventType;
event.user.code = my_event_code;
event.user.data1 = significant_data;
event.user.data2 = 0;
SDL_PushEvent(&event);
}
功能:使用此函數可設置過濾器來處理所有的事件
參數:
filter 當一個事件發生時要調用的函數
userdata 用戶數據,傳遞給該函數的指針
返回值:
備註:
原型:
void SDL_SetEventFilter(SDL_EventFilter filter,
void* userdata)
功能:使用此函數無限期地等待下一個可用的事件
參數:
event 事件
返回值:
返回 1 成功
返回 0 失敗
備註:
原型:
int SDL_WaitEvent(SDL_Event* event)
功能:使用此函數要等到指定的超時(以毫秒爲單位)爲下一個可用的事件。
參數:
event 事件
timeout 超時的最大毫秒數,以等待下一個可用的事件
返回值:
返回 1 成功
返回 0 失敗
備註:
原型:
int SDL_WaitEventTimeout(SDL_Event* event,
int timeout)
SDL_Keymod枚舉
KMOD_NONE 0(無修飾符適用)
KMOD_LSHIFT 左Shift鍵是按下
KMOD_RSHIFT 右Shift鍵是按下
KMOD_LCTRL 左Ctrl(控制)鍵被按下
KMOD_RCTRL
右邊的Ctrl(控制)鍵被按下
KMOD_LALT 左邊的Alt鍵是向下
KMOD_RALT 右邊的Alt鍵被按下
KMOD_LGUI 左邊的圖形用戶界面鍵(通常是Windows鍵)關閉
KMOD_RGUI
正確的圖形用戶界面鍵(通常是Windows鍵)關閉
KMOD_NUM Num Lock鍵(可能位於一個擴展鍵盤上)
KMOD_CAPS 大寫鎖定鍵被按下
KMOD_MODE AltGr鍵是按下
/*****
KMOD_CTRL
(KMOD_LCTRL | KMOD_RCTRL)
KMOD_SHIFT
(KMOD_LSHIFT | KMOD_RSHIFT)
KMOD_ALT
(KMOD_LALT | KMOD_RALT)
KMOD_GUI
(KMOD_LGUI | KMOD_RGUI)
KMOD_RESERVED
保留爲將來使用

*****/
SDL_Keysym
包含關鍵事件的結構。
SDL_Scancode scancode SDL的物理鍵碼
SDL_Keycode sym
SDL的虛擬鍵碼
Uint16 mod 按鍵模式
Uint32 unused 未使用
功能:從一個可讀的鍵名獲取其鍵
參數:
name 可讀的鍵名
返回值:
成功 返回鍵碼
失敗 SDLK_UNKNOWN
備註:
原型:
SDL_Keycode SDL_GetKeyFromName(const char* name)
功能:從一個物理鍵碼獲得其虛擬鍵碼
參數:
scancode 物理鍵碼
返回值:
成功 返回鍵碼
失敗 SDLK_UNKNOWN
備註:
原型:
SDL_Keycode SDL_GetKeyFromScancode(SDL_Scancode scancode)
功能:獲取鍵名
參數:
key 虛擬鍵碼
返回值:
成功 返回一個包含其鍵名的字符串
失敗 NULL
備註:
原型:
const char* SDL_GetKeyName(SDL_Keycode key)
功能:獲取鍵盤當前狀態
參數:
numkeys 接收到返回的數組的長度
返回值:
返回一個指針,指向一個數組
值1表示被按下,0則不是
備註:
原型:
const Uint8* SDL_GetKeyboardState(int* numkeys)
例子
const Uint8 *state = SDL_GetKeyboardState(NULL);
if ( state[SDL_SCANCODE_RETURN] ) {
printf("<RETURN> is pressed.");
}
功能:獲取當前功能鍵狀態
參數:
返回值:
返回功能鍵狀態
備註:
原型:
SDL_Keymod SDL_GetModState(void)
功能:獲取其虛擬鍵碼對應的物理鍵碼
參數:
key 虛擬鍵碼
返回值:
物理鍵碼
備註:
原型:
SDL_Scancode SDL_GetScancodeFromKey(SDL_Keycode key)
功能:從一個可讀的鍵名獲取其物理鍵碼
參數:
name 可讀名稱字符串
返回值:
物理鍵碼
備註:
原型:
SDL_Scancode SDL_GetScancodeFromName(const char* name)
功能:從一個物理鍵碼獲取可讀的鍵名
參數:
scancode 物理鍵碼
返回值:
一個可讀鍵名字符串
備註:
原型:
const char* SDL_GetScancodeName(SDL_Scancode scancode)
功能:設置當前的功能鍵狀態
參數:modstate 功能鍵狀態,參見SDL_Keymod
返回值:
備註:
原型:
void SDL_SetModState(SDL_Keymod modstate)
功能:設置文本輸入區域
參數:
rect 輸入區域
返回值:
備註:
原型:
void SDL_SetTextInputRect(SDL_Rect* rect)
功能:開始輸入文本
參數:
返回值:
備註:
原型:
void SDL_StartTextInput(void)
功能:結束輸入文本
參數:
返回值:
備註:
原型:
void SDL_StopTextInput(void)
功能:創建一個顏色的光標
參數:
surface 光標圖像
hot_x,hot_y 光標熱點值
返回值:
成功返回 光標
失敗返回 NULL
原型;
SDL_Cursor* SDL_CreateColorCursor(SDL_Surface* surface,
int hot_x,
int hot_y)
功能:使用此函數來創建使用指定的位圖數據和掩碼的光標(以MSB格式)
參數:
data
對於光標的每個像素的顏色值
mask
對於光標的每個像素的掩碼值;
w
光標的寬度
ħ
光標的高度
hot_x
光標的左上角相對於實際的鼠標位置的X軸位置
hot_y
光標的左上角相對於實際的鼠標位置的Y軸位置
返回值:
成功返回一個新的
光標
失敗 NULL
原型;
SDL_Cursor* SDL_CreateCursor(const Uint8* data,
const Uint8* mask,
int w,
int h,
int hot_x,
int hot_y)
例子:
/* Stolen from the mailing list */
/* Creates a new mouse cursor from an XPM */


/* XPM */
static const char *arrow[] = {
/* width height num_colors chars_per_pixel */
" 32 32 3 1",
/* colors */
"X c #000000",
". c #ffffff",
" c None",
/* pixels */
"X ",
"XX ",
"X.X ",
"X..X ",
"X...X ",
"X....X ",
"X.....X ",
"X......X ",
"X.......X ",
"X........X ",
"X.....XXXXX ",
"X..X..X ",
"X.X X..X ",
"XX X..X ",
"X X..X ",
" X..X ",
" X..X ",
" X..X ",
" XX
",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
"0,0"
};
static SDL_Cursor *init_system_cursor(const char *image[])
{
int i, row, col;
Uint8 data[4*32];
Uint8 mask[4*32];
int hot_x, hot_y;
i = -1;
for ( row=0; row<32; ++row ) {
for ( col=0; col<32; ++col ) {
if ( col % 8 ) {
data[i] <<= 1;
mask[i] <<= 1;
} else {
++i;
data[i] = mask[i] = 0;
}
switch (image[4+row][col]) {
case 'X':
data[i] |= 0x01;
mask[i] |= 0x01;
break;
case '.':
mask[i] |= 0x01;
break;
case ' ':
break;
}
}
}
sscanf(image[4+row], "%d,%d", &hot_x, &hot_y);
return SDL_CreateCursor(data, mask, 32, 32, hot_x, hot_y);
}

功能:釋放一個鼠標指針
參數:
cursor 鼠標指針
返回值:
原型;
void SDL_FreeCursor(SDL_Cursor* cursor)
功能:獲取當前活動的鼠標指針
參數:
返回值:
成功 鼠標指針
失敗 NULL
原型;
SDL_Cursor* SDL_GetCursor(void)
功能:獲得當前有鼠標焦點的窗口。
參數:
返回值:
成功 窗口指針
失敗 NULL
原型;
SDL_Window* SDL_GetMouseFocus(void)
功能:獲取鼠標狀態
參數:
x,y 鼠標座標指針
返回值:
返回當前按鍵狀態的32位鍵位掩碼
原型;
Uint32 SDL_GetMouseState(int* x,
int* y)
例子:
SDL_PumpEvents();
if(SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1))
printf("Mouse Button 1(left) is pressed.");
功能:使用此功能來查詢相對鼠標模式是否開啓
參數:
返回值:
成功 SDL_TURE 
失敗 SDL_FALSE
原型;
SDL_bool SDL_GetRelativeMouseMode(void)
功能:使用此功能來檢索鼠標的相對狀態。
參數:x,y 鼠標座標指針
返回值:
返回當前按鍵狀態的32位鍵位掩碼
原型;
Uint32 SDL_GetRelativeMouseState(int* x,
int* y)
功能:設置當前活動的鼠標
參數:cursor 鼠標指針
返回值:
原型;
void SDL_SetCursor(SDL_Cursor* cursor)
功能:使用此功能來打開或關閉相對鼠標模式
參數:
enabled 
SDL_TURE 開啓 SDL_FALSE 關閉
返回值:
成功返回 0
失敗返回一個爲負的錯誤代碼
原型;
int SDL_SetRelativeMouseMode(SDL_bool enabled)
功能:設置光標是否顯示
參數:
1,顯示光標,0隱藏它,-1查詢當前狀態
返回值:
1 光標顯示
0 光標隱藏
原型;
int SDL_ShowCursor(int toggle)
功能:使用此功能可將鼠標移動到窗口內的指定位置
參數:
w 窗口指針
x,y 座標
返回值:
原型;
void SDL_WarpMouseInWindow(SDL_Window* window,
int x,
int y)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章