[過去ログ] SDLスレ (987レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
864: 名前は開発中のものです。 [sage] 2005/08/11(木) 16:21:33 ID:u3UR2EZN(2/4) AAS
あれ、これじゃシフトする意味ないじゃん。出直してこよう、、
865: 名前は開発中のものです。 [sage] 2005/08/11(木) 16:29:32 ID:u3UR2EZN(3/4) AAS
((SDL_GetTicks() - preTime) << 16) < (1000 << 16) / (60 << 16)
60が右辺にないと意味なかったね。Delphiで試してみたらFPSが59.9〜60.0くらいになったんで、
合っているのかな。
866: 名前は開発中のものです。 [sage] 2005/08/11(木) 16:37:51 ID:u3UR2EZN(4/4) AAS
いや合ってないや。ごめんもうやめるわ。
867(1): 859 [sage] 2005/08/11(木) 19:06:56 ID:W/ukyUzH(1) AAS
うわ、適当に書いたんで思いっきりミスしてるな orz
>>862862(2): 名前は開発中のものです。 [sage] 2005/08/11(木) 13:55:51 ID:7JeDKIu2(1) AAS
// ここで描画やらなにやら
while ( SDL_GetTicks() - preTime < 16 )
{
SDL_Delay( 0 );
}
preTime = SDL_GetTicks();
>>859じゃないけど、普通に考えればこうでしょう。
1から100まで全部与えられるのを待ってないで考えましょう。
フォローthx!
868: 名前は開発中のものです。 [sage] 2005/08/11(木) 19:21:03 ID:Gg/tPqOJ(1) AAS
固定小数点でこんな感じでどう。
#define FRAMETIME 4271/* (1000ms/59.94frame)*256 */
ループ{
描画etc.
while ( SDL_GetTicks() < nextTime/256 )
{
SDL_Delay( 0 );
}
nextTime += FRAMETIME;
}
869: 名前は開発中のものです。 [sage] 2005/08/11(木) 22:03:19 ID:IbwMjIl9(1) AAS
一応オーバーフローも考えて欲しい。
870: 855 [sage] 2005/08/11(木) 23:36:45 ID:s0SfDH7M(2/2) AAS
>>862
そりゃ考えましたよ。
それで適当に書いた>>867とか言われても困るんですけどね。
というか、みんなはどうやってるの?って聞いてるのに何でかなぁ。FPS固定やってないの?
そんなにコード晒すの嫌?別段他のモジュール参照してるわけじゃなし、部分的に抜粋してもらえればいいのに。
って偉そうですね。すみません。
出し惜しみ?自分の技術不足を指摘されるのが恥ずかしい?
あ、面倒なの。
オープンソース糞喰らえですね!みんなはなんでSDL使ってるの?
871: 名前は開発中のものです。 [sage] 2005/08/12(金) 00:38:27 ID:oL+JILND(1) AAS
気持ちは分かるけど、書き込む前に深呼吸しろな。
872: 859 [sage] 2005/08/12(金) 04:23:14 ID:DYAIzoXI(1) AAS
あー、いい加減な書き方したのはスマンかったね
お詫びの意味も込めて、前作ったゲームのを調べてみた
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;
}
途中を色々はしょった時にミスが入ってる可能性はあるが、こんな感じだった
873(1): 名前は開発中のものです。 [sage] 2005/08/12(金) 18:43:40 ID:KeDmnrCr(1) AAS
これでいいじゃない。
外部リンク[html]:www.sun-inet.or.jp
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; // ぴったりで描画が完了した仮定する。(端数を持ち込まないため)
}
874: 名前は開発中のものです。 [sage] 2005/08/12(金) 20:13:16 ID:rlG30S65(1) AAS
>>873
SDL_GetTicks()とSDL_Delay()に置き直して
875: 名前は開発中のものです。 [sage] 2005/08/14(日) 22:40:50 ID:O5bcwOke(1) AAS
SDL_inputmethodのソースコードはこれが最新ですか?
外部リンク[php]:sdlinputmethod.sourceforge.net
876(1): 名前は開発中のものです。 [sage] 2005/08/19(金) 22:03:31 ID:nTcnwqoX(1) AAS
次スレ
2chスレ:tech
877: 名前は開発中のものです。 [sage] 2005/08/20(土) 01:38:13 ID:Uu3xgTeL(1) AAS
>>876 クマー
878: 名前は開発中のものです。 [sage] 2005/08/23(火) 01:30:58 ID:GcWYfYM0(1) AAS
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を無視したら、ものすごい怒られました・・・(´・ω・`)
879: 名前は開発中のものです。 [sage] 2005/08/23(火) 06:21:23 ID:W08ZteNn(1) AAS
本体がデバッグビルドとか?
880(1): 名前は開発中のものです。 [sage] 2005/08/23(火) 09:28:07 ID:0d6CfNLS(1/2) AAS
作った。いらなきゃ消す。
全然いじってない。帰ってきたらいろいろ変える。
外部リンク:wiki.livedoor.jp
881: 名前は開発中のものです。 [sage] 2005/08/23(火) 10:59:53 ID:LxnRBaho(1) AAS
GJ!
882: 880 [sage] 2005/08/23(火) 17:14:36 ID:0d6CfNLS(2/2) AAS
881がGJをくれたのでちょっといじった。
livedoorWikiは使いづらいぞw。ちょい機能がたりないように感じる。
もうちょっとやってみるわ。
883: 名前は開発中のものです。 [sage] 2005/08/23(火) 20:10:29 ID:d61Nt7TU(1) AAS
ユーザー登録しなきゃ編集できないなんて冗談みたいな仕様だな。
884: 名前は開発中のものです。 [sage] 2005/08/23(火) 21:09:14 ID:DXl7coHI(1/3) AAS
うん、やめようか。
別のどっかいいところある?俺サーバーとかよくわかんないんだけど
885(1): 名前は開発中のものです。 [sage] 2005/08/23(火) 21:25:54 ID:DXl7coHI(2/3) AAS
というわけで、やめた。
外部リンク[html]:www5.atwiki.jp
デザインが気に入らないのでころころ変わると思う。悪いね。
ライブドアやっぱダメだわ。
886(1): 名前は開発中のものです。 [] 2005/08/23(火) 23:38:55 ID:MD79yudw(1) AAS
>>885
期待age。SDLの情報サイトって更新止めてる所が多いからね。
887: 名前は開発中のものです。 [sage] 2005/08/23(火) 23:59:59 ID:DXl7coHI(3/3) AAS
>>886
ありがとよ。
まぁ、適当にいじってくれ。俺も保守するから。
Tipsとにかくコピペしてるんだけど、やっぱまずいかな?
888: 名前は開発中のものです。 [sage] 2005/09/01(木) 03:11:54 ID:JN8l/VYG(1) AAS
SDL 1.2.9 リリース
... けど、個人的にはあんまり関係ありそうなアップデート内容無いな
上下前次1-新書関写板覧索設栞歴
あと 99 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.022s