本文通过surface操作:
#include <SDL2/SDL.h>
#include <stdio.h>
SDL_Window* window = NULL;
SDL_Surface* surface = NULL;
#define WINDOW_WIDTH 1000
#define WINDOW_HEIGHT 800
void init()
{
SDL_Init(SDL_INIT_VIDEO);
window = SDL_CreateWindow("SDL",
100, // x
100, // y
WINDOW_WIDTH, // w
WINDOW_HEIGHT, // h
SDL_WINDOW_SHOWN);
surface = SDL_GetWindowSurface(window);
}
int main()
{
init();
//锁定surface
SDL_LockSurface(surface);
//生成一种颜色
Uint32 color = SDL_MapRGB(surface->format, 0xff, 0, 0);
//获取surface像素点集操作地址
Uint32* pixel = (Uint32*)surface->pixels;
int i;
//一个像素4个字节,要除以4
//for(i = 0; i < surface->pitch / 4 * 100; i++)
for(i = 100*640 ; i < 101*640;i++)
{
pixel[i] = color;
}
pixel[120*640+120] = color;
printf("i = %d\n",i);
SDL_UnlockSurface(surface);
//显示
SDL_UpdateWindowSurface(window);
SDL_Delay(5*1000);
SDL_FreeSurface(surface);
SDL_Quit();
}