SDLスレ
■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin
01/11/11 17:59ID:u0HMN7qCSDLについてのスレッドです。
最新情報、参考になるソース、質問等
とりあえず、本山
http://www.libsdl.org/
0413名前は開発中のものです。
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とかでシステム組んで
公開してくれたりすると嬉しいです(と、人まかせ)。
0482名前は開発中のものです。
04/08/07 18:00ID:sO/xVe9hhttp://zinnia.dyndns.org/~zinnia/sdl/watch2/?date=20040730#p02
草案の本体がどこにあるのかちょっとわからなかったんだけど、
やるとしたら2.0の様子を見た方がいいんじゃないかな。
0483名前は開発中のものです。
04/08/08 12:36ID:n15LlEy5まだ草案段階なんだったら、待つ必要ないんじゃない?
これから、
細部の詰め -> α -> β -> リリース
と行くと何年後になるやら。
0484名前は開発中のものです。
04/08/09 19:20ID:lqi/7vlXRubyで生成した画像データをGUIに表示したいんだけどdraw〜なメソッドで描いていたらやたら時間がかかりそうだし
Surface.loadはファイルしかロードできないし…
0485名前は開発中のものです。
04/08/09 22:02ID:suCCLB3hRuby/SDL はよくしらないけど、
SDL_CreateRGBSurfaceFrom に相当するメソッドは存在しないの?
SDL_CreateRGBSurface は SDL::Surface.new に置き換わっているようだけど。
0486484
04/08/09 23:55ID:lqi/7vlX>SDL_CreateRGBSurfaceFrom に相当するメソッドは存在しないの?
う〜ん…displayFormatあたりだろうか…
実験してみます。
0487484
04/08/10 16:19ID:ojobLfTUチュートリアルにサンプルがありました。どうやらサーフィス→サーフィスなメソッドのようです。
う〜ん…1ピクセルずつ書いていくしかないのか…_| ̄|○
0488名前は開発中のものです。
04/08/10 19:03ID:og4arkOY0489名前は開発中のものです。
04/08/11 17:50ID:DHS7JU0v使えるよ。
0490名前は開発中のものです。
04/08/11 18:10ID:fjnBF2CCRuby/SDL のソースをざっと見てみたが、SDL_CreateRGBSurfaceFrom は無いようだな。
処理時間云々を気にするなら Ruby 以外も検討してみるといいかも知れん。
>>488
SDL_BlitSurface はあるが、引数に Surface をとるからな。
>>484 の場合手元にあるのはメモリ上のデータだから、それを Surface にする手段が欲しいんじゃないか?
0491名前は開発中のものです。
04/08/11 23:45ID:uIr8FGgs同人とかで売っても大丈夫なのですか?
0492名前は開発中のものです。
04/08/12 01:11ID:1Ox6RoRS動的リンクをして使うんだよね?
それなら、SDL.DLLのソースの入手方法さえ用意すればOK。
具体的には、そのソースを同梱するとか、本家のサイトのアドレスを説明書に入れとくとか。
LGPLライセンスについて、調べてみるべし。
0493名前は開発中のものです。
04/08/12 03:39ID:GXLAlDtL俺は実際同人で売ってる。
で、CDの中にSDL.dllのバイナリの他に
SDL-1.2.7.tar.gz
LGPL
を入れてある。
0494名前は開発中のものです。
04/08/12 21:36ID:U24wpCkA0495491
04/08/12 23:53ID:wAr6hdR2動的リンクで使う予定です。
入手方法もしくはソースを同梱すればOKなんですね。勉強になりました。
LGPLがいまいち理解できなくて、いつまでも踏み出せずにいました。
ありがとうございました。
実際やろうとしていた事をズバリやっている493氏のような人物も居て励みになります。
0496名前は開発中のものです。
04/08/17 01:08ID:2NQFsJZQこれ日本語入力はどうすればよいのだろう?
まだalfontは導入していないがデフォルトで日本語の表示は可能だし、
guiクラスに入力用のtextboxが用意されているようだが日本語は無理だ。
SDLは一応sdlskkなぞあるようだが。
Gtk+やTkからテキストウィジェットだけ拝借してくるしかないのかな。
0497名前は開発中のものです。
04/08/17 02:39ID:NkMI/CJfつーか何故SDLのスレでAllegroの質問をしますか。
0498名前は開発中のものです。
04/08/17 21:22ID:Mr02eSkK拡大したときに下と右が削れる。
俺だけ?
0499名前は開発中のものです。
04/08/18 00:14ID:O0wT/ab0http://pc5.2ch.net/test/read.cgi/gamedev/1008220559/
0500名前は開発中のものです。
04/08/19 06:31ID:88YaKIPR0501名前は開発中のものです。
04/08/19 06:40ID:O1yTQBZf0502名前は開発中のものです。
04/08/19 23:51ID:6l6QpGXx無いんじゃないかなぁ。
SDL_SetVideoMode()時に覚えておくぐらいしか。
あと、>>501のよりも>>421のが良いかも。
0503500
04/08/20 10:57ID:csZBm7g+サイズ変更させたくなかったんですけど妥協しときます。
ありがとうございました。
0504名前は開発中のものです。
04/08/20 12:05ID:LiSmyfUa0505名前は開発中のものです。
04/08/20 16:46ID:esCldzWy……なんか間違えてないか?
SDL_GetVideoSurface() だけで事足りると思うんだが。
SDL_Surface* screen = SDL_GetVideoSurface();
printf("width, height: %d, %d\n", screen->w, screen->h);
みたいな。おれがなんか間違えてんだろうか……。
0506名前は開発中のものです。
04/08/20 22:03ID:JqCl1DGvSDL_BlitSurfaceのSDL_Rect *dstrectってw,hが無視されてしまうし。
困った困った。
0507498
04/08/21 00:43ID:ELGMlgiiソースとなるサーフィスのサイズはぴったりではいけないようだ。
余裕を持たせたら削れなくなった
0508名前は開発中のものです。
04/08/21 01:17ID:wDjE80nxSGEを使う手がある(sge_transform)。
http://www.etek.chalmers.se/~e8cal1/sge/index.html
正直、俺もネイティブSDLで使える方法があったら知りたいです
0509500
04/08/21 01:20ID:diBViIiVwinAPIのGetSystemMetrics(SM_CXSCREEN)みたいな。
0510名前は開発中のものです。
04/08/21 10:32ID:FvC1IsvOSDL_SoftStretch は?あまし勧められた API でも無いみたいだけど。
>>509
SDL_ListModes は?一番大きいのを取れば多分良いかな…
0511名前は開発中のものです。
04/08/21 22:11ID:H0unQWjVこれはいったいどこの部分にSDLを使っているのでしょうか??
ソースを見た限りではウインドウ表示ぐらいしかしていないような…。
ご存知の方いませんか??
というか、SDLがどういうライブラリなのかいまいち分かっていないです…ごみんなさい。
因みにSDL関係の関数(?)をウマーくOpenGLの関数などに置き換えたら、
SDL抜きの日本語表示ができました…!?何故だ〜〜?
0512505
04/08/21 22:19ID:qlUWPwIqああ、そういうことか。すまん、SDL_FULLSCREEN を前提にしちまった。
しかしそうなると >>502-503 の発言が判らないんだが。
「サイズ変更」ってのは SDL_SetVideoMode かと思ったんだが、
それでディスプレイのサイズがとれるのか……?
SDL の Windows 部分のソースを適当に眺めたんだが、GetSystemMetrics(SM_CXSCREEN) は
DX5_SetVideoMode と DIB_SetVideoMode (どっちも SDL_SetVideoMode の下請け) でしか使ってないな……。
両方ウィンドウを画面中央に表示するために使ってるだけだし。
SDL_ListModes は EnumDisplaySettings か IDirectDraw2_EnumDisplayModes の結果を使ってるから、
これもやっぱり「現在の」画面解像度はとれそうにない。
……やたら長文なだけで全然解決案にならんなorz
>>510
SDL_ListModes の一番大きいの、おれは使ってないな……。
1600x1200 で使うと字が小さすぎて目が痛くなるorz
>>511
……お前さん SDL_kanji と gl_kanji を間違えてないか?
■ このスレッドは過去ログ倉庫に格納されています