トップページgamedev
987コメント396KB

SDLスレ

■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin01/11/11 17:59ID:u0HMN7qC
マルチプラットホームな汎用ゲームライブラリの
SDLについてのスレッドです。
最新情報、参考になるソース、質問等

とりあえず、本山
http://www.libsdl.org/
0399名前は開発中のものです。04/05/13 21:41ID:bDKw0/eZ
>>398
sdl-fan-jp で SDL で IME を直接使う、みたいなのが出てたね。
http://morihyphen.hp.infoseek.co.jp/prog/sdl-im.html
これ一個で X Window 系を一気にサポートできるけど
MacOS, Windows, Amiga OS 辺りがサポートできないね。
この XIM のものですら実践的じゃない部分も多いし、
実際やるとなると相当大変だな……
0400 ◆pm4Rr1N8T6 04/05/30 10:09ID:3EbvfWJ2
SDL_ttf の不満点を解消するパッチを作ってみた。
http://qas.sourceforge.jp/patches/

・ファイル開くのに失敗したら NULL を返すようにした。
 これまではライブラリ内部でクラッシュしてたんだよ。信じられるかい?
・SDL_bdf みたいに SDL_Surface へ直接描画する関数を追加した。
・横幅を元に、文字列の中で描画できる byte 数を返す関数を追加。
 文字列から横幅を取得することはできるんだけど、
 それだと先に横幅が決まってる場合にスマートに自動改行の実装するのは難しいんだよね。
0401 ◆pm4Rr1N8T6 04/05/30 10:17ID:3EbvfWJ2
Shaded や Blended を使う場合に
強制的に TTF ファイル内の埋め込みビットマップフォントが使用されてしまう問題は
Shaded や Blended の時だけ bitmap を使わないようにすればいい……と言いたいところだけど、
TTF_Size* を呼び出す時、Solid と Shaded, Blended との場合が区別できないから
互換性が失われてしまうんだよね。
TTF_Size*_{Solid|Shaded|Blended} ってのを新しく追加しようかなとも思ったんだけど、
結局互換性は保たれないからなあ。

オリジナルのコードを見るとよくわかるけど、
何と言うか、試行錯誤の爪あとがひどくて……
別のライブラリを作った方がいいのかなあ。
0402名前は開発中のものです。04/05/30 22:14ID:XZwjpvJy
>>400
パッチ作成おつー

パッチは役割毎に分けて,CVSバージョンに対して作って
直接 Sam に投げてあげると取り込まれやすいかもー

# Mix_LoadMUS_RW パッチも取り込まれてないのね…
# 今CVS見たら MikMod のみに対応した Mix_LoadMUS_RW の
# コードが入ってるっぽい…
0403名前は開発中のものです。04/06/16 14:33ID:Ui6mhgG3
Ruby/SDL on WinでSDL_kanjiを使えたという人います?
Linuxではできるみたいなんだけど、WinでRubyの拡張ライブラリ
を作るやり方がさっぱりわからない…
0404名前は開発中のものです。04/06/17 23:16ID:1bQx+Nnz
SDL使えばグラフィックは良いと思うんですが
サウンド用の汎用ライブラリって何かありますか?
0405名前は開発中のものです。04/06/17 23:40ID:eN4Qw0jN
OpenALだっけか。
感想キボンヌ
0406名前は開発中のものです。04/06/18 03:56ID:Lm+5DsNE
OpenALを上げる前に、
SDL_mixerとSDL_soundあたりをまず上げてやれよ。
SDLとの組み合わせでは一番使用例が多いだろうに。
それで機能不足を感じたなら改めてOpenALあたりを調べてみるのが良い気がする。
0407名前は開発中のものです。04/06/20 15:54ID:6tF2CK9b
>>403

SDL使うには Ruby/SDL と RUDL という手があるね。

漏れ、一時期、複雑なものなら型宣言有り言語推進派だったけど、
経験積むにつれ、型宣言に大した意味ないと思った。

Rubyマンセー
0408名前は開発中のものです。04/06/21 18:12ID:OvV70vE4
>>407
俺はRuby/SDLをやって、やっぱりRubyは大規模なものには
向かないと実感したよ。
1番多いミスが、変数に予期しない値が入っちゃうということなんで。
あと、初期化されていないフィールドと配列のインデックス越えでnilを返すところね。
自動テストができないから、リファクタリングも危険が伴うし。
もしまたスクリプト言語でゲームを書く機会があったら、今度はPyGameでやってみたい。

OpenALは3D空間内で音が聞こえてるようにシミュレートするやつだから
ファイル読み込みとかはほとんどできないよ。
0409名前は開発中のものです。04/06/22 00:54ID:BZgdUtKP
>>408
> OpenALは3D空間内で音が聞こえてるようにシミュレートするやつだから
> ファイル読み込みとかはほとんどできないよ。
ということは、SDL_soundでファイル読み込み&デコードやって、
OpenALに渡すのって実は良さそうなのか?
0410名前は開発中のものです。04/06/22 01:11ID:ITWJAyK6
>>408
その程度の問題だと単にRubyに慣れていないだけだとおもわれ

大規模なものを作ろうとおもったらどんな言語でもそれなりの
経験と設計とテストが必要でしょ…
0411名前は開発中のものです。04/06/24 01:02ID:Vimy071T
>>410
だな。インタプリンタならしょうがない。Pythonでも同じだろう。
0412名前は開発中のものです。04/06/24 01:09ID:M2KZSJrL
漏れが見た感じ、Ruby/SDL よりは RUDL のほうが完成度高いと感じた
0413名前は開発中のものです。04/06/24 01:10ID:M2KZSJrL
>>411

しかし型あってもエラー起きるときは起こるし。

単にリファクタリングにともなうテスト作りに慣れてないだけかと
0414名前は開発中のものです。04/06/24 01:17ID:x3Ts3VTh
布教なら余所でやってくれよ
0415名前は開発中のものです。04/06/24 01:25ID:M2KZSJrL
信者ではない
0416名前は開発中のものです。04/06/24 18:26ID:qm5ejIlD
でも、エラーであれ?と思うことはPythonの方がずっと少ないよ。
メッセージから原因もわかりやすいし。

>>412
RUDLってメンテナンス止まってない?
0417名前は開発中のものです。04/06/25 11:00ID:owgO6tb5
RUDLにしろRuby/SDLにしろ各機能がまとめてはいってるところが
いやなんだけど…

SDL + GL の描画しか使ってなくても SDL_image, SDL_mixer, SDL_ttf, SGE
のDLLも付けて配布しないといけないんだよねぇ…?
0418名前は開発中のものです。04/06/26 15:36ID:YpRH5ts9
>>417

神経質になりすぎだ
0419名前は開発中のものです。04/06/27 20:12ID:TlIkOaxm
翻訳サイトが消えてたり、さがさないでくださいと出てたり・・・
SDLは日本人が使うとどうかなっちゃうの?w
0420名前は開発中のものです。04/06/28 01:10ID:QaShh7Zh
お願い纏めて。そしたら頑張って何か作るから。
0421名前は開発中のものです。04/06/28 13:42ID:7p8HGt/8
>>419
翻訳サイトは移転しただけ。
ttp://www.tacoworks.jp/software/SDLdoc-jp/
0422名前は開発中のものです。04/07/01 21:15ID:nUzqGN14
資料が少ないな・・・
SDL推進してるWikiとかないの?
0423名前は開発中のものです。04/07/02 15:48ID:z9cQVZSD
>>422
今のところ無いっぽいね。
とりあえずはバラバラに存在する国内情報の
まとめページだけでも欲しいかな。
0424名前は開発中のものです。04/07/03 23:04ID:7rPVx/6/
>>422
SDLって大量の資料が必要なほど複雑なライブラリじゃないと思われ…
リファレンスマニュアルとチュートリアル以外でどんな資料が欲しいの?
0425名前は開発中のものです。04/07/03 23:14ID:1w5sa/fH
あのマニュアルめちゃめちゃ丁寧だよなぁ。
それだけじゃ足りないってことなんだろうけど。
0426名前は開発中のものです。04/07/04 05:22ID:dw9vgL9Y
SDL_imageとか拡張ライブラリはどこで仕様を見れるの?
0427名前は開発中のものです。04/07/04 08:41ID:ctIGerBf
>>426
SDL_image の場合 README に書いてある内容が全ての仕様だと思うけど…
ユーザが使うのは、
* SDL_Surface *IMG_Load(const char *file);
* SDL_Surface *IMG_Load_RW(SDL_RWops *src, int freesrc);
* SDL_Surface *IMG_LoadTyped_RW(SDL_RWops *src, int freesrc, char *type);
* SDL_Surface *IMG_ReadXPMFromArray(char **xpm);
くらいしかなくて、アプリケーションが使うのはほぼ一番目の関数だけ。

でも SDL_ttf とか SDL_net のドキュメントはもう少し欲しい気がするね。
0428名前は開発中のものです。04/07/04 14:50ID:CEd3aHf1
ライブラリ名と "Documentation" を同時に検索すると出てくるよ。
http://jcatki.no-ip.org/SDL_ttf/
http://jcatki.no-ip.org/SDL_net/
でもわかりにくいんだよなー。
特に SDL_ttf の場合、色んな描画方法に関して、
どう描画されるかではなくて重いだの軽いだの、そういうことばっかり書かれてたと思う。
0429名前は開発中のものです。04/07/04 21:55ID:dw9vgL9Y
解説してるわけじゃないけど、GameDevPukiWikiにSDLの項目はあるね
http://gamdev.org/w/?%5B%5BSDL%5D%5D
0430名前は開発中のものです。04/07/05 21:36ID:nSK/GKky
規制やっと解けたー。まぁ一応。

http://jcatki.no-ip.org/SDL_image/
http://jcatki.no-ip.org/SDL_mixer/

てか、ttp://jcatki.no-ip.org/から辿れば良いってことで。
0431名前は開発中のものです。04/07/07 01:04ID:n/Oy7Dm9
ところで、Linuxでバイナリ配布ってやりづらいような気がするのですが。
ディストリビューション毎に、glibcやらlibstdc++やらのバージョンがバラバラだったり、
ディストリビューション標準パッケージSDL_mixerが対応フォーマットさっぱりだったりとか。
どうにかならんもんかな。
0432名前は開発中のものです。04/07/07 01:08ID:W6JVsWwD
Redhatだけ対応しとけばいいよ
0433名前は開発中のものです。04/07/07 01:16ID:n/Oy7Dm9
>>432
やっぱそんな感じで割切るしかないですか。
とすると、RH系だと、今ならFedora2に対応しておけば良いのかな。
0434名前は開発中のものです。04/07/07 01:25ID:ixnokw2/
全部スタティックリンクしちゃえば
0435名前は開発中のものです。04/07/07 01:34ID:n/Oy7Dm9
>>434
う〜ん、確かに。
けど、LGPLのをスタティックリンクするってことは、
アプリ側の.oを配布する必要があるのかな。

それと、libc,libm,libstdc++とかスタティックリンクするとデカそうってのも微妙な感じだ。
0436名前は開発中のものです。04/07/07 16:05ID:Cr3igRfZ
>>435
スタティックリンクしたらアプリ側のソースコードを公開する必要がある.

Linuxでのバイナリ配布は
1) 各ディストリビューション毎にバイナリを作る
2) メジャーなディストリビューションだけ作ってあとはユーザにコンパイルさせる
3) 全部スタティックリンクしたのを一つだけ配布
のどれかじゃないかなぁ… あ…
4) バイナリと libSDL.so や libSDL_mixer.so を一緒に配布
(LD_LIBRARY_PATH を設定して起動するシェルスクリプトを同封)
ってのもありえるか…
0437名前は開発中のものです。04/07/07 20:12ID:qEMx/JGK
>>436
LGPLのはスタティックリンクしても公開しなくていいのでは。
043843104/07/07 22:19ID:TRH5OiZw
色々返答ありがとう。考えた結果、

・自分が普段使ってるディストリビューション用の実行ファイルと、
まともなSDL_mixerのrpmを用意する。
・それとは別に、アプリの.o(または、まとめて.aにするかも)とMakefileを用意する。

ぐらいにしておこうかと思います。
しかし、各ディストリビューション間のバイナリ互換性の低さは頭のイタイ問題ですな。
0439名前は開発中のものです。04/07/08 00:01ID:nQ5A0rf+
>>437
LGPL部分は差し替えれるようにしなきゃだめじゃなかった?
0440名前は開発中のものです。04/07/08 00:55ID:0z9S7ZSR
>>439
> LGPL部分は差し替えれるようにしなきゃだめじゃなかった?
その通り。だからアプリの.oを配布で正しいと思うんだけど。

アプリの.o + 差し替えたLGPLのライブラリ

で再構築可能だろ?
044143604/07/08 11:56ID:HbCYsiEE
LGPL部分を差し替え可能にする必要があるというのは当然として…

ちょっと聞きたいんだけど…
オブジェクトファイルだけあったら差し替え可能として認められるのかな?
この時オブジェクトファイルのフォーマットとかは問題にならんのかしら?
あ… 配布したスタティックリンクされた実行可能ファイルの元に
なった.oさえあればOKってことかな?
0442名前は開発中のものです。04/07/08 14:48ID:1+ItRMvE
>>441
オブジェクトファイルのフォーマットは、gcc の吐くような極一般的なものなら全然問題無いと思うよ。
>>440 の言う通り、君が作ったソフトウェアのオブジェクトファイルさえ入ってれば大丈夫だから、それで合ってるね。
0443名前は開発中のものです。04/07/10 20:51ID:21jpHlag
SDL-1.2.7+WinXP+VC+++.net2003で下のソースで落ちてしまいます。
誰か助けてください。
#include <SDL.h>
doubleax,ay;
int main(int argc, char** args) {
  SDL_Init(SDL_INIT_VIDEO);
SDL_Surface *screen;
screen = SDL_SetVideoMode(640, 480, 8, SDL_SWSURFACE);
  while(true) {
SDL_Event event;
  SDL_MouseMotionEvent mouse;
while(SDL_PollEvent(&event)) {
if(event.type==SDL_QUIT) {
return 0;
}
   if(event.type==SDL_MOUSEMOTION){
    ay += mouse.x;
    ax += mouse.y;
   }
  }
  SDL_Delay(10);
}
}
0444名前は開発中のものです。04/07/10 22:02ID:JmED2rrl
ax,ayがオーバーフローすんちゃうの?
0445名前は開発中のものです。04/07/10 22:45ID:MW3XWIRh
>>443
dx, dy を初期化してないのはC的にいいとして、mouse を初期化してねーじゃねーか。
ググったらこことか引っかかったから見てみれ。
http://www.pl-berichte.de/work/sdl/sdl-teil2.html
044644504/07/10 22:47ID:MW3XWIRh
「3. Input-Handling in der Praxis: Maus」
ってとこね。ってよく見たらドイツ語だ。すまん。でもソースは分かるよね。
0447名前は開発中のものです。04/07/10 22:53ID:DRUUao5j
終了する前にはSDL_Quitしてほしいと思います。
0448名前は開発中のものです。04/07/10 23:10ID:MW3XWIRh
あと SDL_Delay() が一回も呼ばれない気がするのは気のせいか?
0449名無しさん@そうだ選挙に行こう04/07/11 07:05ID:VqfcMOHH
>>455
ありがとうございます。
>>447
>>448
作りかけのソースを削ったのでおかしくなってしまいました。
0450名無しさん@そうだ選挙に行こう04/07/11 09:59ID:E7W22GHh
>455がどんな解決方法を示してくれるのか。気になって夜も眠れない。
0451N速に書き込めません。04/07/11 10:18ID:wvsVVX1k
N速に書き込めません。

何とかしてください
0452名無しさん@そうだ選挙に行こう04/07/11 12:11ID:/yFc1fy2
>>452
そんなときはあれだよ。 あれ。
0453名前は開発中のものです。04/07/12 00:37ID:A2nXW2No
SDL_Surfaceをクラス化してるんですが、例えば SDL_kanji の Kanji_PutText()
みたいに SDL_Surface* を引数に取る関数を呼ぶときに楽しようと思って、
    class CSDLSurface {
        ...
        operator SDL_Surface*() { return surface; }  // surface は SDL_Surface*
などとクラス内に書いたんです。でも
    Kanji_PutText( ... , screen, ... );  // screen は CSDLSurface
とやっても、VC.NETに
    引数を 'CSDLSurface *' から 'SDL_Surface *' に変換できません
と怒られるし、(SDL_Surface*)screen とやってキャストして渡しても、クラスのアドレスが
そのまんま渡ってるみたいでうまくいきません。そもそもなんで operator をオーバーロード
してるのに型変換してくれないんでしゅか。
045445304/07/12 00:39ID:A2nXW2No
s/しゅか/しょうか/; # ○| ̄|_
0455名前は開発中のものです。04/07/12 01:05ID:1R+yHQE6
>>453
>     Kanji_PutText( ... , screen, ... );  // screen は CSDLSurface
Kanji_PutText( ... , screen(), ... );
じゃないかい?
045645304/07/12 01:29ID:A2nXW2No
>>455
screen()とやると、"関数には評価されません" と言われてしまいます、、
それと453に間違いがもう一つ
>    Kanji_PutText( ... , screen, ... );  // screen は CSDLSurface
screenは CSDLSurface* です
0457名前は開発中のものです。04/07/12 09:21ID:d4JCqMcp
>>456
> screenは CSDLSurface* です
じゃ、
Kanji_PutText( ... , (*screen)(), ... );
Kanji_PutText( ... , screen->operator(), ... );
のどっちかじゃない?
045845304/07/12 23:23ID:A2nXW2No
>>457
どうもお手数かけてしまってすみませんでした。
    Kanji_PutText(..., screen->operator SDL_Surface*(), ...);
でコンパイルは通ったんですが、よく考えてみるとどうやらscreenがポインタ
であることが原因だったようで、
    CSDLSurface screen; // ポインタにするのをやめた
    ...
    Kanji_PutText(..., screen, ...);
みたいに、普通にクラスを渡せばちゃんと SDL_Surface* に変換してくれるんですね。
これってC++の基本ですか? 恥ずかしいかも。

でもなんか、クラスをポインタでなく保持するのはよろしくない、みたいな文章をどこかで
読んだ気がして、それが引っかかってなんか気が進まないです、、
0459名前は開発中のものです。04/07/13 00:35ID:yFmAkR9z
gcc version 3.2 (mingw special 20020817-1)で実験してみた。
大体予想通りの結果?長文スマソ。

#include <iostream>
using namespace std;

class Foo {};
class Bar {
Foo foo;
public:
operator Foo*() {return &(this->foo);}
};

void hoge(Foo* p_foo_)
{
cout << p_foo_ << endl;
}
int main(int argc,char* argv[])
{
Bar bar;
Bar* p_bar = &bar;

hoge(bar);
// hoge(bar()); // no match for call to `(Bar) ()'
// hoge(p_bar); // cannot convert `Bar*' to `Foo*' for argument `1' to `void hoge(Foo*)'
hoge(*p_bar);
// hoge((*p_bar)()); // no match for call to `(Bar) ()'
// hoge(p_bar->operator()); // `class Bar' has no member named `operator()'

return 0;
}
0460名前は開発中のものです。04/07/13 03:32ID:P6ImUkzN
foo* operator() と operator foo*() は違う
0461名前は開発中のものです。04/07/13 03:58ID:szTJAEHM
>453
ポインタなら単純に参照を外すだけでいい
Kanji_PutText( ... , *screen, ... );

ただ、暗黙のキャストは怖いから、
楽しようと考えている程度なら、素直にGetterを作った方が良いと思う。
046245304/07/13 23:44ID:KSTvEm7j
ポインタの参照先を渡したらうまくキャストしてくれました。でも、仰るとおり
暗黙の型変換を故意に狙うのはよくないですね。それに、*screen で返って
くるのがポインタってのも直感的でないですし。結局
    SDL_Surface* GetSurface() const { return surface; }
を加えました。
0463名前は開発中のものです。04/07/21 22:14ID:yROlyeHQ
概念の質問になって申し訳無いんだが

surfaceって、オブジェクト毎に作って良いんだろうか?
今まで俗に言うスプライトみたいな扱い方してたんだが。

背景なら背景で、画像合成させて1つのsurfaceにするのが普通なんだろうか?
0464名前は開発中のものです。04/07/22 01:54ID:OPZjuMp0
>>463

とりあえず質問の意味がさっぱりわからん…
0465名前は開発中のものです。04/07/22 12:31ID:sx+OGorQ
分からないなら黙っててください。
0466名前は開発中のものです。04/07/22 14:51ID:xASuzJAT
煽りキター
0467名前は開発中のものです。04/07/22 17:39ID:mpU5Xpvs
普通かどうかはベンチマークで決めればいい
0468名前は開発中のものです。04/07/22 20:26ID:jpCxn5GA
>>463
漏れも何を聞いとるのかよう判らんのだが取り敢えず、
喪前さんの考える「Surface を一つにまとめることの長所」を教えてくれんかいの。

察するに割とどっちでもいいような気がするんだが……。
0469名前は開発中のものです。04/07/22 21:25ID:NOi9FMd0
>>463ではないが、複数の領域をバラバラに確保/解放することによる
オーバーヘッドやメモリの断片化による効率低下などがあるのか?
ってところじゃないんですかね。
0470名前は開発中のものです。04/07/22 21:27ID:mpU5Xpvs
Photoshopでレイヤーを統合するかしないかくらいの意味合いだろ
047146304/07/22 22:21ID:mBKaU+OV
試してみますた。

スクロールする背景部品3つを自分で合成したのと
そのままほっといて普通に処理させた方で試してみた。

結果、そのままほっといて普通に処理させたほうが早かった…
つまり、俺の書い処理の方がヘッポコでした。

メモリ使用量・動作速度でのメリットは全く無し、またsurfaceの数が
多すぎて判らなくなるなら、管理体制そのものを見直す方が良いっぽいです。
0472名前は開発中のものです。04/07/22 22:42ID:xASuzJAT
>スクロールする背景部品3つを自分で合成したのと
人間ダブルバッファをしたってこと?
0473名前は開発中のものです。04/07/23 01:31ID:k28imbO0
サーフェイス毎にヘッダとか余計な情報が入るだろうから
なるべく種類ごとぐらいにまとめておいた方がいんでないの
とSDL使ったこと無いやつが言ってみるテスト。
0474名前は開発中のものです。04/07/26 13:45ID:cbiqvpsK
SDLの入門のHPない?
0475名前は開発中のものです。04/07/26 15:46ID:Z8i+sT7Z
サンプルを物凄い勢いで弄るのがいいらしいよ。
0476名前は開発中のものです。04/07/29 02:24ID:kbrPCy1U
結局SDLは元々使うのがそんなに難しいライブラリじゃないし、
標準で付いてくるサンプルも充実してて解かりやすいから、
入門ページをわざわざ作る人があまりいないのかな、とオモタ。
0477名前は開発中のものです。04/08/02 11:44ID:uIIM7zIN
みなさんはキーリピートってどう実装してますか?
落ちものゲーとか作るときって結構これがUIに関わってきますよね。
キーが押された時刻を覚えておいて、押されっぱなしのままX_秒経ったら
キーがまた押されたことにする、とかするんでしょうか。
SDL_EnableKeyRepeat()みたいなのもあったんですがうまく動いてくれないんですよね・・
0478名前は開発中のものです。04/08/02 21:19ID:1kimllXS
>>477
> キーが押された時刻を覚えておいて、押されっぱなしのままX_秒経ったら
> キーがまた押されたことにする、とかするんでしょうか。
うん。
0479名前は開発中のものです。04/08/02 23:13ID:5gOr47iA
>>477
自前で処理、に一票。
どっちみちキーボードとジョイスティックの両方で操作可能にしたいから、
自分で適当にラッパー書くのが楽だと思う。
0480名前は開発中のものです。04/08/06 12:10ID:fX1V4XLW
SDL_mixerのMix_OpenAudioのバッファ値少なくすると
環境によっては激しく音質悪化するね…
だからといってバッファ多くすると遅延が・゚・(ノД`)・゚・。
0481名前は開発中のものです。04/08/07 17:44ID:wc7qHVar
SDL_mixerが性能面でイマイチなのは、わりと周知の事実なのかも。

そんなわけで、いっそSDL_sound + OpenALとかでシステム組んで
公開してくれたりすると嬉しいです(と、人まかせ)。
0482名前は開発中のものです。04/08/07 18:00ID:sO/xVe9h
SDL_sound 2.0 の草案が出たらしいね。
http://zinnia.dyndns.org/~zinnia/sdl/watch2/?date=20040730#p02
草案の本体がどこにあるのかちょっとわからなかったんだけど、
やるとしたら2.0の様子を見た方がいいんじゃないかな。
0483名前は開発中のものです。04/08/08 12:36ID:n15LlEy5
>>482
まだ草案段階なんだったら、待つ必要ないんじゃない?
これから、

細部の詰め -> α -> β -> リリース

と行くと何年後になるやら。
0484名前は開発中のものです。04/08/09 19:20ID:lqi/7vlX
Ruby/SDLでメモリ上にある任意のフォーマットの画像データ表示するにはどうしたらいい?
Rubyで生成した画像データをGUIに表示したいんだけどdraw〜なメソッドで描いていたらやたら時間がかかりそうだし
Surface.loadはファイルしかロードできないし…
0485名前は開発中のものです。04/08/09 22:02ID:suCCLB3h
>>484
Ruby/SDL はよくしらないけど、
SDL_CreateRGBSurfaceFrom に相当するメソッドは存在しないの?
SDL_CreateRGBSurface は SDL::Surface.new に置き換わっているようだけど。
048648404/08/09 23:55ID:lqi/7vlX
>>485
>SDL_CreateRGBSurfaceFrom に相当するメソッドは存在しないの?
う〜ん…displayFormatあたりだろうか…
実験してみます。
048748404/08/10 16:19ID:ojobLfTU
>displayFormat
チュートリアルにサンプルがありました。どうやらサーフィス→サーフィスなメソッドのようです。
う〜ん…1ピクセルずつ書いていくしかないのか…_| ̄|○
0488名前は開発中のものです。04/08/10 19:03ID:og4arkOY
RubyだとBlitSurface が使えないってこと?
0489名前は開発中のものです。04/08/11 17:50ID:DHS7JU0v
>>488
使えるよ。
0490名前は開発中のものです。04/08/11 18:10ID:fjnBF2CC
>>484
Ruby/SDL のソースをざっと見てみたが、SDL_CreateRGBSurfaceFrom は無いようだな。
処理時間云々を気にするなら Ruby 以外も検討してみるといいかも知れん。

>>488
SDL_BlitSurface はあるが、引数に Surface をとるからな。
>>484 の場合手元にあるのはメモリ上のデータだから、それを Surface にする手段が欲しいんじゃないか?
0491名前は開発中のものです。04/08/11 23:45ID:uIr8FGgs
基礎的な質問なんですが、SDL使って作ったアプリってSDL.DLLとか必要になると思うんだけど、同梱配布していいものなの?
同人とかで売っても大丈夫なのですか?
0492名前は開発中のものです。04/08/12 01:11ID:1Ox6RoRS
>>491
動的リンクをして使うんだよね?
それなら、SDL.DLLのソースの入手方法さえ用意すればOK。
具体的には、そのソースを同梱するとか、本家のサイトのアドレスを説明書に入れとくとか。

LGPLライセンスについて、調べてみるべし。
0493名前は開発中のものです。04/08/12 03:39ID:GXLAlDtL
>>491
俺は実際同人で売ってる。
で、CDの中にSDL.dllのバイナリの他に
SDL-1.2.7.tar.gz
LGPL
を入れてある。
0494名前は開発中のものです。04/08/12 21:36ID:U24wpCkA
ほっしゅ
049549104/08/12 23:53ID:wAr6hdR2
SDL.DLLってファイルのまま使うことを動的リンクって言うんですよね。
動的リンクで使う予定です。

入手方法もしくはソースを同梱すればOKなんですね。勉強になりました。
LGPLがいまいち理解できなくて、いつまでも踏み出せずにいました。
ありがとうございました。

実際やろうとしていた事をズバリやっている493氏のような人物も居て励みになります。
0496名前は開発中のものです。04/08/17 01:08ID:2NQFsJZQ
AllegroをMingw(+MSYS)上でビルドしてサンプルを眺めている所なんだけど、
これ日本語入力はどうすればよいのだろう?
まだalfontは導入していないがデフォルトで日本語の表示は可能だし、
guiクラスに入力用のtextboxが用意されているようだが日本語は無理だ。
SDLは一応sdlskkなぞあるようだが。

Gtk+やTkからテキストウィジェットだけ拝借してくるしかないのかな。
0497名前は開発中のものです。04/08/17 02:39ID:NkMI/CJf
>>496
つーか何故SDLのスレでAllegroの質問をしますか。
0498名前は開発中のものです。04/08/17 21:22ID:Mr02eSkK
Ruby/SDLのSDL.transformってバグ持ちか?
拡大したときに下と右が削れる。
俺だけ?
■ このスレッドは過去ログ倉庫に格納されています