[過去ログ] SDLスレ (987レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
362(6): 名前は開発中のものです。 [sage] 04/02/01 22:25 ID:VsJKdPiS(1) AAS
フルスクリーンにしてSDL_FillRect使うとものすうんごく遅いんですが、
こんなもんなんでしょうか?
SDL_FillRectを使わなければ60fpsくらい出るものが1以下に...
363(1): 名前は開発中のものです。 [sage] 04/02/03 17:19 ID:0RlVpYsz(1) AAS
>>362
あなたの環境でフルスクリーンでSDL_FillRect使って
ものすうんごく遅くなる最小限のサンプルプログラムを
示してくれればみんなテストしてくれると思うよ?
364: 362 [sage] 04/02/04 11:41 ID:URHwb4SZ(1/3) AAS
>>363
長くなるので一部省略します。
if(fullScreen)
screenSrf = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE | SDL_FULLSCREEN | SDL_DOUBLEBUF);
else
screenSrf = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
while(1) {
static int px = 0;
SDL_Rect area = {0, 0, 640/2, 480};
SDL_FillRect(screenSrf, NULL, SDL_MapRGB(screenSrf->format, 255, 255, 255));
if(px > 640 / 2) px = 0;
else px++;
area.x = px;
SDL_FillRect(screenSrf, &area, SDL_MapRGB(screenSrf->format, 0, 0, 0));
SDL_Flip(screenSrf);
waitByFPS();
printf("FPS=%d\n", nowFps);
}
365: 362 [sage] 04/02/04 11:44 ID:URHwb4SZ(2/3) AAS
waitByFPSの中身です。
static void waitByFPS() {
Uint32 nowtime,lefttime;
static Uint32 lasttime=0;
const Uint32 interval=1000/fps;
nowtime = SDL_GetTicks();
lefttime = lasttime+interval-nowtime;
if(lasttime+interval>nowtime) {
SDL_Delay(lefttime);
lasttime=nowtime+lefttime;
nowFps = fps;
} else {
nowFps = 1000 / (nowtime - lasttime);
lasttime=nowtime;
}
}
変数fpsはint型で60、nowFpsには現在のFPSが入っています。
366: 362 [sage] 04/02/04 11:50 ID:URHwb4SZ(3/3) AAS
っと、ここまで貼ったのですが、このプログラムの場合、
フルスクリーンにしたときにFPSが下がるのではなく、
何も写らなくなってしまいます。
問題が発生した元のプログラムも、どうやらSDL_FillRect又はSDL_Flipに
時間がかかっているのではなく、画面が実際に更新されていないだけのようです。
(つまり、nowFpsにはちゃんと60が入っている)
機種固有の問題でしょうか? よろしくお願いします。
367(1): 名前は開発中のものです。 [sage] 04/02/07 11:16 ID:X+ZonyxN(1) AAS
>>362
以下の環境で試してみましたがどの環境でも
フルスクリーン,ウィンドウモードの両方とも
正常に画面は更新されました。
ThinkPad X30, WinXP, cygwin + SDL 1.2.6
自作PC, Win2k, MinGW + SDL 1.2.6
自作PC, Linux2.4.22, SDL 1.2.5
# せめてコンパイル可能なプログラムを…
368: 362 [sage] 04/02/07 20:35 ID:O0CtMFQf(1) AAS
>>367
ありがとうございます。そんなにたくさんの環境で...
やっぱり環境固有の問題みたいですね。
# 途中省略ってのはまずかったみたいですね。
# いや、ソース読むだけで判断するかなと...
# 想像以上に親切で迷惑をかけてしまったようです。スイマセン
369: 名前は開発中のものです。 [sage] 04/02/23 10:47 ID:E1aLNUXa(1) AAS
SDL version 1.2.7 リリース!
ってことで保守
370(3): ◆8fOTfwdIi. [sage] 04/02/25 04:31 ID:1WNUyKXe(1) AAS
SDL_archive っての作ってみたよ。
アーカイブファイルを元に内部のファイルのインデックス作って、
そこから SDL_RWops を生成できるってもの。
外部リンク:qas.sourceforge.jp
VisualC++ と BCC のビルド環境しか入れてないから
gcc な人とかは自分で全ファイルをコンパイル&リンクして適当に作ってくだちい。
371(1): 名前は開発中のものです。 [sage] 04/02/26 22:15 ID:dtKYNn6B(1) AAS
>>370
そこに置いてあるpatchって本家にマージせんの?
372: ◆8fOTfwdIi. [sage] 04/02/27 02:26 ID:6UxR2Ywv(1/2) AAS
>>370
ちょっと本職が忙しくて睡眠時間すら削り取られてて、本家に投げる暇が無いのよ。
それに英語苦手なもんで……誰かパッチ投げだけやってくれる人いないかな。
373: ◆8fOTfwdIi. [sage] 04/02/27 02:33 ID:6UxR2Ywv(2/2) AAS
間違えた。>>371
374: 名前は開発中のものです。 [sage] 04/03/01 21:32 ID:4drL0pqW(1) AAS
SDL_gfxのImageFilterって使い方がいまいち分からない。
Test/ディレクトリにあるサンプルは適当な配列をいじってベンチマークしてるだけだし。
どっかに実際に使ってるdemoとかgameありませんか?
375: 名前は開発中のものです。 [sage] 04/03/13 09:27 ID:F3vxQxJh(1) AAS
SDL_net使ってるのですが、SDLNet_SocketSetの使い方がわかりません。
これにcliantのsocketをSDLNet_AddSocket()で登録していくのだろうなーというのは
なんとなく察しがつくんですが、ここに登録したcliantに対して操作する場合、
どのようにしたらいいんでしょうか?
ドキュメントにはポインターです、としか書かれてなかったのですが、
クライアントsocketポインタの配列みたいな役割になっているのでしょうか?
SDLNet_SocketSet socketset;
SDLNet_TCPsocket i;
for (i=(SDLNet_TCPsocket)socketset; *i!=NULL; i++) {
len = SDLNet_TCP_Recv(i, message, 1024);
printf ("Received: %.*s\n", len, message);
}
みたいな感じにすればいいのかな?
376: 名前は開発中のものです。 [] 04/03/13 11:02 ID:KWP+lz2i(1/2) AAS
ドキュメントを読む限り、SocketSetからそれにaddしたソケットを取得する手段は無いんじゃない?
こんなかんじ?
SDLNet_SocketSet sockset;
SDLNet_TCPsocket sock[10];
SDLNet_TCP_AddSocket(sockset, sock[0]);
SDLNet_TCP_AddSocket(sockset, sock[2]);
:
SDLNet_TCP_AddSocket(sockset, sock[9]);
if (SDLNet_CheckSockets(sockset, 1000) > 0) {
for (i = 0; i< 10; i++) {
if (SDLNet_SocketReady(serversock)) {
SDLNet_TCP_Recv(sock[i], message, 1024);
}
}
}
377: 名前は開発中のものです。 [sage] 04/03/13 12:58 ID:KWP+lz2i(2/2) AAS
× if (SDLNet_SocketReady(serversock)) {
○ if (SDLNet_SocketReady(sock[i])) {
だった。
要するにselect()のfdsetと同じ役割と考えるとわかりやすい(というか実際に同じか)。
378(1): ◆8fOTfwdIi. [sage] 04/03/15 00:02 ID:RaMRNtCE(1) AAS
うがー
サイトをインチキ英訳して、
SDL 本家の ML に Mix_LoadMUS_RW() パッチ作ったよーって投げてみたよ。
外部リンク:qas.sourceforge.jp
ML 見てる分には、たまーに
「Mix_LoadMUS_RW() は実装されないの?」
って発言を見かけるから、少しは需要あるかなー。
379: ◆8fOTfwdIi. [sage] 04/03/15 08:24 ID:pf2gfzpT(1) AAS
「それ、一昨日俺が欲しいって言ったヤツだよ!」
って返事が来たんだけど、
本家に取り込んでもらうにはどうすりゃいいんだろう。
「commit してくれ」ってそのまんま頼めばいいのかな。
す、スレ違い?
380: 名前は開発中のものです。 [sage] 04/03/15 08:57 ID:k6ohdd5m(1) AAS
Sam Lantinga氏にmailを直接送ってみれば?
新機能の追加なのですぐにcommitされるか微妙ですが
なんらかの返信はすぐに来るはず。
怒られるようなことは、まずないと思います。
381(3): 名前は開発中のものです。 [sage] 04/03/21 17:30 ID:Nmo/42G+(1) AAS
SDL1.2.7をコンパイルしてみたのですが、SDL_cpuinfoの__asmで
cmp命令とmov命令の一部がアセンブラ構文エラーになって弾かれてしまいます。
WinXPかVC++5が悪いのかな。他の人はこういうふうにはならないのでしょうか?
今からVC6なんて手にはいらないし、.netならいいのかなぁ?
382: 名前は開発中のものです。 [sage] 04/03/24 23:18 ID:vYURZF4R(1) AAS
>>381
今VC5を使ってる人ってほとんどいないような希ガス。
だからそれだけの情報じゃぁなかなか答えようがないと思うよ。
とりあえず該当部分のコード晒してみるのはどう?
そーいうオレ自身ももっぱらMinGWなんでさっぱり分からんのだが。
383(1): 名前は開発中のものです。 [sage] 04/03/25 10:56 ID:06E5ih+O(1) AAS
>>381
想像ですが、cpuidの直後で引っ掛かってるんでないかと。
VC5にはcpuidがないとかいう噂を聞いた覚えがあります。
cpuid絡みならもしかすると、ソースの頭に
#define cpuid __asm _emit 0x0F __asm _emit 0xA2
を入れれば上手くいくかも。
自分はVC6で、今やってみたら1.2.7も普通にコンパイルできますな。
384: 名前は開発中のものです。 [sage] 04/04/05 08:17 ID:/ekkDjoX(1) AAS
SDLを最近delphiで始めました。
win32appを作るのに近い感覚で作れてなかなか良いですね。
ただ資料、特にdelphiのものは皆無といっても良いほど内のが玉に瑕。
今度入門ページとか作って見様かなぁ
385: 381 [sage] 04/04/07 01:48 ID:Wn2bWE/g(1) AAS
遅レスすまそ。
やっぱりコンパイラの問題かなぁ。
VC.netを購入する理由が別にできてしまったので、
それでコンパイルしてみることにします。
で、それでもダメだったら>>383さんのを参考にしてみまつ。
386: 名前は開発中のものです。 [sage] 04/04/13 00:18 ID:R3klDjkd(1/2) AAS
質問です。SDL_mixerって何音同時再生できますか?
waveをたくさん重ねて鳴らしたいのですが。
上下前次1-新書関写板覧索設栞歴
あと 601 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.023s