X



SDL=Simple DirectMedia Layerでゲームだ
■ このスレッドは過去ログ倉庫に格納されています
0481デフォルトの名無しさん
垢版 |
2011/02/12(土) 21:07:20
なんかSDL 1.3色々変わってるね。
個人的にはSDL rendering APIの変更が結構影響大きかった。
0482デフォルトの名無しさん
垢版 |
2011/02/13(日) 00:36:42
SDL 1.2 だけど、
Mac で SDL Application テンプレートで作った時、
メニューを作ってくれる割に Command+Q(終了)とかが効かないんだけど、
自分で実装しないといけないの?
Command+Q はともかく Command+H(隠す)とか Command+M(最小化)とか
Cocoaよく知らないからめどいし
Macかどうかで処理の分岐が必要になるのが嫌なんだけど仕方ないのかね
0483デフォルトの名無しさん
垢版 |
2011/02/13(日) 03:24:12
>>482
SDL が使われる主要な目的を考えると、Command+H 等が勝手にメニュー処理に
取られちゃったら困るんじゃない?

それらの処理を自分で実装するのはそれほど難しくないと思われ。
mac.m みたいなファイルを作って Mac OS X 専用のルーチンをまとめておけば
ソースコード上もスッキリするんじゃないかな。
0485デフォルトの名無しさん
垢版 |
2011/02/13(日) 04:56:51
>>483
確かにフルスクリーンでも効いちゃったら困るとかありそうなので自前で実装した
なるべく#ifdef使いたくなかったけどこれは仕方ないね・・・
0486デフォルトの名無しさん
垢版 |
2011/02/13(日) 13:54:25
Command+Qで終了するのを自前で実装したけど、
終了直前にビープ音らしき音が鳴るのが気になる。
SDLのイベントでキー判定しているのがまずいのだろうか…
0488486
垢版 |
2011/02/13(日) 18:01:19
>>487
無効なキー入力をしたときに鳴る音と同じ音が鳴るんだよね。
たとえばアプリ実行中にCommand+Aなどの無効なキーを入力するとビープ音(うちだとFunk)が鳴るんだけど、
その音が鳴りながらアプリが終了する(のでビープ音も途中までしか鳴らない)。
具体的には以下のコードみたいに終了イベントやキーを受け取ってメインループを終わらせてる。
もっとちゃんとショートカットキーを実装する方法があるのかな。

SDL_Event event;
while (SDL_PollEvent(&event)) {
 if (event.type == SDL_QUIT ||
  event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_CLOSE ||
  event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_q && (event.key.keysym.mod == KMOD_LGUI || event.key.keysym.mod == KMOD_RGUI)) {
  done_ = true; // メインループを抜けさせる
 }
}
0489デフォルトの名無しさん
垢版 |
2011/02/13(日) 18:40:33
俺はCommand+Qで終わる時は
SDL_QuitEvent event = { SDL_QUIT };
SDL_PushEvent((SDL_Event*)&event);
って終了イベント投げてるけど
そもそも無効なキー入力で音が鳴るという現象がうちは無いんだよな・・・
どんなキーでも押せば全部SDL_KEYDOWNに流れてくるので
有効無効とかがそもそもない気がする
0490デフォルトの名無しさん
垢版 |
2011/02/13(日) 21:09:11
>>489
短いテストコードを書いてSDL 1.3、SDL 1.2のそれぞれhg先端を使ってコンパイルしてみた。
Command(RMATAまたはLMETA)+Q を押すと0.5秒待った後アプリ終了。
0.5秒待つのは音が鳴るのを確認するため。
http://ideone.com/TiLg8
SDL 1.2 … Command+Qなどを押しても音が鳴らない。
SDL 1.3 … Command+Qなどを押すとビープ音が鳴る。
ということで今のところ「SDL 1.3を使う」が原因っぽい。
対応は考え中だけど、深追いするとハマリそう…
0493デフォルトの名無しさん
垢版 |
2011/03/20(日) 16:51:40.03
SDL_image を使ってpng画像を使えるようにしようと思って
gccを使ってコンパイルまでできたのですが、
実効しようとしたら以下のようなメッセージが表示されて実行できません。

libpng warning: Application was compiled with png.h from libpng-1.4.2
libpng warning: Application is running with png.c from libpng-1.2.43
libpng error: Incompatible libpng version in application and library

どういう意味なのでしょうか?
解決策を教えてください。お願いします
0496デフォルトの名無しさん
垢版 |
2011/03/20(日) 20:01:21.80
SDL_imageをコンパイルした時に使ったlibpngのバージョンと
実行するときに使おうとしてるlibpngのバージョンが違う
0498デフォルトの名無しさん
垢版 |
2011/05/06(金) 02:01:30.70
短い音だとやっぱMix_PlayChannelが終了する前に
Mix_ChannelFinishedで登録した関数がコールバックされる事とか、
もっと言えば終了とコールバックが同時実行されるとか、
何も対策しなければスレッドアンセーフな状況になるの?
0499デフォルトの名無しさん
垢版 |
2011/06/26(日) 00:04:41.93
2バイト文字と1バイト文字が混載しているテキストデーターから文字を1文字ずつ切りだして
SDL_ttfのTTF_GlyphMetrics()関数の第2引数に送って第7引数のトータルの文字幅を求めるコードが必要になったんだが
Unidodeに変換するためにiconvを使うとしたらどういう実装にすればいいかな?
0500デフォルトの名無しさん
垢版 |
2011/09/21(水) 07:47:59.30
SDL.dllだけ1.3に差し替えたら
SDL_imageがセグメンテーションエラー起こしやがった・・・
imageも作りなおさないといけないのか・・・
0502デフォルトの名無しさん
垢版 |
2011/09/21(水) 16:09:02.53
たぶん、全然別物だって知らなかったんでしょ。
1.2.14→1.3って番号だけ見ると互換性ありげだし。2.0とかにしちゃえばいいのにね。
0503デフォルトの名無しさん
垢版 |
2011/09/22(木) 23:53:21.86
英語ブログでオッサンが
1.3とsdl-imgeでvery fineみたいなこと言ってたから
とりあえずぶち込んでみたんだ
なんかjpegがビルド失敗するしあきらめるか
0506デフォルトの名無しさん
垢版 |
2011/10/31(月) 13:22:04.20
>>505
新しい方のページにzlibライセンスって書いてあるし、パッケージ本体にもそう書いてある。
1.2時代のページには1.3もLGPLとか書いてあって紛らわしいな。

とはいえ、sdl_imageとかsdl_mixerなんかzlibライセンスにならない限り、あんまり意味無いかも。
0507デフォルトの名無しさん
垢版 |
2011/10/31(月) 18:12:26.94
SDL 1.3は今年の4月頃にzlibライセンスへ移行したけど、
ウェブサイトの更新はちょうどライセンス切り替え直前あたりで止まってる模様(hgのsdlwebのログで確認)。
指摘すれば更新してくれるんじゃないかな。
0509デフォルトの名無しさん
垢版 |
2011/11/20(日) 14:24:20.08
いえいえ
0510デフォルトの名無しさん
垢版 |
2011/12/28(水) 22:57:52.19
SDLで簡単なアニメーション(とキー受付)をしたいのですが、そのプログラムで使う変数の値をどうやって入力しようか思案中です。
最悪の場合設定ファイルをテキスト形式で用意する案も考えていますが、もうすこしユーザーフレンドリーな入力方法としてwxWidgetsを使えないかと考えています。
wxWidgetsからSDLプログラムを走らせると速度が遅くなったりしますか?(というか、そんなことは可能ですか?)
他にもなにかお勧めの方法があったら教えてください。

0516デフォルトの名無しさん
垢版 |
2012/03/16(金) 21:00:50.52
あげ
0517 【18.5m】
垢版 |
2012/03/17(土) 21:03:26.56
SDLでEAXみたいな3Dサウンドって出来ないんでしょうか
0519 【20.5m】
垢版 |
2012/03/18(日) 01:40:21.90
出来ないんですね。
ありがとう
0520デフォルトの名無しさん
垢版 |
2012/03/18(日) 02:00:26.11
SDL_mixer:

Mix_SetPosition
角度と距離を指定すると音の位置が変化する

Mix_RegisterEffect
効果音単体・出力直前のバッファを弄れるフック関数を登録する
chanがMIX_CHANNEL_POSTの時、streamにBGM・効果音合成済みの出力直前バッファが渡される
もちろん3Dな音響を適用するエフェクトは全て自作していく

Mix_SetPostMix
出力直前のバッファを弄れるフック関数を登録する
streamにBGM・効果音合成済みの出力直前バッファが渡される
こちらもエフェクトは全て自作していく
Mix_RegisterEffectと共存OK
0524デフォルトの名無しさん
垢版 |
2012/07/30(月) 02:00:02.32
SDL_mixerとSDL_imageが全然動かない・・・
libogg.dll, libvorbis.dll, libvorbisfile.dllをビルドして置いても
MIX_INIT_OGG指定すると初期化に失敗するし、
libpng15.dllをビルドして置いても
IMG_INIT_PNG指定すると初期化に失敗するし、
もう訳分からん・・・
0525デフォルトの名無しさん
垢版 |
2012/07/30(月) 02:26:48.15
画像に関してはBMPにすれば何とかなるかもしれないが
音楽は流石にWAVにするのはきつい・・・
どうにかならないものか
0526デフォルトの名無しさん
垢版 |
2012/07/30(月) 02:30:32.42
>>524
何かエラーメッセージは無いの?
エラー発生直後にSDL_GetError()の戻り値は確認してる?
0527デフォルトの名無しさん
垢版 |
2012/07/30(月) 02:49:57.37
おおう、要求されるDLL名が
デフォルトで作成されるものと違っていたようです
ありがとうございました
0528uy
垢版 |
2012/07/30(月) 09:30:39.42
ちょっと使ったことあるけど、
このライブラリ煩雑すぎじゃね
SDLをもう一段階ラップしないと使い物にならない
0529デフォルトの名無しさん
垢版 |
2012/07/30(月) 09:45:29.16
全員がそうではないけど、
そうしないと使えない人がいてもおかしくはない。
0532デフォルトの名無しさん
垢版 |
2012/08/17(金) 23:55:49.35
c
0533デフォルトの名無しさん
垢版 |
2012/08/26(日) 01:28:22.16
MacのSnow LeopardでSDLをフルスクリーンにすると
画面真っ黒でOSに戻れなくなる件は治ったんだろうか…
0534片山博文MZパンク ◆0lBZNi.Q7evd
垢版 |
2013/04/08(月) 21:35:19.34
あげ
0536デフォルトの名無しさん
垢版 |
2013/04/18(木) 01:15:31.10
あるピクセルが透過ピクセルかチェックする処理を作っています。
32bit(ARGB)surfaceの場合、A値が255かチェックすれば良いと思って
IMG_Loadで透過なしARGB(32bit)pngを読み込んでみたところ
surface->pixelsをみたらAが0x00になってました
透過なしなら0xffが正しいと思うんです
透過かどうかの判断材料は他にあるんでしょうか

SDLのバージョンはSDL 1.2.14、SDL_image 1.2.12です
0539デフォルトの名無しさん
垢版 |
2013/04/18(木) 22:38:19.63
>>535
32bit RGBAの空サーフェス作って、それのpixelsにデコードしたのぶっこむ。
当然フォーマットはきちんと(8ビットづつ)RGBAの位置を設定してからサーフェス作ること。
ここまでちゃんとできたら、後はBlitSurfaceしてやりゃ自動でフォーマット変換やってくれるから、マシンやターゲットの色表示ビット数は考慮しないでいい。
0543デフォルトの名無しさん
垢版 |
2013/06/03(月) 03:38:44.57
SDL 2.0.0のリリース候補版が出た模様。
Windows x86/x64とMac OS X intel向けバイナリも用意されている。
0545デフォルトの名無しさん
垢版 |
2013/07/26(金) NY:AN:NY.AN
SDLのイベント処理の使い方がいまいちわからないんだけど、どういうふうに使うものなのかな?

今までDXライブラリを使ってきたけど、プレイヤーのキー操作は
必要になったときにだけ関数で取得してた。
だから、すべてのオブジェクトを1フレームに1回更新するって時にも
オブジェクトにとって必要になったときだけキー入力を取得して更新してた。

SDLのリファレンスのイベントの例だと、
『キー入力イベントが発生してたら、それが「→」キーかどうか判断して右に数ピクセル移動する』
みたいな感じだったけど、これは上記みたいに「すべてのオブジェクトを1フレームに1回更新したい」
時にはすごく相性が悪そう。(1ループ中にいろんな種類のイベントが複数回発生するから)
0546デフォルトの名無しさん
垢版 |
2013/07/26(金) NY:AN:NY.AN
>>545
SDL_JoystickGetButton とか SDL_GetKeyState (2.0からはSDL_GetKeyboardState) とかそのへんは?
自分の処理の仕方に合わせて好きな方使えばいいんじゃね
0547デフォルトの名無しさん
垢版 |
2014/02/23(日) 09:02:38.60
何これ
0548デフォルトの名無しさん
垢版 |
2014/02/27(木) 08:47:31.12
DirectXのパクり
0552デフォルトの名無しさん
垢版 |
2014/03/01(土) 07:57:38.26
DirectXも9なら枯れてるだろ。
0556デフォルトの名無しさん
垢版 |
2014/03/01(土) 17:06:47.95
SDLのSurfaceにOpenGLを描画してるんでねーの?
勉強に、使うか使わないか分からないDirectXみたいな複雑なものなんて触りたくない
0558デフォルトの名無しさん
垢版 |
2014/03/02(日) 17:53:08.67
だな
0559デフォルトの名無しさん
垢版 |
2014/03/03(月) 01:38:31.03
子供の頃にゲームを作りたいって思っても、年取るとゲームを作ろうって気力が無くなるな
0560デフォルトの名無しさん
垢版 |
2014/03/03(月) 09:51:29.46
小さいものでも作ってみて、「ああ、楽しいな」って思えればいいんだけどな。
自己効力感というか。
まあ、気力のでない理由なんて人それぞれだとは思うけど、
こういうスレ覗いてるなら誰しも作りたい気持ちはあるはずだし、
やる気のでないことも誰しもあると思うんで、負けないでほしいよね。
スレチの上に長文だね。すまんね。
0562デフォルトの名無しさん
垢版 |
2014/03/05(水) 20:33:33.37
>>559
ゲームって子供しかしないからだと思う

ゲームってプレイするために作られるけど
自分が大人になってから作っても、友達とかもみんな大人になってるからゲームなんてしてくれないじゃん

情熱云々以前にそうした環境が要因だと思われ
0566デフォルトの名無しさん
垢版 |
2014/03/07(金) 20:47:39.13
ネット上に友達なんてできないだろ
0567デフォルトの名無しさん
垢版 |
2014/03/09(日) 09:52:04.72
ネットのお友達って誰?
0572 【9.4m】
垢版 |
2014/08/13(水) 11:01:16.20ID:SU5UHha0
細々と生き残るんじゃないの。
今までと変わりなく。
0576デフォルトの名無しさん
垢版 |
2014/12/20(土) 20:05:09.28ID:CCCAmGOw
SDL_GetMouseState(&x, &y) & SDL_BUTTON(SDL_BUTTON_WHEELUP)みたいな

でも普通にマウスイベントじゃだめなの?
0579デフォルトの名無しさん
垢版 |
2014/12/30(火) 19:14:51.28ID:RaKONNYE
現在画面に表示されてるのが透けて見えるように、半透明で塗りつぶしたいんですけど、
SDL_RenderClearやSDL_RenderFillRectでやると半透明になりませんでした。
どうやればいいんでしょうか?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況