Project

rb_sdl2

0.0
The project is in a healthy, maintained state
RbSDL2 treats the functions and pointers provided by SDL as Ruby objects.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
 Dependencies

Runtime

>= 1.15.0
 Project Readme

RbSDL2

RbSDL2 は SDL (Simple DirectMedia Layer) の機能を Ruby オブジェクトとして提供します。

SDL 2.0.16 移行を対象としています。この Gem には SDL は含まれていません。 利用する際は環境に合わせて SDL を用意してください。

Description

RbSDL2 は SDL の機能やポインターを Ruby オブジェクトとして扱います。 ポインター管理を RbSDL2 が行っているのでメモリー管理を気にせずに SDL の機能を使うことができます。 最低限のマネージ機能も用意しています。例えばコールバック関数を設定した場合はそのオブジェクトを保持します。 スコープを外れてもコアダンプすることはありません。

sdl2-bindings を基に構築していますので、 オブジェクトの仕様や性能が気に入らない場合は直接(そして全ての) SDL 関数を呼び出すこともできます。 各オブジェクトは外部からのポインターから作成することができます。 C で書いたライブラリとの部分的な連携に利用することもできます。

SDL の仕様や機能について知っている必要はありますが Ruby のコードを読めれば使えるようになっています。

Installation

$ gem install rb_sdl2

Usage

require 'rb_sdl2'

include RbSDL2

RbSDL2.load('SDL2 Library path') # SDL を読み込みます。必ず必要です。
RbSDL2.init # SDL を初期化します。

image = Surface.load("image.bmp") # 画像をメモリーに読み込みます。画像形式は BMP のみです。
window = Window.new("Title")
window.update { |s| s.blit(image) } # Window へ画像を描画します。

RbSDL2.loop do
  break if Event.quit? # ユーザがウィンドウを閉じたことを検出します。
  # キーボードの A キーを押したか調べます。押していればダイアログボックスを表示します。
  window.info_alert("Message") if Keyboard.key?("A")
  # マウスのボタン(種類問わず)を押したか調べます。押していればダイアログボックスを表示します。
  window.error_alert("Message from mouse") if Mouse.any_button?
  Timer.delay(33) # SDL のタイマーを使用して 33 ミリ秒間、停止します。
end
# 終了の際に SDL から得たポインターのことは考えなくてよい。 SDL_Quit() も不要。

License

Zlib