画像を読み込んでウィンドウに描画する
hello.bmpを用意してください。今回の例ですと横640、縦480のサイズで作成すると綺麗に描画します。
ビットマップ形式以外を読み込むには、拡張の画像ライブラリ(SDL2_image)を使用する必要があります。
基本的な処理の流れは
1. 初期化
2. ウィンドウの生成
3. レンダラーの生成
4. 描画するファイルを読み込んでサーフェイスにする
5. サーファイスからテクスチャを生成する
6. 描画する
7. 終了処理
※ エラーが発生した場合は終了処理、リソースの解放などの処理が必要です。
#include <iostream>
#include <SDL.h>
class GMAIN {
public:
int initSDL();
int createWindow();
void finSDL();
/**
* メイン処理
*/
void run() {
initSDL();
createWindow();
// 画像を読み込んでテクスチャにする
SDL_Surface* hello = SDL_LoadBMP("hello.bmp");
tex = SDL_CreateTextureFromSurface(renderer, hello);
SDL_FreeSurface(hello);
// 描画する
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, tex, NULL, NULL);
SDL_RenderPresent(renderer);
// 3秒ウェイトする
SDL_Delay(3000);
finSDL();
}
private:
SDL_Window* window;
SDL_Renderer* renderer;
SDL_Texture* tex;
};
/**
* 初期化
*/
int GMAIN::initSDL() {
// 初期化
if (SDL_Init(SDL_INIT_VIDEO) != NULL) {
// error
SDL_Quit();
return 1;
}
return 0;
}
/**
* Window と Rendererを生成
*/
int GMAIN::createWindow() {
// Create window
window = SDL_CreateWindow(
u8"ハローワールド",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
640, 480, 0
);
if (window == NULL) {
return 1;
}
// Create renderer
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
if (renderer == NULL) {
std::cout << "CreateRender Error : " << SDL_GetError() << std::endl;
return 1;
}
return 0;
}
/**
* 終了処理
*/
void GMAIN::finSDL() {
SDL_DestroyTexture(tex);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
}
int main(int argc, char** argv) {
GMAIN().run();
return 0;
}


コメント
エラーしか出ない…
亀レスで申し訳ないです。
どのようなエラーが出たか、とっかかりだけでも今後の為に教えてもらえると
助かります。