大林です。
たむらさんが書いたことに対して返事を書きます。

<20010214225107.33276.qmail / cm608.mail.goo.ne.jp>の記事において
tamra / mail.goo.ne.jpさんは書きました。


>> >>SDLのAPIに近いインターフェースともっと単純なインターフェースを作る。 
>> >>単純なほうのインタフェースはRubyで書いてもよいかもしれない。 
>> 
>> 『単純なほうの』とは Rubyから扱うという意味ですか ?
一例ですが、
rubyのスクリプト内で
srcRect=SDL::Rect.new(0,0,32,32)
dstRect=SDL::Rect.new(x,y,32,32)
SDL::blitSurface(image,srcRect,screen,dstRect)
と書くのを
screen.putSurface(image,x,y)
と書けるようにもする、というものです。
こういうのもあったほうが便利かなあ、と思います。

>> >>音を出すのはSDL_mixerを使う。 
>> 
>> pygame 同様、SDL_image/SDL_ttf/SDL_mixer(smpeg) をそれぞれ
>> 拡張ライブラリ化することを考えてました。 
それでよいと思います。

>> >>SDLのスレッドは使わない。SDL_AddTimer等に対するインタフェースも提供しない。 
>> 
>> Thread は Rubyにもあるので私もそうするつもりでした。 
>> # Game などの、Realtime 性を損なったりしないのかしら 
たいした問題にはならないだろうし、それが問題になるような物を作るなら
c/c++で作ったほうが良い、としておけば良いと思います。
それに、rubyの処理系そのものが(pthreadのような外部の)複数スレッドから
よびだされるようなことは考えていないと思います。

>> >>SDLだけでは線を引いたり拡大縮小をする関数がないので、これは他の 
>> >>ライブラリを使う。SGE と言うのが使えそうです。 
>> 
>> SGE 自体を良くしらないのですが(SDL mailing list などに名前は出てきて
>> いますね) 
>> 利用できる環境は、SDL同様たくさんのOSをサポートしてるのですか
公式にはlinuxとWindowsのみのようです。

>> あと、SDL_ttf があるとはいえ、日本語の表示の問題や利用コストが大きいので 
>> どうかなと思ってもいます。 

>> >>最後に、私のSDL拡張ライブラリの実装時に起きた問題について書きます。 
>> >> 
>> >>Linux上でSDLを普通にコンパイルしてインストールしたものを使って拡張ライブラリ 
>> >>を作ると、うまくうごかなくなります。 
>> >>具体的には、Rubyのスクリプト内でexitやraiseを使って実行を止めると、 
>> >>きちんと止まらないというものです。 
>> >> 
>> >>これはSDL内部でpthreadを使っていることが原因であるようです。 
>> >>SDLのconfigureのときに --disable-pthreads というフラグをつけると、 
>> >>この問題は生じないようです。 
>> 
>> この問題は、気づきませんでした。 
>> サンプルなどのコードを見ると、SDL_Init の後に、atexit(SDL_Quit) をやってることが 
>> 多いみたいですが、SDL_Quit のタイミングは、どうされたのですか ? 
今のところ、rubyのスクリプトに
at_exit{ SDL.quit; }
としてあります。

>> あと、出来ればライブラリを作るときより、利用するときに、拡張ライブラリ側
>> から明示的に pthread を使用しない設定に出来た方がいいですよね 
>> # もちろん、調べられましたよね ... 
SDL_Initを呼ぶときに、SDL_INIT_AUDIOやSDL_INIT_TIMERを
引数にいれなければ問題は生じません。このときにThreadが初期化されるようです。
それだと音を出せませんが。

以上
--
大林一平