スポンサーリンク

SDL2で画像を作成して線を一本引いてみる

諸事情によりSDLライブラリ。

導入

URL https://www.libsdl.org/download-2.0.php

ダウンロード SDL2-devel-2.0.18-VC.zip (Visual C++ 32/64-bit)

パス設定

include : SDL2-2.0.18\include

lib : SDL2-2.0.18\lib\x64

サンプルコード

ウィンドウに画像を表示するサンプルばかりだったので、画像を作成してファイルに保存するサンプルにした。

SDL_CreateRGBSurface と SDL_CreateSoftwareRenderer を使う。

// このマクロを定義しないとエントリポイントが SDL_main になる
#define SDL_MAIN_HANDLED
#include <SDL.h>

#pragma comment(lib,"SDL2.lib")

// 必要ファイル:
// SDL2.dll

int main(int argc, char* argv[])
{
  //////////////////////////////
  Uint32 rmask, gmask, bmask, amask;
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
  rmask = 0xff000000;
  gmask = 0x00ff0000;
  bmask = 0x0000ff00;
  amask = 0x000000ff;
#else 
  rmask = 0x000000ff;
  gmask = 0x0000ff00;
  bmask = 0x00ff0000;
  amask = 0xff000000;
#endif
  //////////////////////////////

  SDL_Surface* surf = SDL_CreateRGBSurface(
    0,
    256,
    256,
    32, rmask, gmask, bmask, amask);

  //■ レンダラ作成
  SDL_Renderer* render = SDL_CreateSoftwareRenderer(surf);

  // アルファブレンドの設定
  SDL_SetRenderDrawBlendMode(render, SDL_BLENDMODE_BLEND);

  //////////////////////////////
  // 黒でクリア
  SDL_SetRenderDrawColor(render, 0, 0, 0, 255);
  SDL_RenderClear(render);
  //////////////////////////////
  // 赤で直線
  SDL_SetRenderDrawColor(render, 255, 0, 0, 150);
  SDL_RenderDrawLine(render, 50, 20, 500, 200);
  //////////////////////////////
  // ファイルに保存
  SDL_SaveBMP(surf, "out.bmp");
  //////////////////////////////

  //■ レンダラ破棄
  SDL_DestroyRenderer(render);


  SDL_FreeSurface(surf);


  return 0;
}

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: