レンダラの作成と破棄
SDLでレンダラの作成と破棄をするには、「SDL_CreateRenderer関数」と「SDL_DestroyRenderer関数」を使用します。
SDL_CreateRenderer関数
レンダラを作成します。
宣言
SDL_Renderer* SDL_CreateRenderer( SDL_Window* window, int index, Uint32 flags );
引数
window | ウィンドウのアドレスです。 |
index | 初期化するレンダリングドライバの番号です。-1 を指定すると、引数のflags に対応する最初のドライバを初期化します。 |
flags | レンダラに求める機能を表す各フラグの論理和です。この引数へ指定した値の機能を持つレンダラを作成します。 各フラグは SDL_RendererFlags 型で定義されています。 |
戻り値
作成に成功すると「レンダラのアドレス」を返し、失敗すると「NULL
」を返します。
SDL_DestroyRenderer関数
レンダラを破棄します。
宣言
void SDL_DestroyRenderer( SDL_Renderer* renderer );
引数
renderer | レンダラのアドレスです。 |
サンプルプログラム
#include <SDL.h>
SDL_Window* g_window = nullptr;
SDL_Renderer* g_renderer = nullptr;
bool Initialize();
void Finalize();
int main( int argc, char* argv[] )
{
if ( !Initialize() )
{
Finalize();
return -1;
}
// レンダラを使用した処理
Finalize();
return 0;
}
bool Initialize()
{
if ( SDL_Init( SDL_INIT_VIDEO ) != 0 )
{
SDL_Log( u8"SDLの初期化処理に失敗しました。エラーメッセージ: %s", SDL_GetError() );
return false;
}
g_window = SDL_CreateWindow(
u8"サンプル",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
1280,
720,
0
);
if ( g_window == nullptr )
{
SDL_Log( u8"ウィンドウの作成に失敗しました。エラーメッセージ: %s", SDL_GetError() );
return false;
}
g_renderer = SDL_CreateRenderer(
g_window,
-1,
SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC
);
if ( g_renderer == nullptr )
{
SDL_Log( u8"レンダラの作成に失敗しました。エラーメッセージ: %s", SDL_GetError() );
return false;
}
return true;
}
void Finalize()
{
if ( g_renderer != nullptr ) SDL_DestroyRenderer( g_renderer );
if ( g_window != nullptr ) SDL_DestroyWindow( g_window );
SDL_Quit();
}