SDLスレ
■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin
01/11/11 17:59ID:u0HMN7qCSDLについてのスレッドです。
最新情報、参考になるソース、質問等
とりあえず、本山
http://www.libsdl.org/
0382名前は開発中のものです。
04/03/24 23:18ID:vYURZF4R今VC5を使ってる人ってほとんどいないような希ガス。
だからそれだけの情報じゃぁなかなか答えようがないと思うよ。
とりあえず該当部分のコード晒してみるのはどう?
そーいうオレ自身ももっぱらMinGWなんでさっぱり分からんのだが。
0383名前は開発中のものです。
04/03/25 10:56ID:06E5ih+O想像ですが、cpuidの直後で引っ掛かってるんでないかと。
VC5にはcpuidがないとかいう噂を聞いた覚えがあります。
cpuid絡みならもしかすると、ソースの頭に
#define cpuid __asm _emit 0x0F __asm _emit 0xA2
を入れれば上手くいくかも。
自分はVC6で、今やってみたら1.2.7も普通にコンパイルできますな。
0384名前は開発中のものです。
04/04/05 08:17ID:/ekkDjoXwin32appを作るのに近い感覚で作れてなかなか良いですね。
ただ資料、特にdelphiのものは皆無といっても良いほど内のが玉に瑕。
今度入門ページとか作って見様かなぁ
0385381
04/04/07 01:48ID:Wn2bWE/gやっぱりコンパイラの問題かなぁ。
VC.netを購入する理由が別にできてしまったので、
それでコンパイルしてみることにします。
で、それでもダメだったら>>383さんのを参考にしてみまつ。
0386名前は開発中のものです。
04/04/13 00:18ID:R3klDjkdwaveをたくさん重ねて鳴らしたいのですが。
0387名前は開発中のものです。
04/04/13 01:35ID:ItZmwa9S> It supports 8 channels of 16 bit stereo audio, plus a single channel of music, ...
0388名前は開発中のものです。
04/04/13 23:06ID:R3klDjkd0389名前は開発中のものです。
04/04/13 23:45ID:n/5r7ovM>>387のは単なるdefault値だよ。
http://jcatki.no-ip.org/SDL_mixer/SDL_mixer.html#SEC22
に
The number of channels allocated.
Never fails...but a high number of channels can segfault if you run out of memory.
とある通り、メモリ(と演算速度もか?)の許す限りいくらでも取れるっぽ。
増えすぎてちゃんと鳴ってんのかどうかわからなかった。
まあ、16ぐらいは普通にいけるよ
0392名前は開発中のものです。
04/04/19 23:43ID:df6eSjfW表示してる画像を動かすと、やたらぶれて見えることってない?
静止してその場でアニメーションしてもぶれないんだけど、
画像全体を上下左右に動かすと途端にぶれて見えるみたいな。
でもCRTだと問題ないし、その液晶でだってゲーム全部ダメってこともなく……。
FPS落としてみたりして試行錯誤はしてるんだけど、うまくいかず。
世の中のゲームはどんな実装してんのか、誰か教えてくだされ……。
0393名前は開発中のものです。
04/04/20 09:47ID:Kz7PIZnRFPSなゲームだと余り目立たないけど、1/30秒位でオブジェクトを
動かすと2重にブレて見える事もある。
中途半端に遅くても駄目な例。
0394名前は開発中のものです。
04/04/21 09:16ID:GSi5k06lhttp://game6.2ch.net/test/read.cgi/game/1069793039/
とかも参考になるかも。
0395392
04/04/21 16:31ID:WKD5qBW8ありがd。やっぱ世の中安物はだめなのか……。
自分が使うぶんにはいいんだけど、
他人にプレイさせると選べないんだよね……。
0396名前は開発中のものです。
04/04/24 02:00ID:Z5qgN2Apデザイン一新しててビックリしたんだけど、
いつから変わってたんだろう…。
何でか知らんのだけど、リニューアル後は
サイトの HTML や画像まで CVS に入れるようになったみたいだね。
CVS コミット通知の ML 読んでてびっくりしたよ。
0398名前は開発中のものです。
04/05/12 07:37ID:+G0iEP7mssk試してみたけどあれはツライなぁと。
SDLのソース触ってIMEからなんとか動かしてるんですけど、
やっぱSDL_imeがほすぃ…。
0399名前は開発中のものです。
04/05/13 21:41ID:bDKw0/eZsdl-fan-jp で SDL で IME を直接使う、みたいなのが出てたね。
http://morihyphen.hp.infoseek.co.jp/prog/sdl-im.html
これ一個で X Window 系を一気にサポートできるけど
MacOS, Windows, Amiga OS 辺りがサポートできないね。
この XIM のものですら実践的じゃない部分も多いし、
実際やるとなると相当大変だな……
http://qas.sourceforge.jp/patches/
・ファイル開くのに失敗したら NULL を返すようにした。
これまではライブラリ内部でクラッシュしてたんだよ。信じられるかい?
・SDL_bdf みたいに SDL_Surface へ直接描画する関数を追加した。
・横幅を元に、文字列の中で描画できる byte 数を返す関数を追加。
文字列から横幅を取得することはできるんだけど、
それだと先に横幅が決まってる場合にスマートに自動改行の実装するのは難しいんだよね。
強制的に TTF ファイル内の埋め込みビットマップフォントが使用されてしまう問題は
Shaded や Blended の時だけ bitmap を使わないようにすればいい……と言いたいところだけど、
TTF_Size* を呼び出す時、Solid と Shaded, Blended との場合が区別できないから
互換性が失われてしまうんだよね。
TTF_Size*_{Solid|Shaded|Blended} ってのを新しく追加しようかなとも思ったんだけど、
結局互換性は保たれないからなあ。
オリジナルのコードを見るとよくわかるけど、
何と言うか、試行錯誤の爪あとがひどくて……
別のライブラリを作った方がいいのかなあ。
0402名前は開発中のものです。
04/05/30 22:14ID:XZwjpvJyパッチ作成おつー
パッチは役割毎に分けて,CVSバージョンに対して作って
直接 Sam に投げてあげると取り込まれやすいかもー
# Mix_LoadMUS_RW パッチも取り込まれてないのね…
# 今CVS見たら MikMod のみに対応した Mix_LoadMUS_RW の
# コードが入ってるっぽい…
0403名前は開発中のものです。
04/06/16 14:33ID:Ui6mhgG3Linuxではできるみたいなんだけど、WinでRubyの拡張ライブラリ
を作るやり方がさっぱりわからない…
0404名前は開発中のものです。
04/06/17 23:16ID:1bQx+Nnzサウンド用の汎用ライブラリって何かありますか?
0405名前は開発中のものです。
04/06/17 23:40ID:eN4Qw0jN感想キボンヌ
0406名前は開発中のものです。
04/06/18 03:56ID:Lm+5DsNESDL_mixerとSDL_soundあたりをまず上げてやれよ。
SDLとの組み合わせでは一番使用例が多いだろうに。
それで機能不足を感じたなら改めてOpenALあたりを調べてみるのが良い気がする。
0407名前は開発中のものです。
04/06/20 15:54ID:6tF2CK9bSDL使うには Ruby/SDL と RUDL という手があるね。
漏れ、一時期、複雑なものなら型宣言有り言語推進派だったけど、
経験積むにつれ、型宣言に大した意味ないと思った。
Rubyマンセー
0408名前は開発中のものです。
04/06/21 18:12ID:OvV70vE4俺はRuby/SDLをやって、やっぱりRubyは大規模なものには
向かないと実感したよ。
1番多いミスが、変数に予期しない値が入っちゃうということなんで。
あと、初期化されていないフィールドと配列のインデックス越えでnilを返すところね。
自動テストができないから、リファクタリングも危険が伴うし。
もしまたスクリプト言語でゲームを書く機会があったら、今度はPyGameでやってみたい。
OpenALは3D空間内で音が聞こえてるようにシミュレートするやつだから
ファイル読み込みとかはほとんどできないよ。
0409名前は開発中のものです。
04/06/22 00:54ID:BZgdUtKP> OpenALは3D空間内で音が聞こえてるようにシミュレートするやつだから
> ファイル読み込みとかはほとんどできないよ。
ということは、SDL_soundでファイル読み込み&デコードやって、
OpenALに渡すのって実は良さそうなのか?
0410名前は開発中のものです。
04/06/22 01:11ID:ITWJAyK6その程度の問題だと単にRubyに慣れていないだけだとおもわれ
大規模なものを作ろうとおもったらどんな言語でもそれなりの
経験と設計とテストが必要でしょ…
0411名前は開発中のものです。
04/06/24 01:02ID:Vimy071Tだな。インタプリンタならしょうがない。Pythonでも同じだろう。
0412名前は開発中のものです。
04/06/24 01:09ID:M2KZSJrL0413名前は開発中のものです。
04/06/24 01:10ID:M2KZSJrLしかし型あってもエラー起きるときは起こるし。
単にリファクタリングにともなうテスト作りに慣れてないだけかと
0414名前は開発中のものです。
04/06/24 01:17ID:x3Ts3VTh0415名前は開発中のものです。
04/06/24 01:25ID:M2KZSJrL0416名前は開発中のものです。
04/06/24 18:26ID:qm5ejIlDメッセージから原因もわかりやすいし。
>>412
RUDLってメンテナンス止まってない?
0417名前は開発中のものです。
04/06/25 11:00ID:owgO6tb5いやなんだけど…
SDL + GL の描画しか使ってなくても SDL_image, SDL_mixer, SDL_ttf, SGE
のDLLも付けて配布しないといけないんだよねぇ…?
0418名前は開発中のものです。
04/06/26 15:36ID:YpRH5ts9神経質になりすぎだ
0419名前は開発中のものです。
04/06/27 20:12ID:TlIkOaxmSDLは日本人が使うとどうかなっちゃうの?w
0420名前は開発中のものです。
04/06/28 01:10ID:QaShh7Zh0421名前は開発中のものです。
04/06/28 13:42ID:7p8HGt/8翻訳サイトは移転しただけ。
ttp://www.tacoworks.jp/software/SDLdoc-jp/
0422名前は開発中のものです。
04/07/01 21:15ID:nUzqGN14SDL推進してるWikiとかないの?
0423名前は開発中のものです。
04/07/02 15:48ID:z9cQVZSD今のところ無いっぽいね。
とりあえずはバラバラに存在する国内情報の
まとめページだけでも欲しいかな。
0424名前は開発中のものです。
04/07/03 23:04ID:7rPVx/6/SDLって大量の資料が必要なほど複雑なライブラリじゃないと思われ…
リファレンスマニュアルとチュートリアル以外でどんな資料が欲しいの?
0425名前は開発中のものです。
04/07/03 23:14ID:1w5sa/fHそれだけじゃ足りないってことなんだろうけど。
0426名前は開発中のものです。
04/07/04 05:22ID:dw9vgL9Y0427名前は開発中のものです。
04/07/04 08:41ID:ctIGerBfSDL_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:CEd3aHf1http://jcatki.no-ip.org/SDL_ttf/
http://jcatki.no-ip.org/SDL_net/
でもわかりにくいんだよなー。
特に SDL_ttf の場合、色んな描画方法に関して、
どう描画されるかではなくて重いだの軽いだの、そういうことばっかり書かれてたと思う。
0429名前は開発中のものです。
04/07/04 21:55ID:dw9vgL9Yhttp://gamdev.org/w/?%5B%5BSDL%5D%5D
0430名前は開発中のものです。
04/07/05 21:36ID:nSK/GKkyhttp://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ディストリビューション毎に、glibcやらlibstdc++やらのバージョンがバラバラだったり、
ディストリビューション標準パッケージSDL_mixerが対応フォーマットさっぱりだったりとか。
どうにかならんもんかな。
0432名前は開発中のものです。
04/07/07 01:08ID:W6JVsWwD0433名前は開発中のものです。
04/07/07 01:16ID:n/Oy7Dm9やっぱそんな感じで割切るしかないですか。
とすると、RH系だと、今ならFedora2に対応しておけば良いのかな。
0434名前は開発中のものです。
04/07/07 01:25ID:ixnokw2/0435名前は開発中のものです。
04/07/07 01:34ID:n/Oy7Dm9う〜ん、確かに。
けど、LGPLのをスタティックリンクするってことは、
アプリ側の.oを配布する必要があるのかな。
それと、libc,libm,libstdc++とかスタティックリンクするとデカそうってのも微妙な感じだ。
0436名前は開発中のものです。
04/07/07 16:05ID:Cr3igRfZスタティックリンクしたらアプリ側のソースコードを公開する必要がある.
Linuxでのバイナリ配布は
1) 各ディストリビューション毎にバイナリを作る
2) メジャーなディストリビューションだけ作ってあとはユーザにコンパイルさせる
3) 全部スタティックリンクしたのを一つだけ配布
のどれかじゃないかなぁ… あ…
4) バイナリと libSDL.so や libSDL_mixer.so を一緒に配布
(LD_LIBRARY_PATH を設定して起動するシェルスクリプトを同封)
ってのもありえるか…
0437名前は開発中のものです。
04/07/07 20:12ID:qEMx/JGKLGPLのはスタティックリンクしても公開しなくていいのでは。
0438431
04/07/07 22:19ID:TRH5OiZw・自分が普段使ってるディストリビューション用の実行ファイルと、
まともなSDL_mixerのrpmを用意する。
・それとは別に、アプリの.o(または、まとめて.aにするかも)とMakefileを用意する。
ぐらいにしておこうかと思います。
しかし、各ディストリビューション間のバイナリ互換性の低さは頭のイタイ問題ですな。
0439名前は開発中のものです。
04/07/08 00:01ID:nQ5A0rf+LGPL部分は差し替えれるようにしなきゃだめじゃなかった?
0440名前は開発中のものです。
04/07/08 00:55ID:0z9S7ZSR> LGPL部分は差し替えれるようにしなきゃだめじゃなかった?
その通り。だからアプリの.oを配布で正しいと思うんだけど。
アプリの.o + 差し替えたLGPLのライブラリ
で再構築可能だろ?
0441436
04/07/08 11:56ID:HbCYsiEEちょっと聞きたいんだけど…
オブジェクトファイルだけあったら差し替え可能として認められるのかな?
この時オブジェクトファイルのフォーマットとかは問題にならんのかしら?
あ… 配布したスタティックリンクされた実行可能ファイルの元に
なった.oさえあればOKってことかな?
0442名前は開発中のものです。
04/07/08 14:48ID:1+ItRMvEオブジェクトファイルのフォーマットは、gcc の吐くような極一般的なものなら全然問題無いと思うよ。
>>440 の言う通り、君が作ったソフトウェアのオブジェクトファイルさえ入ってれば大丈夫だから、それで合ってるね。
0443名前は開発中のものです。
04/07/10 20:51ID:21jpHlag誰か助けてください。
#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:JmED2rrl0445名前は開発中のものです。
04/07/10 22:45ID:MW3XWIRhdx, dy を初期化してないのはC的にいいとして、mouse を初期化してねーじゃねーか。
ググったらこことか引っかかったから見てみれ。
http://www.pl-berichte.de/work/sdl/sdl-teil2.html
0446445
04/07/10 22:47ID:MW3XWIRhってとこね。ってよく見たらドイツ語だ。すまん。でもソースは分かるよね。
0447名前は開発中のものです。
04/07/10 22:53ID:DRUUao5j0448名前は開発中のものです。
04/07/10 23:10ID:MW3XWIRh0449名無しさん@そうだ選挙に行こう
04/07/11 07:05ID:VqfcMOHHありがとうございます。
>>447
>>448
作りかけのソースを削ったのでおかしくなってしまいました。
0450名無しさん@そうだ選挙に行こう
04/07/11 09:59ID:E7W22GHh0451N速に書き込めません。
04/07/11 10:18ID:wvsVVX1k何とかしてください
0452名無しさん@そうだ選挙に行こう
04/07/11 12:11ID:/yFc1fy2そんなときはあれだよ。 あれ。
0453名前は開発中のものです。
04/07/12 00:37ID:A2nXW2Noみたいに 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 をオーバーロード
してるのに型変換してくれないんでしゅか。
0454453
04/07/12 00:39ID:A2nXW2No0455名前は開発中のものです。
04/07/12 01:05ID:1R+yHQE6> Kanji_PutText( ... , screen, ... ); // screen は CSDLSurface
Kanji_PutText( ... , screen(), ... );
じゃないかい?
0456453
04/07/12 01:29ID:A2nXW2Noscreen()とやると、"関数には評価されません" と言われてしまいます、、
それと453に間違いがもう一つ
> Kanji_PutText( ... , screen, ... ); // screen は CSDLSurface
screenは CSDLSurface* です
0457名前は開発中のものです。
04/07/12 09:21ID:d4JCqMcp> screenは CSDLSurface* です
じゃ、
Kanji_PutText( ... , (*screen)(), ... );
Kanji_PutText( ... , screen->operator(), ... );
のどっちかじゃない?
0458453
04/07/12 23:23ID:A2nXW2Noどうもお手数かけてしまってすみませんでした。
Kanji_PutText(..., screen->operator SDL_Surface*(), ...);
でコンパイルは通ったんですが、よく考えてみるとどうやらscreenがポインタ
であることが原因だったようで、
CSDLSurface screen; // ポインタにするのをやめた
...
Kanji_PutText(..., screen, ...);
みたいに、普通にクラスを渡せばちゃんと SDL_Surface* に変換してくれるんですね。
これってC++の基本ですか? 恥ずかしいかも。
でもなんか、クラスをポインタでなく保持するのはよろしくない、みたいな文章をどこかで
読んだ気がして、それが引っかかってなんか気が進まないです、、
0459名前は開発中のものです。
04/07/13 00:35ID:yFmAkR9z大体予想通りの結果?長文スマソ。
#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:P6ImUkzN0461名前は開発中のものです。
04/07/13 03:58ID:szTJAEHMポインタなら単純に参照を外すだけでいい
Kanji_PutText( ... , *screen, ... );
ただ、暗黙のキャストは怖いから、
楽しようと考えている程度なら、素直にGetterを作った方が良いと思う。
0462453
04/07/13 23:44ID:KSTvEm7j暗黙の型変換を故意に狙うのはよくないですね。それに、*screen で返って
くるのがポインタってのも直感的でないですし。結局
SDL_Surface* GetSurface() const { return surface; }
を加えました。
0463名前は開発中のものです。
04/07/21 22:14ID:yROlyeHQsurfaceって、オブジェクト毎に作って良いんだろうか?
今まで俗に言うスプライトみたいな扱い方してたんだが。
背景なら背景で、画像合成させて1つのsurfaceにするのが普通なんだろうか?
0464名前は開発中のものです。
04/07/22 01:54ID:OPZjuMp0とりあえず質問の意味がさっぱりわからん…
0465名前は開発中のものです。
04/07/22 12:31ID:sx+OGorQ0466名前は開発中のものです。
04/07/22 14:51ID:xASuzJAT0467名前は開発中のものです。
04/07/22 17:39ID:mpU5Xpvs0468名前は開発中のものです。
04/07/22 20:26ID:jpCxn5GA漏れも何を聞いとるのかよう判らんのだが取り敢えず、
喪前さんの考える「Surface を一つにまとめることの長所」を教えてくれんかいの。
察するに割とどっちでもいいような気がするんだが……。
0469名前は開発中のものです。
04/07/22 21:25ID:NOi9FMd0オーバーヘッドやメモリの断片化による効率低下などがあるのか?
ってところじゃないんですかね。
0470名前は開発中のものです。
04/07/22 21:27ID:mpU5Xpvs0471463
04/07/22 22:21ID:mBKaU+OVスクロールする背景部品3つを自分で合成したのと
そのままほっといて普通に処理させた方で試してみた。
結果、そのままほっといて普通に処理させたほうが早かった…
つまり、俺の書い処理の方がヘッポコでした。
メモリ使用量・動作速度でのメリットは全く無し、またsurfaceの数が
多すぎて判らなくなるなら、管理体制そのものを見直す方が良いっぽいです。
0472名前は開発中のものです。
04/07/22 22:42ID:xASuzJAT人間ダブルバッファをしたってこと?
0473名前は開発中のものです。
04/07/23 01:31ID:k28imbO0なるべく種類ごとぐらいにまとめておいた方がいんでないの
とSDL使ったこと無いやつが言ってみるテスト。
0474名前は開発中のものです。
04/07/26 13:45ID:cbiqvpsK0475名前は開発中のものです。
04/07/26 15:46ID:Z8i+sT7Z0476名前は開発中のものです。
04/07/29 02:24ID:kbrPCy1U標準で付いてくるサンプルも充実してて解かりやすいから、
入門ページをわざわざ作る人があまりいないのかな、とオモタ。
0477名前は開発中のものです。
04/08/02 11:44ID:uIIM7zIN落ちものゲーとか作るときって結構これがUIに関わってきますよね。
キーが押された時刻を覚えておいて、押されっぱなしのままX_秒経ったら
キーがまた押されたことにする、とかするんでしょうか。
SDL_EnableKeyRepeat()みたいなのもあったんですがうまく動いてくれないんですよね・・
0478名前は開発中のものです。
04/08/02 21:19ID:1kimllXS> キーが押された時刻を覚えておいて、押されっぱなしのままX_秒経ったら
> キーがまた押されたことにする、とかするんでしょうか。
うん。
0479名前は開発中のものです。
04/08/02 23:13ID:5gOr47iA自前で処理、に一票。
どっちみちキーボードとジョイスティックの両方で操作可能にしたいから、
自分で適当にラッパー書くのが楽だと思う。
0480名前は開発中のものです。
04/08/06 12:10ID:fX1V4XLW環境によっては激しく音質悪化するね…
だからといってバッファ多くすると遅延が・゚・(ノД`)・゚・。
0481名前は開発中のものです。
04/08/07 17:44ID:wc7qHVarそんなわけで、いっそSDL_sound + OpenALとかでシステム組んで
公開してくれたりすると嬉しいです(と、人まかせ)。
■ このスレッドは過去ログ倉庫に格納されています