(2-2)ウィンドウに画像を出す
#include <SDL2/SDL.h>
int main()
{
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) < 0) {
// 初期化失敗エラー. 何かメッセージを表示させて終了させてください.
}
SDL_Window *win = SDL_CreateWindow("title", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 320, 240, 0);
SDL_Renderer *rndr = SDL_CreateRenderer(win, -1, 0);
SDL_Texture *txtr = SDL_CreateTexture(rndr, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, 320, 240);
uint32_t *q;
int linebyte;
SDL_LockTexture(txtr, 0, (void **) &q, &linebyte); // これでqとlinebyteを取得.
q[123 + 234 * linebyte / 4] = 0x123456; // ここで好きなだけ描画する.
SDL_UnlockTexture(txtr);
SDL_RenderCopy(rndr, txtr, 0, 0);
SDL_RenderPresent(rndr);
SDL_Delay(30 * 1000);
return 0;
}
- ウィンドウに画像を書き込むためには、SDL_LockTexture()で書き込み先を取得して、それで自由に好きなだけ書き込んで、一通り終わったらSDL_UnlockTexture()して、SDL_RenderCopy()してSDL_RenderPresent()すると実画面に反映されます。
- q[123 + 234 * linebyte / 4] = 0x123456; の意味するところは、座標(123, 234)のピクセルを#123456にするということです(#rrggbbです)。
- ということで、SDLで動画の1フレームを書くとしたら、SDL_LockTexture()で始まって、SDL_RenderPresent()で終わることになります。
- これだけ覚えれば、とりあえず自由に絵は描けるわけです。