SDL_Renderer * SDL_CreateRenderer(SDL_Window *window, const char *name);
| SDL_Window * | window | レンダリングを表示するウィンドウ |
| const char * | name | 初期化するレンダリングドライバの名前. NULLのときSDLが選択する |
特定のレンダラを使用したいならば, ここで名前を指定することができる. 利用できるレンダラの一覧はSDL_GetRenderDriver()で得られる. インデックス番号は0からSDL_GetNumRenderDrivers()-1の範囲である. 特定のレンダラが必要ない場合は, NULLを指定するとSDLがユーザのシステムで利用できるものの中から最もよいものを選択する.
nameがコンマで区切られた一覧の場合, SDLはそれぞれの名前を一覧の順に1つが成功するか全て失敗するまで試す.
デフォルトではレンダリングサイズはウィンドウのピクセル数のサイズと同じだが, SDL_SetRenderLogicalPresentation()で論理サイズと拡大縮小の設定ができる.
この関数を呼べるのはメインスレッドのみである.
#include <SDL3/SDL.h>
#include <SDL3/SDL_main.h>
int main(int argc, char *argv[])
{
SDL_Window *win = NULL;
SDL_Renderer *renderer = NULL;
SDL_Texture *bitmapTex = NULL;
SDL_Surface *bitmapSurface = NULL;
int width = 320, height = 240;
bool loopShouldStop = false;
SDL_Init(SDL_INIT_VIDEO);
win = SDL_CreateWindow("Hello World", width, height, 0);
renderer = SDL_CreateRenderer(win, NULL);
bitmapSurface = SDL_LoadBMP("img/hello.bmp");
bitmapTex = SDL_CreateTextureFromSurface(renderer, bitmapSurface);
SDL_DestroySurface(bitmapSurface);
while (!loopShouldStop)
{
SDL_Event event;
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_EVENT_QUIT:
loopShouldStop = true;
break;
}
}
SDL_RenderClear(renderer);
SDL_RenderTexture(renderer, bitmapTex, NULL, NULL);
SDL_RenderPresent(renderer);
}
SDL_DestroyTexture(bitmapTex);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(win);
SDL_Quit();
return 0;
}