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

SDLスレ

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001login:Penguin01/11/11 17:59ID:u0HMN7qC
マルチプラットホームな汎用ゲームライブラリの
SDLについてのスレッドです。
最新情報、参考になるソース、質問等

とりあえず、本山
http://www.libsdl.org/
0857名前は開発中のものです。2005/08/10(水) 19:50:28ID:f3HjLb+x
>>856
詳しく
0858名前は開発中のものです。2005/08/10(水) 20:59:46ID:zuYoOj0m
ティアリングしてるんだし浮動小数点でも固定小数点でもどっちでもいいよな
俺はもう癖で固定小数点つかっちまうが

高精度タイマ使えばそれなりに精度は出るがかなり環境依存しやすい模様
この辺の話はSDLとはもはや関係ないな
0859名前は開発中のものです。2005/08/10(水) 21:58:53ID:sHNa10sC
とりあえず、

while ( nowTime - preTime < 16 )
{
SDL_Delay( 0 );
}

のほうがいいよ
タイマの精度に期待出来ないことも多々あるんで、待ちすぎが起こりやすいから
0860名前は開発中のものです。2005/08/10(水) 23:12:02ID:EzSJcbzY
あー、なるほど、俺もフレームレートも固定少数使ってみよう
少しぐらい改善すっかな
08618552005/08/11(木) 11:06:48ID:s0SfDH7M
>>859
それnowTimeもpreTimeも更新されないんじゃ?

具体的なコードが見たいんですけど駄目ですか?>>ALL
0862名前は開発中のものです。2005/08/11(木) 13:55:51ID:7JeDKIu2
// ここで描画やらなにやら

while ( SDL_GetTicks() - preTime < 16 )
{
SDL_Delay( 0 );
}
preTime = SDL_GetTicks();

>>859じゃないけど、普通に考えればこうでしょう。
1から100まで全部与えられるのを待ってないで考えましょう。
0863名前は開発中のものです。2005/08/11(木) 16:16:47ID:u3UR2EZN
SDL_GetTicks() - preTime < 1000/60

これ、整数の除算のところで誤差が出るよね。
固定小数点で計算する方法って、32bitのうち小数側に16bit使うと決めたら

(60*(SDL_GetTicks() - preTime) << 16) < (1000 << 16)

みたいにすればいいのかな?
0864名前は開発中のものです。2005/08/11(木) 16:21:33ID:u3UR2EZN
あれ、これじゃシフトする意味ないじゃん。出直してこよう、、
0865名前は開発中のものです。2005/08/11(木) 16:29:32ID:u3UR2EZN
((SDL_GetTicks() - preTime) << 16) < (1000 << 16) / (60 << 16)

60が右辺にないと意味なかったね。Delphiで試してみたらFPSが59.9〜60.0くらいになったんで、
合っているのかな。
0866名前は開発中のものです。2005/08/11(木) 16:37:51ID:u3UR2EZN
いや合ってないや。ごめんもうやめるわ。
08678592005/08/11(木) 19:06:56ID:W/ukyUzH
うわ、適当に書いたんで思いっきりミスしてるな orz
>>862フォローthx!
0868名前は開発中のものです。2005/08/11(木) 19:21:03ID:Gg/tPqOJ
固定小数点でこんな感じでどう。

#define FRAMETIME 4271/* (1000ms/59.94frame)*256 */

ループ{
描画etc.

while ( SDL_GetTicks() < nextTime/256 )
{
SDL_Delay( 0 );
}
nextTime += FRAMETIME;
}
0869名前は開発中のものです。2005/08/11(木) 22:03:19ID:IbwMjIl9
一応オーバーフローも考えて欲しい。
08708552005/08/11(木) 23:36:45ID:s0SfDH7M
>>862
そりゃ考えましたよ。
それで適当に書いた>>867とか言われても困るんですけどね。

というか、みんなはどうやってるの?って聞いてるのに何でかなぁ。FPS固定やってないの?
そんなにコード晒すの嫌?別段他のモジュール参照してるわけじゃなし、部分的に抜粋してもらえればいいのに。
って偉そうですね。すみません。

出し惜しみ?自分の技術不足を指摘されるのが恥ずかしい?
あ、面倒なの。

オープンソース糞喰らえですね!みんなはなんでSDL使ってるの?
0871名前は開発中のものです。2005/08/12(金) 00:38:27ID:oL+JILND
気持ちは分かるけど、書き込む前に深呼吸しろな。
08728592005/08/12(金) 04:23:14ID:DYAIzoXI
あー、いい加減な書き方したのはスマンかったね
お詫びの意味も込めて、前作ったゲームのを調べてみた

const float FRAME_TIME = 1000.0f / 60.0f;
float timer_diff = 0.0f;

while (...) { // ループ
float old_timer = SDL_GetTicks() - timer_diff;
// 描画等
while ((SDL_GetTicks() - old_timer) < FRAME_TIME) {
SDL_Delay(0);
}
timer_diff = SDL_GetTicks() - old_timer - FRAME_TIME;
}

途中を色々はしょった時にミスが入ってる可能性はあるが、こんな感じだった
0873名前は開発中のものです。2005/08/12(金) 18:43:40ID:KeDmnrCr
これでいいじゃない。
ttp://www.sun-inet.or.jp/~yaneurao/rsp/rsp48to4F.html

void ys::ElapseTime(void){ // (C)yaneurao 1998-1999
// 厳粛かつ正確かつ効率良く時間待ちをする
if (iFPS == 0) return ; // Non-wait mode
static DWORD lastdraw = 0; // 前回の描画時刻
// (不運にも第一発目のtimeGetTime() == 0とかゆーこともあるが、それは構わない)
DWORD t = timeGetTime(); // 現在時刻
dwFPSWaitTT = (dwFPSWaitTT & 0xffff) + dwFPSWait; // 今回の待ち時間を計算
// dwFPSWaitは、待ち時間の小数以下を16ビットの精度で持っていると考えよ
// これにより、double型を持ち出す必要がなくなる。
// dwFPSWaitTT = 1000 * 0x10000 / FPS;である
DWORD dwWait = dwFPSWaitTT >> 16; // 結局のところ、今回は何ms待つねん?
// 1フレーム時間を経過しちょる。ただちに描画しなちゃい!
DWORD dwElp = (DWORD)(t - lastdraw); // 前回描画からいくら経過しとんねん?
if (dwElp>=dwWait) {
lastdraw = t;
return ;
}
// ほな、時間を潰すとすっか!
// まだ時間はたっぷりあるのか?
// 4ms以上消費する必要があるのならば、Sleepする
if (dwWait-dwElp >= 4) Sleep(dwWait-dwElp-3);
// いまdwWait>dwElpなのでdwWait-dwElp>=0と考えて良い
// 95/98/NTで測定したところSleep(1);で1ms単位でスリープするのは可能
// ただし、実装系依存の可能性もあるのでSleepの精度は3ms以内と仮定
while ((timeGetTime()-lastdraw)<dwWait) ;
// ループで時間を潰す(あまり好きじゃないけど)
// これで、時間つぶし完了!
lastdraw += dwWait; // ぴったりで描画が完了した仮定する。(端数を持ち込まないため)
}
0874名前は開発中のものです。2005/08/12(金) 20:13:16ID:rlG30S65
>>873
SDL_GetTicks()とSDL_Delay()に置き直して
0875名前は開発中のものです。2005/08/14(日) 22:40:50ID:O5bcwOke
SDL_inputmethodのソースコードはこれが最新ですか?
ttp://sdlinputmethod.sourceforge.net/phpbb/viewtopic.php?t=6&start=30#104
0876名前は開発中のものです。2005/08/19(金) 22:03:31ID:nTcnwqoX
次スレ
http://pc8.2ch.net/test/read.cgi/tech/1065535118/
0877名前は開発中のものです。2005/08/20(土) 01:38:13ID:Uu3xgTeL
>>876 クマー
0878名前は開発中のものです。2005/08/23(火) 01:30:58ID:GcWYfYM0
VC.NETでSDLを使っているのですが、VCランタイムDLLを同封して配布したくありません。
そこで、SDLのソースを落として/MTビルドし、それは成功したんですが、
本体のほうは/MTビルドしても

error LNK2005: _exit は既に LIBCMT.lib(crt0dat.obj) で定義されています。
error LNK2005: _strncpy は既に LIBCMT.lib(strncpy.obj) で定義されています。
error LNK2005: __isctype は既に LIBCMT.lib(isctype.obj) で定義されています。

このようなリンクエラーが出てビルド完了できません。
どのようにしたらうまくいくのか、教えてください。お願いします

ちなみにLIBCMT.libを無視したら、ものすごい怒られました・・・(´・ω・`)
0879名前は開発中のものです。2005/08/23(火) 06:21:23ID:W08ZteNn
本体がデバッグビルドとか?
0880名前は開発中のものです。2005/08/23(火) 09:28:07ID:0d6CfNLS
作った。いらなきゃ消す。
全然いじってない。帰ってきたらいろいろ変える。
http://wiki.livedoor.jp/ntooka/d/FrontPage?wiki_id=5515
0881名前は開発中のものです。2005/08/23(火) 10:59:53ID:LxnRBaho
GJ!
08828802005/08/23(火) 17:14:36ID:0d6CfNLS
881がGJをくれたのでちょっといじった。

livedoorWikiは使いづらいぞw。ちょい機能がたりないように感じる。
もうちょっとやってみるわ。
0883名前は開発中のものです。2005/08/23(火) 20:10:29ID:d61Nt7TU
ユーザー登録しなきゃ編集できないなんて冗談みたいな仕様だな。
0884名前は開発中のものです。2005/08/23(火) 21:09:14ID:DXl7coHI
うん、やめようか。
別のどっかいいところある?俺サーバーとかよくわかんないんだけど
0885名前は開発中のものです。2005/08/23(火) 21:25:54ID:DXl7coHI
というわけで、やめた。
http://www5.atwiki.jp/ntooka/pages/1.html
デザインが気に入らないのでころころ変わると思う。悪いね。

ライブドアやっぱダメだわ。
0886名前は開発中のものです。2005/08/23(火) 23:38:55ID:MD79yudw
>>885
期待age。SDLの情報サイトって更新止めてる所が多いからね。
0887名前は開発中のものです。2005/08/23(火) 23:59:59ID:DXl7coHI
>>886
ありがとよ。
まぁ、適当にいじってくれ。俺も保守するから。

Tipsとにかくコピペしてるんだけど、やっぱまずいかな?
0888名前は開発中のものです。2005/09/01(木) 03:11:54ID:JN8l/VYG
SDL 1.2.9 リリース

... けど、個人的にはあんまり関係ありそうなアップデート内容無いな
0889名前は開発中のものです。2005/09/03(土) 12:14:56ID:98xgvWvd
放置しておいてスマンカッタ。超訳で不完全だけど。
http://www5.atwiki.jp/ntooka/pages/14.html
どうぞ。あんまし役に立つ情報はないけど。
0890名前は開発中のものです。2005/09/09(金) 23:26:28ID:nk7nSsWv
SDLで、作成したプログラムの二重起動を防ぐ方法はありませんか?
0891名前は開発中のものです。2005/09/10(土) 16:01:06ID:jqa9kx5Y
Mutexをキーワードにググれー
0892名無しさん@そうだ選挙に行こう2005/09/10(土) 17:39:50ID:idvQgIh9
つーかそれSDLの問題かね
0893名無しさん@そうだ選挙に行こう2005/09/11(日) 00:15:50ID:WdKYR5dd
だからソースの可搬性の問題でしょ?
上のほうのタイマの話といい、おまいら何でSDL使ってんの?
環境依存なんて当たり前?
0894名無しさん@そうだ選挙に行こう2005/09/11(日) 00:45:02ID:ySd+9IMB
起動したら一時ファイル作って、そのファイルが存在するかどうかで2重起動を検出する
っていうのは邪道なのかね?
0895名無しさん@そうだ選挙に行こう2005/09/11(日) 00:45:08ID:1ur5e5rk
SDL_Mutex
0896名無しさん@そうだ選挙に行こう2005/09/11(日) 05:14:34ID:7hQykqFY
>>894
強制終了とかでうまく終了処理が行われなかったら
そのファイルが残ってしまい起動できなくなるんじゃ?
0897名無しさん@そうだ選挙に行こう2005/09/11(日) 19:18:45ID:qqbGMCN5
>>891
>>895
SDL 使ったことあるのか?
0898名無しさん@そうだ選挙に行こう2005/09/11(日) 20:03:41ID:IriOHZii
あ、SDL_Mutexってマルチスレッドで使うんだっけ?
08998952005/09/11(日) 21:13:08ID:1ur5e5rk
>>897
ないよ、まったくない。
0900名前は開発中のものです。2005/09/12(月) 01:31:45ID:yPWNVwAr
で?
0901名前は開発中のものです。2005/09/13(火) 15:17:26ID:IiHu2zoE
OS汎用で二重起動防止なら、自分専用のポートを決めてbindするとか。
WindowsならWSAStartupを呼ぶとか多少のOS依存はifdefで書く必要はあるが。
0902名前は開発中のものです。2005/09/22(木) 09:51:58ID:IbR5Q/kQ
質問。
SDL_LoadBMPで取得したSDL_Surfaceは
SW_SURFACEとして読み込まれている認識でOK?
0903名前は開発中のものです。2005/09/22(木) 09:59:46ID:IbR5Q/kQ
スマソ。俺の動作結果はSWでもHWでも無い場所に格納されているみたい。
if(surface->flags&SDL_HWSURFACE) printf("HW\n");
って感じでSWも確かめましたが反応無し。
0904名前は開発中のものです。2005/09/22(木) 12:55:39ID:5uMRcPCk
>>903
#define SDL_SWSURFACE   0x00000000        /* Surface is in system memory */
#define SDL_HWSURFACE   0x00000001        /* Surface is in video memory */
です。
システムメモリ上かVideoメモリ上のどちらかに確保されて、
下位の1bitがvideoメモリ上にあるかどうかを判定するフラグです。

if(surface->flags&SDL_HWSURFACE) printf("HW\n"); else printf("SW\n");
0905名前は開発中のものです。2005/09/22(木) 18:10:40ID:p3aHRteJ
ってことでSWSURFACEで正解。
0906名前は開発中のものです。2005/09/22(木) 23:39:29ID:IbR5Q/kQ
サンクス。古いマシンでのフィルレートがDDrawよか遅かったのです。
ううむ。
0907名前は開発中のものです。2005/09/23(金) 16:11:11ID:nrqAdKrH
ちゃんと読み込んだ画像を SDL_DisplayFormat() して
スクリーンのフォーマットにあわせた?

あとそもそもスクリーンがHWSURFACEになってなければ
DDrawより遅くなると思うよ?
0908名前は開発中のものです。2005/09/23(金) 20:15:53ID:tQ78MyNZ
みなさん有り難うございます(;つД`)

>>907
サンクス
おっしゃるように、HWSURFACEにして、SDL_DisplayFormatでサーフェス指定して解決したす。
0909名前は開発中のものです。2005/09/29(木) 22:19:14ID:QcAJa6kn
ウィンドウモードとフルスクリーンモードの処理速度が異なるのだが、
どういうことだ?

SDLの関数あたりが悪さしていると思うのだが、わからないんです。

教えて、えろい人!!
0910名前は開発中のものです。2005/09/29(木) 22:57:19ID:i68KflVJ
垂直同期の有無じゃね?
0911名前は開発中のものです。2005/09/29(木) 23:09:02ID:q77C+Q53
フルスクリーンだと、資源を専有してるから速いんだろうよ
0912名前は開発中のものです。2005/09/29(木) 23:12:38ID:LmvdAp7b
>>909
マルチうぜー
0913名前は開発中のものです。2005/09/30(金) 00:59:46ID:oblFcTL6
>911
残念な事にフルスクリーンの方が遅くなるんだ!!

>912
まったくだ!!
0914名前は開発中のものです。2005/09/30(金) 18:35:36ID:6EUSIuxQ
>>913
>残念な事にフルスクリーンの方が遅くなるんだ!!
マジかっ!?
意味ねー
つーか、フルなしでよくねーの
0915名前は開発中のものです。2005/09/30(金) 20:34:34ID:/6HcyHJo
あーなんだ、SDL側にvsync待ちさせといて、さらに待ってるとかいうオチじゃないよな?
0916名前は開発中のものです。2005/10/13(木) 11:48:15ID:CykI+nJQ
あるところのゲームサークルに参加したんですが、
グラフィック部分にSDLを使うことになりました。
そして音楽はMIDIは環境で変わるから良くないってことで
DirectMusicProducerを使うとか言い出しました
僕はmixerのMODを使うことを進めたんですが、押し切られてしまいました
リンカエラーとかメモリエラーがでないか凄く心配です・・・
皆さんはどう思いますか?
0917名前は開発中のものです。2005/10/13(木) 12:21:18ID:XPDehWw3
>DirectMusicProducerを使うとか言い出しました
DirectMusicProducerは単に音楽作成ツールですよ?

音楽はDirectX Audioで自前で鳴らし、
効果音はSDLで鳴らそうってなら確かにやめた方がよさそう。
どんな問題が出るか知らないけどね。
09189162005/10/13(木) 12:53:25ID:ypy0AXR+
>>917
そうです。DirectMusicProducerで作ったデータを
DirectX Audioで鳴らそうとしてました。
効果音はどうか知りません
リンカに怒られると言ったら外部にDMPファイルを再生するDLLを置くとか言い出しました
もうガクブルです。
0919名前は開発中のものです。2005/10/13(木) 17:25:39ID:ToPl7cy0
>>915
MODはSDLに組み込みだから楽 ← プログラマの都合
DMPはMIDIライクな編集がその場で出来るから楽 ← 音楽屋の都合

こう思った。
うまい折衷案が出るとよいが、最終的にはプログラマ側で妥協してやるしかないんじゃない?
09209192005/10/13(木) 17:47:05ID:ToPl7cy0
レス番間違えたーよ('A`)
>>916宛でした
09219152005/10/13(木) 21:13:13ID:pthRpnxV
>>919
そうですか・・・音楽屋がやりやすいなら仕方ないです
でもDirectMusic叩けるなら、Drawも直に叩いて欲しい
うちのメインの考え方は分からないです・・・
0922名前は開発中のものです。2005/10/14(金) 10:28:50ID:uk4v+zqx
>>921
とりあえず、言質はとっとけ
最低でも、そのメインが該当箇所を組むようにな
問題なけりゃそれでいいが、
問題出たときに誰が泥をかぶるのかを決めとかないと
プロジェクトが頓挫する事になる
0923名前は開発中のものです。2005/10/14(金) 18:43:07ID:kCsY6VJS
UTF8のファイルから読み込んだ文字列をひとつのサーフェイスにして
描画する方法が分かりました。
しかし、その文字列を一文字ずつ描画したい場合(ドラクエのように人に話すと
表示されるメッセージのように)は人文字ずつサーフェイス作っていって
フレームカウントをして表示速度の制御をしながら描画するのがいいんでしょうか?
後、UTF8だと日本語1文字が何バイトなのかって固定されてないので、すごく難しいんですが。
アイディアください。
0924名前は開発中のものです。2005/10/14(金) 20:16:29ID:uTRcIOI8
UTF-8は先頭バイト見れば何バイトかわかるけど?
0x00-0x7F 1
0xC0-0xDF 2
0xE0-0xEF 3
0xF0-0xF7 4
0xF8-0xFB 5
0xFC-0xFD 6
0925名前は開発中のものです。2005/10/15(土) 04:46:42ID:xL4TCgUt
>>923
むしろ
>UTF8のファイルから読み込んだ文字列をひとつのサーフェイスにして描画する方法
を教えてください
09269232005/10/15(土) 20:55:28ID:03Wc5kyl
>>924
ありがとう。理解しました。
>>923
回りくどい質問でしたね。気をつけます。
09279252005/10/16(日) 00:09:25ID:uNCcPNGN
マジで教えて欲しいんすけど・・・
0928名前は開発中のものです。2005/10/16(日) 01:09:04ID:ho7RZaGn
>>925
SDL_ttf をいれて以下の関数を使う
* TTF_RederUTF8_Solid()
* TTF_RederUTF8_Shaded()
* TTF_RederUTF8_Blended()
09299252005/10/16(日) 16:53:28ID:uNCcPNGN
そうじゃなくて、1フレーム毎にsurfaceを生成して描画してたんじゃ遅くて使い物にならない(こともないけど)ので、
アプリケーションの初期化時にテキストデータを全部読み込んで画像をcache、文字と矩形の対応情報を保存、もしくは外部でそのファイルフォーマットを吐き出すツールを作る必要があると思うんだけど、
もういいや。

>>924>>928
情報ありがとう。知らなかったよ。
0930名前は開発中のものです。2005/10/16(日) 17:01:24ID:0gQNvyRR
何か凄いアホが紛れ込んでるな。
09319252005/10/16(日) 17:01:39ID:uNCcPNGN
文字列情報が固定されているゲームに限定してレスしてしまった。すまそ。
動的な文字列の場合はやっぱりそのまま生成して使うんかな。
まあどうでもいいか。
09329252005/10/16(日) 17:04:24ID:uNCcPNGN
はいはい、君は僕より頭がいい。
0933名前は開発中のものです。2005/10/16(日) 17:46:45ID:ePu+oMfg
TTF_RederUTF8_XXXを使う場合でも1フレーム毎にsurfaceを
生成するなんてアホなことはしない.文字列のsurfaceが欲しい
シーンに入るときにsurface作ってそのシーンから抜けるときに
SDL_FreeSurface()する.

文字と矩形を対応させて文字列を描画する方法はASCIIコード程度なら
やるけど日本語ありの場合は必要な文字だけをレンダリングしたとしても
莫大なメモリを食うのでやっぱりやらない.
0934名前は開発中のものです。2005/10/16(日) 19:04:17ID:9sHmJEZ2
>>933
> 文字と矩形を対応させて文字列を描画する方法はASCIIコード程度なら
> やるけど日本語ありの場合は必要な文字だけをレンダリングしたとしても
> 莫大なメモリを食うのでやっぱりやらない.
日本語でも、αチャンネルだけのテクスチャにするとかでメモリ使用量押さえたらなんとかならんかな?
やったことないんで想像で言ってるだけだが
09359252005/10/16(日) 19:15:54ID:uNCcPNGN
>>933
使う文字列が多い場合、シーン毎に細分化してもメモリ使用量は変わらんがな。結局使うんだから。
ましてMMOのチャットなんかで動的に必要な場合はシーンで確保なんかできない。
09369302005/10/16(日) 19:37:31ID:0gQNvyRR
正直スマンかった。アホじゃなくて池沼だわ。
09379252005/10/16(日) 20:15:33ID:uNCcPNGN
優越感に浸りたいだけの馬鹿でなければ指摘していただきたい。
それとも文章力が無いのか、面倒臭がりなのか。
09389252005/10/16(日) 20:21:33ID:uNCcPNGN
>>936
じゃなきゃ誰も君のレスに何の価値を感じないよ。
君はそのレスを書き込むことに何か意義を感じるのかい?
「925は馬鹿だな」って、一緒になって賛同してくれるレスが欲しいのかい?
くだらねえ。
09399252005/10/16(日) 20:23:46ID:uNCcPNGN
病んでるな俺
SDL_ttfで首吊ってきます
さようなら
0940名前は開発中のものです。2005/10/16(日) 22:34:38ID:eOr9iAiX
晩ご飯までには帰ってくるのよ。
0941名前は開発中のものです。2005/10/20(木) 23:34:54ID:W3zgiMmJ
SDL
SD
S
SD
SDL
0942名前は開発中のものです。2005/10/23(日) 17:17:59ID:M214XGzK
g++
g+
g

+
++
++g
0943名前は開発中のものです。2005/10/26(水) 15:51:54ID:VPhwa+P3
ライセンスゆるくなるのかねぇ…?
ttp://www.devolution.com/pipermail/sdl/2005-October/070939.html
0944名前は開発中のものです。2005/11/02(水) 02:51:15ID:Hh29B0Am
>>943
まじで? もしそうなるとしたら、SDLを選択肢に選ぶ人はもっと増えるかもしれないね。
ところでSDL2.xっていつ頃になるんだろう?
0945名前は開発中のものです。2005/11/05(土) 20:50:59ID:4J6RfiW+
borland C++ compilerでSDL_gfxを導入したいんだけど、導入方法が
分からないので、教えてほしいのですが。
0946名前は開発中のものです。2005/11/06(日) 17:47:38ID:HW9Qh6Q9
>>945
こんな感じでMakefileを書いてコンパイルすればいいでしょう。
-----------------------------------------------------------
CC=bcc32
RC=brc32
ILIB=implib
CFLAG=-WD -3 -O2 -w- -AT -pc -H- -k -b -DWIN32 -DBUILD_DLL
CINCS=-I..\include
TARGET= SDL_gfx.dll
LIB= SDL_gfx.lib
SRC1= SDL_imageFilter.c
OBJ1= SDL_imageFilter.obj
SRC2= SDL_gfxPrimitives.c
OBJ2= SDL_gfxPrimitives.obj
SRC3= SDL_framerate.c
OBJ3= SDL_framerate.obj
SRC4= SDL_rotozoom.c
OBJ4= SDL_rotozoom.obj
LIB1=..\lib\SDL.lib

0947名前は開発中のものです。2005/11/06(日) 17:48:36ID:HW9Qh6Q9
つづき

TARGET: $(TARGET)

$(TARGET): $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4)
$(CC) $(CFLAG) -e$(TARGET) $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4) $(LIB1)
$(ILIB) $(LIB) $(TARGET)
$(OBJ1): $(SRC1)
$(CC) $(CFLAG) $(OUTDIR) $(CINCS) -c $(SRC1)
$(OBJ2): $(SRC2)
$(CC) $(CFLAG) $(OUTDIR) $(CINCS) -c $(SRC2)
$(OBJ3): $(SRC3)
$(CC) $(CFLAG) $(OUTDIR) $(CINCS) -c $(SRC3)
$(OBJ4): $(SRC4)
$(CC) $(CFLAG) $(OUTDIR) $(CINCS) -c $(SRC4)
-----------------------------------------------------------
09489252005/11/07(月) 12:44:31ID:TpJBaBVO
>>946
どうも。レスありがとうございます。メイクファイルを見ました。
上記のmakeをborlandのmakeコマンドで実行してみましたが、何もエラーだとか
何も反応がないので、少し修正しました。borlandのmakefileって小括弧じゃなくて中括弧で書くみたいなので、一応中括弧に直してmakeしました。
修正した所だけ書くと、
OBJ= SDL_imageFilter.obj SDL_gfxPrimitives.obj SDL_framerate.obj SDL_rotozoom.obj
$(TARGET) : $(OBJ)
$(CC) $(CFLAG) -e$(TARGET) $(OBJ) $(LIIB1)
$(ILIB) $(LIB) $(TARGET)
.c.obj :
$(CC) $(CFLAG) $(CINCS) -c $<
修正したmakefileが今手元にないけど、こんな感じにしたら、ちゃんと動きました。
一回、失敗してSDL.libをリンクしてなくてプロシージャが見つからないってエラーが出てきましたが、
ちゃんと$(CC) $(CFLAG) -e$(TARGET) $(OBJ) $(LIIB1) という感じに$(LIB1)を入れたらうまくDLLと
ライブラリが作れました。
# $(OUTDIR)って定義されてないけど、これは何でしょうか?
09499462005/11/07(月) 20:00:12ID:fJubQ/K/
>>948
BCC Developerが
http://www.hi-ho.ne.jp/jun_miura/
はいたMakefileをDOS用に適当に編集しただけなので
細かいことは良く分かりませんが、

>$(OUTDIR)って定義されてないけど、これは何でしょうか?

生成物の出力先を指定するときに使うんだったと思います。
09509252005/11/08(火) 10:03:40ID:S6wiWkHj
>>946
どうもレスありがとうございます。なるほど、オブジェクトファイルの保存ディレクトリですか。
SDL_gfxの配布ファイルにはVCのメイクファイルしか入ってなくって、BCCでのビルド無理だからVC買おうかと思ってましたが、質問してよかったです。
BCC Developperですか。長いことずっとコマンドライン作業だったので、Developerすごく便利そうですね。今度から使ってみます。
0951名前は開発中のものです。2005/11/20(日) 18:36:24ID:vG0RaijI
cygwin 環境に SDL 1.2.9 を入れてみたけど SDL_Init(SDL_INIT_VIDEO) を呼ぶと、
gdb でデバッグするとき変なことになってます
(SDL_Init と SDL_Quit を呼ぶだけのプログラムで)

5 if(SDL_Init(SDL_INIT_VIDEO)<0) {
(gdb)
warning: Hooking
warning: C:\..\TEST.EXE
warning: RPH:Injecting code at start up
warning: done...
warning: RPH:DDraw Hooked!

こんな感じのメッセージが出て、以降普通にステップ実行できるけど、
main から抜けても gdb とアプリが終了してくれない

ddraw.dll? を hook したよ、とか言ってますがこれが元凶だろうか
ちなみに SDL_Init(SDL_INIT_NOPARACHUTE) と SDL_Quit だと
問題は起こらない

cygwin + SDL でデバッグできない、なんて話は検索しても皆無だし、
どなたか情報ありませんかね?

SDLビルド時のオプションなどは、ここに書いてある通りに実行しました
http://cefiro.homelinux.org/topics/SDL/setup-win32-cygwin.html
0952名前は開発中のものです。2005/11/21(月) 12:52:23ID:wOS82bbj
wesnothというSDLなゲームで日本語入力できるようにしようとしているのだけど、どの手段がいいのかなぁ。
今はSDL_imとか試しているけど。
フォントレンダリングも少しアレげなんでsdl-pangoとか検討してみたり。
ここまでやるとなると、日本語入力に関してはgtk+を直に使った方がよい気がしてきたり…
0953名前は開発中のものです。2005/11/21(月) 13:29:05ID:wOS82bbj
なんかアホなこと書いた気がする。さすがにgtk+はむりか。必要な時だけ呼び出せるわけじゃないし。
ximにモディファイアキー喰われてしまって困っていますが、SDL_imでがんばってみます。
0954名前は開発中のものです。2005/11/24(木) 13:18:22ID:wtYtRNgo
>951
cygwinでは全く経験無いのでわからないけど、
DDrawフックが怪しいと思うなら、
SDL自体を ENABLE_DIRECTX を外してmakeしてから試せばいいでしょう。
DIRECTXモジュールがSDLに含まれないなら、少なくともDDRAWの疑いは晴れる。

外し方は自分で調べてな。
configureで --disable-use_directxとか??
直接makefileから -DENABLE_DIRECTX を外すか。
0955名前は開発中のものです。2005/11/25(金) 14:25:57ID:j4sp1PuY
>>954
サンキュー
そういう手段もあるのか

どうも、この怪しいメッセージ、OmegaDriverが出してるっぽくて
このフックだけ外す方法を模索中
ノートPCなんだけど、標準ドライバだとpivot表示ができないから
OmegaDriver自体を使わない、というのはちょっと困る
0956名前は開発中のものです。2006/02/05(日) 18:29:11ID:rbHrat23
SMPEGをVC++6でコンパイルする方法を教えて頂けませんでしょうか?
ググってみたのですが、どこにも解説しているサイトがなくて…。
レス数が950を超えています。1000を超えると書き込みができなくなります。