#include "SDL.h"
int SDL_LockSurface(SDL_Surface *surface);
SDL_LockSurface為直接訪問像素而鎖定一個平面。在調用SDL_LockSurface和SDL_UnlockSurface期間,你可以使用存儲于surface->format的像素格式來讀寫surface->pixels。一旦你訪問完平面,你應該使用SDL_UnlockSurface來釋放它。
並非所有平面都要鎖定。若SDL_MUSTLOCK(surface)的值為0,則你可以在任何時候讀寫平面,並且平面的像素格式不會改變。
在鎖定與解除鎖定期間,不應該調用操作系統調用或庫調用。這是由于此期間關鍵的系統鎖定可能會延誤。
值得注意的是,自從SDL 1.1.8之後,平面鎖定是遞歸的。這意味著,你可以多次鎖定同一個平面,但每次鎖定都必須有與之對應的解除鎖定。
. . SDL_LockSurface( surface ); . /* 鎖定平面 */ /* 在這裡對平面進行直接的像素訪問 */ . SDL_LockSurface( surface ); . /* 對平面作更多直接的像素訪問 */ . SDL_UnlockSurface( surface ); /* 平面尚被鎖定 */ /* 注意:小于1.1.8的版本在此階段不再被鎖定 */ . SDL_UnlockSurface( surface ); /* 此時才算解除鎖定 */ . .
若能鎖定平面,則SDL_LockSurface返回0;否則,返回-1。
2010年2月17日