SDL=Simple DirectMed ..
[2ch|▼Menu]
294:デフォルトの名無しさん
07/04/23 07:32:03
便乗して恥ずかしい質問してみるけど、Alt+F4ってどう実装してる?
メインループのPollEventで、下のようにやってもAltを認識してくれないぽ
環境はwin2k、DevC++(gcc+mingw)、SDL1.2.11

bool PollEvent(){
 SDL_Event ev;
 while(SDL_PollEvent(&ev)){
  switch(ev.type){
   case SDL_QUIT:
    return false;
    break;
   case SDL_KEYDOWN:
    if((ev.key.keysym.sym == SDLK_F4) && (ev.key.keysym.mod == KMOD_ALT)) return false;
    break;
  }
 }
 return true;
}

295:デフォルトの名無しさん
07/04/23 11:38:35
ev.key.keysym.mod & KMOD_ALT

296:デフォルトの名無しさん
07/04/23 22:32:25
泣いた

サンクスコ
それだとうまくいきました
ビットごとに違うフラグあるんだから全体を==で比較しちゃ駄目ですね

297:デフォルトの名無しさん
07/05/09 15:20:17
SDL_ttfのこの辺って戻り値が参照渡しだけど、もしかしてこの関数内でサーフェス用に確保されたメモリってほったらかしだと解放されないで、新しく確保した領域にポインタが更新されるだけ?
ループの中でテキスト生成させてたら、秒速1MBでメモリ増えてくんだけど(;'A`)
>SDL_Surface *TTF_RenderUTF8_Solid(TTF_Font *font, const char *text, SDL_Color fg)

298:デフォルトの名無しさん
07/05/09 15:47:56
>>297
SDL_ttfの戻り値は自分で開放するもんだ.
ってかループ中に使うものじゃない.

299:デフォルトの名無しさん
07/06/17 15:03:37
あげ

300:デフォルトの名無しさん
07/06/20 14:35:46
さてこれからC++とSDLで勉強しようと思う俺様が通りますよ



301:デフォルトの名無しさん
07/06/20 21:19:00
>300
とりあえず初心者の〜に行ってこい


302:デフォルトの名無しさん
07/08/13 17:37:28
SDL1.2.12になってからVisualC++ 2005 EE SP1でコンパイルしても実行出来なくなったんですが
原因が分かる方居ますか?

303:デフォルトの名無しさん
07/08/19 20:16:49
1.2.12いれたら -ansiオプションで警告出たのでなんだろと思ったら
SDL/begin_code.hの93,94行目のコメントがC++形式だった


304:デフォルトの名無しさん
07/08/19 21:43:36
>>303
ほんとだw
svn見てみたらそっちは直ってたよ

305:デフォルトの名無しさん
07/08/19 23:13:34
URLリンク(www.freewebs.com)

306:デフォルトの名無しさん
07/09/07 11:32:36
移転先

SDLスレ ver.2.0
スレリンク(gamedev板)

307:デフォルトの名無しさん
07/09/07 17:46:02
>>306
さよなら。いってらっしゃい。

↓続きをドゾ

308:デフォルトの名無しさん
07/09/27 23:59:43
SDL使ってゲームを作り始めました。ここで質問なんですが、
SDL_GetKeyState()はゲームのメインループ1回に1度呼び出すのと、
SDL_PollEvent()でSDL_KeyboardEventを拾った時に呼ぶのとどっちがいいんでしょう?
前者では常にそのタイミングでスキャンでき、
後者ではOSがイベントを中継する分だけ(処理落ちが激しいときなどでは)反応が遅れる可能性があるが
キーボードに触れられなければSDL_GetKeyState()が呼ばれないためその分軽い(1msも掛からないと思うけど・・・
ということじゃないかと考えているのですけど、一般的にはどちらが使われる、とかありますか?

あと、SDL_PollEvent()でイベントが何もきていないときにゲームメインループを進めているのですが、
ウィンドウのタイトルバーを右クリックしてポップアップメニューが表示されている間や、
タイトルバーをドラッグしてウィンドウが動いている間などはゲームメインループが進みません。
こういった状態でもゲームメインループをまわすにはどうしたらいいですか?
(Windowsでの話です。)

309:デフォルトの名無しさん
07/09/28 03:28:33
>>308
普通は毎フレーム呼ぶんじゃないかな?
ソース読めばわかるけど SDL_GetKeyState() は実はポインタを返すだけの処理だから
どっちでも大差ないだろうけど.最適化を考えるなら1フレームあたり1回しか
呼ばれない低負荷の関数コールを削ることを考えるよりもどこがボトルネックに
なっているか調べてほかに重い場所を探したらいいと思うよ?

# 実は最初に一回呼んでポインタを保存しておいてループ内ではそれを参照するとかでも
# 動く気がするけどその動作が保証されてるわけじゃないから…まぁ適当にやってくれ

310:308
07/09/28 22:57:22
>>309
ありがとうございました。ポインタを返すだけだったのか!

311:デフォルトの名無しさん
07/10/08 10:02:45
SDL 1.3の新機能についてRyanさんが書いてる。
URLリンク(icculus.org)


312:デフォルトの名無しさん
07/10/08 12:51:23
ついにマルチウィンドウが来ますな。
過去互換性も整理する方向みたいね。
いつ頃投入予定なのかな?SDL1.3

313:デフォルトの名無しさん
07/10/08 12:59:24
マルチウィンドウ出来たら Gtk+ の代わりに使えるかな

314:デフォルトの名無しさん
07/10/08 13:27:31
それはパーツの種類が少ないからムリだと思う。
SDLの上にウィジェット・ツールキットを構築するのはありだと思うけど。


315:デフォルトの名無しさん
07/10/12 01:34:04
RubyでSDLを弄り始めたんですが、これはスタンドアロン専用ですか?
CGIでは使えない?

316:デフォルトの名無しさん
07/10/12 02:49:11
>>315
CGIで何に使うんだ?画像生成とか?

317:デフォルトの名無しさん
07/10/12 03:38:31
>>316
CGIと言うか、RubyとかWEBアプリ用と聞いたので、
当然ライブラリとかもWEB上で使えると思ったんだけど・・・

318:デフォルトの名無しさん
07/10/12 03:51:17
RubyがWEBアプリ用とかいう認識が根本的に間違ってることを理解してくれ
# まぁ向いてる分野ではあるけど

319:デフォルトの名無しさん
07/10/12 13:09:09
> RubyとかWEBアプリ用と聞いたので、
違うよ。全然違うよ。

> 当然ライブラリとかもWEB上で使えると思ったんだけど・・・
なんで?WEB上ってどこで?
普通、クライアントサイドで動かす、SDLを
サーバーで動かす利点は何だろう?



320:デフォルトの名無しさん
07/10/12 17:39:12
>>317
そもそもその情報をどこで知ったの?


321:デフォルトの名無しさん
07/10/12 18:23:09
SDLと関係ない話になりそうな流れだな……。
別にもうこれ以上掘り下げなくてよくね?

322:デフォルトの名無しさん
07/10/13 05:23:23
Ruby/SDLで書いたゲームスクリプトを投稿すると
サーバの向こう側に常時待機しているおっさんがそれを遊んで
スコアを返すWebアプリを思いついた

アイデアの権利は放棄するからお前ら自由に実装していいぞ

323:デフォルトの名無しさん
07/10/13 10:07:22
なんでおっさん限定なんだよww

324:デフォルトの名無しさん
07/10/13 12:41:29
何その、サーチエンジンはやぶさ

325:デフォルトの名無しさん
07/10/19 22:34:05
複数のテキストをOpenGLの画面に渡すためにSDL_ttfを使っているのですが、

TTF_RenderUTF8_Solidして作ったいくつかのSDL_Surfaceを、
SDL_BlitSurfaceで、既にOpenGLのフォーマットにしてある大きなサーフィスにコピーして集めて画面をつくり、
その大きなサーフィスをglTexSubImage2DでOpenGLテクスチャとして更新して表示

という方法で、やりたいことはできたのですが、
テキスト1行1行を別々のテクスチャとして扱いたかったのに加えて、
ここの処理だけSDL側でコピーするのも気持ち悪いな、と思い、

TTF_RenderUTF8_Solidして作ったSDL_Surfaceを
SDL_ConvertSurfaceを用いてOpenGLのフォーマットに変換して、
glTexSubImage2DでOpenGLのテクスチャを部分更新して転送する

という方法に変えたところ、テキストのテクスチャの背景部分が透過されなくなってしまいました。
OpenGLテクスチャ上では、文字部分はα値1でカラー値さまざま かつ 文字の無い部分はα値0で完全に透明
にしたいのですが、どうしたらいいのですか?

もともとの方法では、SDL_BlitSurfaceの時に、TTF_RenderUTF8_Solidの作ったサーフィスの文字の無い部分は
自動的に透過されたのですが、SDL_ConvertSurfaceをする場合は、同じように透過されないのでしょうか?

326:デフォルトの名無しさん
07/10/20 04:00:34
>>325
ConvertSurfaceでできたSDL_Surfaceの pixel 値を
覗いてみて希望の状態になってるか見てみれ

327:デフォルトの名無しさん
07/10/20 21:34:26
>>326
ありがとうございました、解決しました。
覗いてみたところ、透過したいところのαが0、表示したいところのαが255、と、
OpenGL側の透過値と全く反対で扱われていました。
gl側の混合処理で、GL_SRC_ALPHAからGL_ONE_MINUS_SRC_ALPHAにしたらうまくいきました。
解決のヒントを与えてくれてありがとうございました。

328:デフォルトの名無しさん
07/11/24 15:09:08
補助ライブラリを日本語で紹介してるサイトないですか?

329:デフォルトの名無しさん
07/11/25 14:27:29
ひょっとしてこのライブラリもう誰も使ってない?

330:デフォルトの名無しさん
07/11/25 14:28:27
結構使われていると思うけど

331:デフォルトの名無しさん
07/11/26 02:59:31
>>329
解説が必要なほど複雑なAPIないからなぁ…

332:デフォルトの名無しさん
07/12/08 06:48:31
325とは逆に作ったサーフェスに全く表示されないのを一晩悩んだ漏れが来ましたよ
FillRectで特定の値書き込んだ所や貼り付けた特定の画像上だけしか重ね貼りした画像表示しなくて、
真っ黒な0でのFillRectと並べてやっと気付いたorz

もう弄りすぎてソースが焼きそば並にぐちゃぐちゃだぜ

333:デフォルトの名無しさん
07/12/09 00:25:56
SDLで半透明ウインドウできますか?

334:デフォルトの名無しさん
07/12/28 00:39:37
cairoとの相性いいみたいですね
フォントとか画像ファイル関係はcairoで代用できそう

335:デフォルトの名無しさん
08/01/05 01:27:38
板違いだったらすいません。

ちょっと質問なんですが、Ruby/SDLを使用しようと思って、必要なものをインスコして、
プログラムを書き、コンパイルしたら、

ALSA lib confmisc.c:数字
ALSA lib conf.c:数字
ALSA lib pcm.c:数字

こういうものが多数出てきて、実行できませんでした。

環境は、Linuxのubuntu7.10を使っています。
SDLやRuby/SDLは元々入っていたものをパッケージャから入れました。

どうしたら実行できるでしょうか?

336:デフォルトの名無しさん
08/01/06 00:41:57
こういうものが多数・・・と手書きするんじゃなくて
可能な限りをコピー&ペーストしなさい
数字の後にもエラーメッセージ続いてたろ?

337:デフォルトの名無しさん
08/01/07 01:23:00
>>335です。
実行できなかったのは、ソースファイルの打ち間違いでした。すいません。
しかし、>>335に書いたエラーが出てから実行されます。

>>336
すいません。VMwarePlayerでLinuxを使っていて、
それではネットにつなげるように設定していなかったので
コピペできませんでした。

ALSA lib confmisc.c:769:(parse_card) cannot find card ''
ALSA lib conf.c:3510:(_snd_config_evaluate) function snd_func_card_driver returned error: No such device
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:3510:(_snd_config_evaluate) function snd_func_concat returned error: No such device
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:3510:(_snd_config_evaluate) function snd_func_refer returned error: No such device
ALSA lib conf.c:3982:(snd_config_expand) Evaluate error: No such device
ALSA lib pcm.c:2144:(snd_pcm_open_noupdate) Unknown PCM default

これが出てたエラーです。

338:デフォルトの名無しさん
08/01/17 00:25:47
マルチプラットフォームなこのライブラリですが
多少の手直し程度の移植可能(なように作れる)プラットフォームは
どれとどれでしょうか?

339:デフォルトの名無しさん
08/01/17 01:02:45
>>337
サウンドデバイスが見つからないと言っている

>>338
Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX.

340:デフォルトの名無しさん
08/03/03 05:22:10
SDL_ttfについて質問です
TTF_RenderText_Solid等をして返ったサーフェースは自分でSDL_FreeSurfaceで開放しなくてはいけませんか?

341:デフォルトの名無しさん
08/03/03 13:55:39
>>340
開放しなくてはいけませんか?(Y/yes)

342:デフォルトの名無しさん
08/03/03 22:14:36
>>340
開放しなくても、プログラムが止まることは無いでしょう(多分)
なので開放しなくても大丈夫です

343:デフォルトの名無しさん
08/03/04 02:12:30
毎フレームフォントをラスタライズするようなアホプログラムなら直ぐに止まりそうだけどね…

344:デフォルトの名無しさん
08/03/08 18:26:01
>>340
毎フレームフォントをラスタライズかつ開放しないアホプログラムを実行してタスクマネージャのメモリの項を見ましょう

つかやっぱり毎回作っては開放してって重いのかな('A`)

345:デフォルトの名無しさん
08/03/08 18:40:37
サーフェスに文字を詰め込んでいって
毎フレーム自分でレイアウトして描画するようにしたほうがいい気がする
ちょっと面倒だけど作ってしまえば更新頻度とか気にせず使える

346:デフォルトの名無しさん
08/03/08 18:45:07
>>344
毎フレームってことなら当然糞重いでしょ。
サイズにもよるが、メモリの確保&解放だけで結構なボトルネックになるとみた。
既存サーフェスに描画してくれる機能ってあったっけ?

347:デフォルトの名無しさん
08/03/15 21:48:06
sage

348:デフォルトの名無しさん
08/04/11 00:41:48
あげ

349:デフォルトの名無しさん
08/06/14 07:06:13
320x224の解像度でフルスクリーンにすると画面が90度回転してしまうんですが、
解像度は変えないか320x240でこれを発生させない解決方法ってないでしょうか?


350:デフォルトの名無しさん
08/06/15 03:38:37
>>349
環境くらい書いたら?

351:デフォルトの名無しさん
08/06/15 10:22:11
すっかり忘れました。ごめんなさい。

ハードはThinkPad X60s
Win XP + Mingw GCC + SDLソースインスコ
です。


352:デフォルトの名無しさん
08/06/15 13:31:05
PCEngineのエミュレータでも作ってるのかね

353:デフォルトの名無しさん
08/06/22 08:59:52
先生!こんなのありましたけど、昔ながらの行番号BASICからSDLが使えるんですか?

SDL_basic
URLリンク(www.libsdl.org)

354:デフォルトの名無しさん
08/06/26 22:43:48
解像度を640*480にする



最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5379日前に更新/69 KB
担当:undef