[過去ログ] SDLスレ (987レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
814: 808 [sage] 2005/07/05(火) 14:53:54 ID:zWniNiIr(4/10) AAS
>>813813(2): 808 [sage] 2005/07/05(火) 14:53:21 ID:zWniNiIr(3/10) AAS
>>811
>せめて実行可能なコードを出せよ…
あいすまんかった。
int main(int argc, char* argv[]) {
SDL_Init(SDL_INIT_VIDEO);
SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_ANYFORMAT);
SDL_Surface* temp = SDL_LoadBMP("test.bmp");
SDL_Surface* surface = SDL_ConvertSurface(temp, screen->format, SDL_HWSURFACE);
while (1) {
SDL_BlitSurface(surface, NULL, screen, NULL);
SDL_Flip(screen);
SDL_Event event;
while (SDL_PollEvent(&event))
if (event.type == SDL_QUIT)
return 0;
char buf[64];
sprintf(buf, "%d fps", CalcFPS());
SDL_WM_SetCaption(buf, NULL);
}
return 0;
}
の続き
int CalcFPS() {
static Uint32 count, fps;
static Uint32 btime;
if (++count == 60) {
Uint32 time = SDL_GetTicks();
fps = 1000 / (float(time - btime) / 60);
btime = time;
count = 0;
}
return fps;
}
815: 808 [sage] 2005/07/05(火) 14:57:52 ID:zWniNiIr(5/10) AAS
普通にDirectX(draw)でハードウェアサーフェイス作ると500FPSとか軽くでるので
ハードウェアやドライバがおかしいとも思えないし何ででしょうね。
皆さん上のコードでFPSいくつ位でます?
816: 808 [sage] 2005/07/05(火) 15:07:12 ID:zWniNiIr(6/10) AAS
>>811811(5): 名前は開発中のものです。 [sage] 2005/07/05(火) 14:08:42 ID:1ZePfTMa(1/3) AAS
>>808
せめて実行可能なコードを出せよ…
SDL_Flipだけで130FPSってのは遅すぎるのでどこかが間違っていると思われ
とりあえず SDL_SetVideoMode()の戻り値のSDL_SurfaceとBlitしている画像
のSDL_Surfaceのflagsやformatをチェックして期待通りかどうかチェックしれ
>のSDL_Surfaceのflagsやformatをチェックして期待通りかどうかチェックしれ
SDL_Surface.format_versionってのがscreenでは2、surfaceでは4になっている以外は同じです。
これが原因ですかね…?
んー。
817: 811 [sage] 2005/07/05(火) 18:34:24 ID:1ZePfTMa(3/3) AAS
>>808808(9): 名前は開発中のものです。 [] 2005/07/05(火) 04:30:00 ID:zWniNiIr(1/10) AAS
640*480*32(bpp)の画像を1枚表示するだけで60FPS前後なんですが描画が遅いのは何が原因なんでしょう?
それともこれが限界ですか?
初期化は
SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_ANYFORMAT);
こんな感じでSDL_FillRect()せずにSDL_BlitSurface()してからSDL_Flip()。
環境は
Pentium4 2.4G
GeForce4 ti4400
実行してみた.SDL_Flip()のみにして300fpsくらい出た…
CPU : PentiumM 1.1GHz
Video : i855GM (VRAM は Main Memory) の 16bpp
とりあえず毎フレームSDL_WM_SetCaption()するのは無駄なんで
CalcFPS()内のifの中に持って言ったら 400FPSくらいになった…
818(1): 名前は開発中のものです。 [sage] 2005/07/05(火) 19:49:15 ID:f1qgE5RI(1) AAS
試しました。確かに
WindowsXP
Pentium 4 2.4GHz
GeForce4 MX 420
ではSDL_Flip()だけで130FPSぐらいになります。
819(1): 808 [sage] 2005/07/05(火) 21:16:11 ID:zWniNiIr(7/10) AAS
>>811 818
テストありがとう。超ありがとう。
でもお気楽にハードウェアデバイスが使えると思ったんだが何やら環境依存でそうでもないみたいですね。
DirectXより環境に依存するなんて使う気無くしました。
他のクロスプラトフォームライブラリ探します。
レスありがとう。それに関しては感謝してます。
ありがとう。さようなら。
820(1): 名前は開発中のものです。 [sage] 2005/07/05(火) 21:42:36 ID:x9lRp/t3(1) AAS
>>819
他にいいのがあれば誰もSDLを使わないよ。
とりあえず、やりたいことが2Dなのか3Dなのか分からんが、
3Dの場合はOpenGLを使うことになるが、WindowsとLinuxでなんの
問題もなく使える。
しょーもないコード書いて勝手にSDLを悪者にするのだけはやめれ。
821: 808 [sage] 2005/07/05(火) 21:55:55 ID:zWniNiIr(8/10) AAS
>>820
SDLを馬鹿にしているつもりはないよ。
それどころかSDLは初期化が簡単(ハードウェアを利用するライブラリとしては)なので初心者/入門者には最適だと思います。
また、さくっと作りたい場合は。
ただ、本家で掲載しているコードをほぼそのまんまの形で利用した場合、最低限バックバッファにコンパチブルな
オフスクリーンサーフェイスのフォーマットを選択してくれてもいいように思いました。
Simple directmedia layerのsimpleってなんでしょう?
>しょーもないコード書いて勝手にSDLを悪者にするのだけはやめれ
否定するなら根拠をまず述べるのが筋ってもんです。
822(1): 名前は開発中のものです。 [sage] 2005/07/05(火) 22:59:46 ID:LYpwtNFt(1) AAS
#pragma once
って、非ウィンドウず系でも使えるなりか?
823: 名前は開発中のものです。 [sage] 2005/07/05(火) 23:16:04 ID:zWniNiIr(9/10) AAS
>>822
少なくともgccでは#ifndefを使用したほうがいいかと。
そして激しくスレ違い。
824: 名前は開発中のものです。 [sage] 2005/07/05(火) 23:16:34 ID:iphFkIr5(1) AAS
たしかにそれだけ遅いとJava2Dより遅いってことだから
なんかわけがありそうな気がする・・・
825(1): 名前は開発中のものです。 [sage] 2005/07/05(火) 23:29:28 ID:l636Cdmy(1) AAS
DirectXもヘンテコなコード書けば、一部のマシンだけでしか動かないコードになると思うがな。
826: 名前は開発中のものです。 [sage] 2005/07/05(火) 23:44:56 ID:zWniNiIr(10/10) AAS
>>825
確かにコンパイラは嘘は付きませんからヘンテコはコードにはそれなりの挙動を見せます。
ですが、>>813がそれほど罪深きコードだとは思わないけどなぁ…。
それとも暗黙の了解的なコーディングがあるんでしょうか?
827: 名前は開発中のものです。 [sage] 2005/07/06(水) 09:30:28 ID:e9o9xwuh(1) AAS
>> 808
そのコードだとどちらのサーフェイスもシステムメモリに取られているだろう罠
811が言うように SDL_Surface の flags をチェックしてみ
828: 818 [sage] 2005/07/06(水) 20:18:02 ID:mO4Tn2rF(1) AAS
確かに、/test/testvidinfo.cの
void PrintFlags(Uint32 flags)を使って
PrintFlags(screen->flags);
printf("\n");
PrintFlags(surface->flags);
printf("\n");
とやると
0x00000000 SDL_SWSURFACE
0x00000000 SDL_SWSURFACE
となります。
で
SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32, SDL_FULLSCREEN | SDL_DOUBLEBUF);
にすると
0xc0000001 SDL_HWSURFACE | SDL_FULLSCREEN | SDL_DOUBLEBUF
0x00000001 SDL_HWSURFACE
となり、Blit & Flipで
30000 fps
になりました。(合ってるのかな?)
829: 名前は開発中のものです。 [sage] 2005/07/18(月) 22:07:17 ID:Tgmwb20q(1) AAS
Irrlicht初心者質問スレ
2chスレ:tech
でも聞いてみたのですが、反応が無いのでこちらでも聞いてみます。マルチすいません。
Irrlichtで描画系、その他(音、入力関係とか)はSDLと組み合わせて使うことって可能でしょうか?
あと、もし可能なんだとしたら、サンプルとかあると嬉しいのですが、ご存じの方いませんか?
830: 名前は開発中のものです。 [sage] 2005/07/20(水) 00:36:00 ID:a4NCqugX(1) AAS
SDL_MixerでBGMのクロスフェードって可能でしょうか?
831: 名前は開発中のものです。 [sage] 2005/07/20(水) 05:03:25 ID:KNwpKu9v(1) AAS
Channelを1つBGMとして使えば行けるんで無いかしら。
832: 名前は開発中のものです。 [sage] 2005/07/20(水) 19:24:07 ID:oHYMFGyh(1) AAS
~~~~~~\ /~~~~~~
\/
/\
/ \
じゃなくて
~~~~~~\ /~~~~~~
\ /
\ /
\/
にする!
833: 名前は開発中のものです。 [sage] 2005/07/20(水) 20:00:00 ID:eQOHDI/N(1) AAS
SDL_Mixerはシンプルだけど、こまかいことは苦手
834: 名前は開発中のものです。 [sage] 2005/07/20(水) 21:06:55 ID:J6BwLsDL(1) AAS
~~~~~~\ /~~~~~~
\/
/\
/ \
~~~~~~~~~~~~ ←この部分を合成
835(1): 名前は開発中のものです。 [sage] 2005/07/25(月) 19:06:53 ID:1zvi2dmP(1) AAS
SDLを使って、ゲームを作ろうと思うのですが、
Win上で使える入力補完機能のあるIDEはありませんか?
836: 名前は開発中のものです。 [sage] 2005/07/25(月) 21:28:19 ID:tBl8Lhba(1) AAS
入力補完のないIDEなんて, ほとんど存在しないだろw
好きなIDE使え
837: 名前は開発中のものです。 [sage] 2005/07/26(火) 00:22:38 ID:c4yZrU1p(1) AAS
>>835
VisualStudio.NETが一番おすすめ
838: 名前は開発中のものです。 [sage] 2005/07/26(火) 03:30:17 ID:fGo2aUYV(1) AAS
NetBeansでもEclipseでもいいぞ
上下前次1-新書関写板覧索設栞歴
あと 149 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.015s