我需要使用这个页面中的以下函数。 SDL_Surface结构被定义为:
typedef struct SDL_Surface {
Uint32 flags; /* Read-only */
SDL_PixelFormat *format; /* Read-only */
int w, h; /* Read-only */
Uint16 pitch; /* Read-only */
void *pixels; /* Read-write */
SDL_Rect clip_rect; /* Read-only */
int refcount; /* Read-mostly */
} SDL_Surface;
函数是:
void set_pixel(SDL_Surface *surface, int x, int y, Uint32 pixel)
{
Uint8 *target_pixel = (Uint8 *)surface->pixels + y * surface->pitch + x * 4;
*(Uint32 *)target_pixel = pixel;
}
我有一些疑问,可能是因为缺乏真实图像。
- 为什么需要将
surface->pitch
乘以y
,而将x
乘以4
? - 声明
target_pixel
为8位整数指针
,然后再将其转换为32位整数指针
的必要性是什么? set_pixel
函数返回后,target_pixel
如何保留pixel
值?
pitch
代表什么?并且surface->pixel
最初指向窗口的左上角吗? - noufal