#include struct ARGB { Uint8 b, g, r, a; }; int main(int argc, char *argv[]) { SDL_Init(SDL_INIT_EVERYTHING); SDL_Window *w = SDL_CreateWindow("pixels", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN); SDL_Renderer *r = SDL_CreateRenderer(w, -1, 0); SDL_RenderSetLogicalSize(r, 320, 240); SDL_Texture *t = SDL_CreateTexture(r, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, 320, 240); ARGB *pixels; int pitch; SDL_Event sdlEvent; bool exit = false; while (!exit) { while (SDL_PollEvent(&sdlEvent)) { if (sdlEvent.type == SDL_QUIT) { exit = true; break; } } SDL_LockTexture(t, nullptr, (void **)&pixels, &pitch); for (int i = 0; i < 76800; ++i) { pixels[i].b = rand() % 256; pixels[i].g = rand() % 256; pixels[i].r = rand() % 256; pixels[i].a = 255; } SDL_UnlockTexture(t); SDL_RenderCopy(r, t, nullptr, nullptr); SDL_RenderPresent(r); } }