SDLスレ ver.2.0

■ このスレッドは過去ログ倉庫に格納されています
2006/02/28(火) 20:40:12ID:MvXDyxzs
マルチプラットホームな汎用ゲームライブラリの
SDLについてのスレッドです。
最新情報、参考になるソース、質問等なんでもどうぞ

本家
ttp://www.libsdl.org/

SDL_mixer ttp://www.libsdl.org/projects/SDL_mixer/
SDL_image ttp://www.libsdl.org/projects/SDL_image/

SDLdoc-jp ttp://www.tacoworks.jp/software/SDLdoc-jp/
GamDev ttp://gamdev.org/w/?%5B%5BSDL%5D%5D
初心者の初心者による初心者の為のSDL ttp://tokyo.cool.ne.jp/sdl/

前スレ
http://pc8.2ch.net/test/read.cgi/gamedev/1005469181/
2009/02/28(土) 16:52:59ID:VMgU4zCi
>>379
海外か。やっぱ国内のは少ないのか…
見てみる。ありがとう
2009/02/28(土) 17:27:49ID:5UqeQdYc
>>380
ttp://d.hatena.ne.jp/fslasht/20080722#1216721957
2009/03/14(土) 12:14:01ID:9btw4Mc8
質問です。
SDL_DisplayFormatAlphaでα情報を持たせたSurfaceに
SDL_SetAlphaで全体α情報を付加させたいのですが
どうもうまくいきません。
これは仕様で出来ないのでしょうか?
2009/03/14(土) 12:34:44ID:I07kl7uF
>>383
本家のドキュメントWiki( http://www.libsdl.org/cgi/docwiki.cgi/SDL_SetAlpha ) に、
> RGBA->RGB with SDL_SRCALPHA
> The source is alpha-blended with the destination, using the alpha channel. SDL_SRCCOLORKEY and the per-surface alpha are ignored.
とあるので、仕様で不可能になってるんだと思います。
2009/03/14(土) 13:19:06ID:9btw4Mc8
そうですか…
何回やっても出来ないわけだ

素早い回答ありがとうございました。
2009/03/23(月) 16:42:47ID:6VLsDElv
SDLでフルスクリーンを使用するときに、使っているディスプレイでの最大の解像度(1680x1050)でフルスクリーンにしようとするとウィンドウ化、フルスクリーンを繰り返してしまいます
それ以下の対応した解像度(たとえば1440x900)では正常に表示されます
原因として何が考えられますか?
387名前は開発中のものです。
垢版 |
2009/04/06(月) 12:16:57ID:pBRyt7pq
>386
カメレスだが
OSはWindows?
下で動作してる古いDirectXが対応してないとか
2009/05/26(火) 00:29:44ID:TaTh536w
こんなスレあったのか。これこそ俺が求めてたスレ
しかし過疎ってんな
2009/05/26(火) 10:46:45ID:RE6nhW1+
プログラム板にも類似スレあるからなぁ
http://pc12.2ch.net/test/read.cgi/tech/1103655588/
2009/05/26(火) 11:44:26ID:g1iwHtNj
Linux板にもあるんだな
http://pc11.2ch.net/test/read.cgi/linux/1025048946/

どこも過疎なんだな
2009/05/26(火) 13:00:07ID:ury5peHE
まぁどの板も見てる人は同じだったりするんだがなー
2009/05/27(水) 15:13:44ID:J1ZUF3NO
>>391
あるあ…あるあるwww
2009/05/27(水) 20:27:22ID:tvwU/dRy
>>391
禿同
2009/06/20(土) 19:00:42ID:NcF3Cdso
pitchってなんなんだよ
2009/06/21(日) 00:59:00ID:pYdSfSIz
サーフェスが内部で持ってるバッファの横幅のバイト数

主に効率の理由で、SDL_CreateRGBSurfaceは要求されたwidthより多めにバッファを確保することがある
そのためwidthとは別に、実際のバッファサイズpitchを提供している
2009/06/21(日) 11:20:50ID:zSv4yW5k
大抵は
width * BytesPerPixels == pitch
になるんだがwidthが中途半端な値の時に行末にパッディングを入れて
効率よくアクセスできる様に行頭位置を調整したりする環境があったりする。
そういう環境では、
width * BytesPerPixels != pitch
になるんで座標(x, y)の値をpixelsから得るときなどpitchを使う方ようにする。
2009/06/21(日) 23:15:51ID:E25maqZD
SDLで垂直同期待ちをするにはどうしたらいいのでしょうか
2009/06/22(月) 00:20:15ID:O+mIJJsX
SDL_SetVideoModeでSDL_FULLSCREEN | SDL_HWSURFACE | SDL_DOUBLEBUFを指定してSDL_Flip()
2009/06/23(火) 00:52:22ID:joZZV7Mo
できないです
2009/06/23(火) 12:13:46ID:/PVOVvfC
>>397
環境が分からんけど OpenGL 使うなら
SDL_GL_SetAttribute() で SDL_GL_SWAP_CONTROL に 1 を設定する
401名前は開発中のものです。
垢版 |
2009/06/27(土) 18:30:43ID:sDHPm4PI
ローグライクのようなビジュアル的な計算が不要なゲームだと、
OpenGL使わずSDLだけでも十分って認識でおk?age
2009/06/27(土) 19:19:02ID:KWqzL4Cx
>>401
SDLもいらね。CUIで十分だ。
403名前は開発中のものです。
垢版 |
2009/06/28(日) 00:08:39ID:ywJLJ5bX
SDLの本が全く無いのがおかしいと思います
2009/06/28(日) 00:34:11ID:HORigyY6
じゃあ書くしかないよね!期待してる
2009/06/28(日) 00:34:35ID:bZPPtuvi
シンプルなのに本が必要って理解できない。
関数の説明とかサンプルがあれば十分だと思う。
言語を本を見て勉強する人も理解できない。
文法なんて数日で慣れるし、実際にコーディングした方が早い。
406名前は開発中のものです。
垢版 |
2009/06/28(日) 00:37:11ID:UHxRgRz6
>>402
タイル版が好きです。
2009/07/27(月) 22:27:56ID:pwgcLYGU
実行ファイルに埋め込んだリソースのBMPを読み込むにはどうしたらいいんですか
2009/07/29(水) 19:46:46ID:hxaVetwq
SDL_RWFromMem と SDL_LoadBMP_RW で
2009/07/30(木) 03:02:11ID:7LpS17TZ
プログラムの中でgzファイルを解凍して使うにはどうしたらいいですか
2009/07/30(木) 08:59:42ID:X32fjlJI
もうそれ SDL 関係なくね?
zlib 用意して gzopen, gzread, gzclose
あとはここ
http://www.gzip.org/zlib/rfc-gzip.html
2009/07/30(木) 20:26:22ID:z/8BAJ4t
>>408
すいません。SDL_RWFromMemに与えるべき引数が分かりません。
VisualStudioでresource.rcという下記内容のファイルを作って、
RSC_BMP BITMAP "./test.bmp"
test.bmpを実行ファイルに埋め込むことはできているのですが、どうやって取り出したらいいのでしょうか。
2009/07/30(木) 21:21:20ID:X32fjlJI
え、そこから?
なら FindResource, LoadResource, LockResource で
2009/08/02(日) 03:20:05ID:YWNjq98X
実行優先度を設定する関数とかない?

今のところ窓でしか使ってないんだけど、
せっかくのマルチプラットフォームでWin32API使うの勿体無い('A`)
2009/08/02(日) 14:19:49ID:lj8fHqwo
可搬性のあるやり方は未だ無いと思う
__WIN32, __darwin, __linux, __unix, __FreeBSD で場合分けするしか無いんじゃない?
415名前は開発中のものです。
垢版 |
2009/08/02(日) 18:20:43ID:jIK/N1/Y
結局そうなるよね。
2009/08/02(日) 18:49:37ID:MeotJZ+F
マルチプラットフォームw
2009/08/02(日) 19:33:44ID:P5gI9MRs
>>416
は何がおかしいのか分からない。
2009/08/02(日) 19:45:31ID:qKXo/Ur3
時々居るよね。意味もなく笑う人。
2009/08/02(日) 20:38:25ID:8opud4vC
Winだと、printfとかが使えなくなかったっけ。
2009/08/02(日) 20:44:50ID:Ra9uEb/u
そんなことないよ
2009/08/02(日) 20:47:12ID:we+x1PU3
>>419
標準出力の内容がstdout.txtに書き出されるとかそういうのじゃなくて?
2009/08/02(日) 22:29:17ID:8opud4vC
>>421
そう、それです。めんどくさいよね。
2009/08/03(月) 02:33:22ID:iR0h6COQ
SDL_SetVideoModeを繰り返し呼んでも問題ないでしょうか
2009/08/03(月) 03:43:12ID:iR0h6COQ
SMPEG_playで再生中の動画の現在の再生時間を得るにはどうしたらいいですか
2009/08/03(月) 03:51:05ID:iR0h6COQ
SDL_getinfo()でできましたありがとうございました。
2009/08/03(月) 05:22:51ID:zcH5fUUq
サンクスコ
とりあえず__WIN32のだけ適当に作るわ
2009/08/03(月) 14:13:15ID:LWn7Xmbh
_WIN32はあったけど__WIN32はなかったような
2009/08/04(火) 01:32:24ID:fCZ60H43
やけにCPU使用率高いなと思ったらSDL_VideoDriverName()の結果が"windib"でさらに
SDL_SetVideoModeの戻り値のflags見たらSDL_HWSURFACEがセットされてねえし。
ネットの情報調べたらデフォルトでwindib使うようになっててハードウェアアクセラレーション使いたかったら
opengl使えとか書いてあるしまじ糞ライブラリ
2009/08/04(火) 01:55:52ID:fCZ60H43
デフォルトでハードウェアアクセラレーションの効かないグラフィックライブラリ。
SDL_putenv("SDL_VIDEODRIVER=directx");やっても遅くなったし。。
2009/08/04(火) 01:59:36ID:NixP6Nts
>>427
ちょっとSDL_main.h辿ってたら
#if defined(__WIN32__)
だったからこのまま使ってるんだけど、
WIN32、_WIN32、__WIN32、__WIN32__とも動作するみたいだった
2009/08/07(金) 16:53:05ID:oA4Vb9yJ
マウスがウィンドウの内部にあるかどうか判定する方法ありませんか?
ウィンドウの外にいくとマウスがクリックしたことになるので。
2009/08/07(金) 19:39:29ID:6E06gPMO
たまに >>482 みたいな勘違い君がいますがSDLはグラフィックスライブラリではありません.
- 画面の初期化
- ジョイスティック,マウス,キーボードでの入力
- PCM出力
のためのライブラリです.

ってか昔Windows環境のデフォルトドライバは dirextx だったんだが
ちょっと前に windib がデフォルトになった.現状の SDL の directx ドライバ
ってDirectX 5 とかだしね.
今の directx ドライバ使ったとしても SDL_FULLSCREEN|SDL_HWSURFACE を指定して
かつ実際にハードウェアサーフェスになってなければただのメモリコピーだし速くもならない.

素のSDLのBitBlitで作るのはスーファミくらいのレベルのゲームまででそれ以上
やりたかったらOpenGLを使う.これ世界の常識.あとマルチプラットフォームに
興味ないなら最初から DirectX 直接使っておけばよい.

# SDL 2.0 とかになればこの辺の状況も少しは変るだろうけど…
2009/08/08(土) 01:51:27ID:tookfkje
>>482に期待
2009/08/09(日) 01:17:07ID:F8IxnPoP
OpenGLでやるにしてもSDLとOpenGLをつなぐ部分の資料を少なすぎてすぐいきづまるし。まじSDLは糞。
Linuxで2Dゲーム作りたい人くらいしか存在価値ない。winでやるならwin32api直の方がまし。
やっぱオープンソースは糞。人間は金が絡まないと本気にならないのだ。
2009/08/09(日) 04:09:35ID:x7A49lm+
testgl.cで十分だろ。
2009/08/09(日) 05:14:51ID:NGT++n2c
>>434
いきづまるのは勝手だが、SDL+OpenGLはなんの問題もないよ。
とりあえず、
ttp://www.libsdl.org/opengl/SDLgears-1.0.2.tar.gz
でも見ればいいと思うよ。
2009/08/11(火) 09:40:10ID:IzCsGYWI
>>434
>>435 のおっしゃるとおり

ttp://risky-safety.org/zinnia/sdl/sourcetour/
こちらさんのhtmlのソースを眺めて、たどる
2009/08/11(火) 19:09:27ID:KfVzNOIz
煽りのフリした教えてくんか糞が。
夏だな。
2009/08/17(月) 09:02:39ID:cbNmXUcC
お前がな
2009/08/17(月) 12:30:53ID:GuHWIeqL
いいや、俺が夏だ
2009/08/17(月) 20:33:30ID:ONtV7RcR
あたしの夏を取らないでよ!
2009/08/21(金) 12:19:45ID:adQjjuHo
夏の荒らしさん乙です
2009/08/28(金) 02:25:31ID:bI1GjPiJ?2BP(2)

あーめんどくせー
衝突検知用の画像作りたいんだけど、pngから透明部分以外を一定値として抜き出す楽な方法ない?

ってふと戻り値boolな関数でreturnさせたら0,1でちょうどいい具合だったのでそういう事にするチラシの裏
2009/09/04(金) 15:39:01ID:yGl/RyVV
>> 443
一般的に言えばゲームとかだと画像通りの当たり判定を用意したりしないと思うが…

# まぁゲームとはかぎらないけど…
445名前は開発中のものです。
垢版 |
2009/09/04(金) 18:38:35ID:VrgUM9IL
>>443
Photoshop使用
またはlibpngを使用して自作、とか
2009/09/04(金) 19:38:17ID:AW5ZeIiJ
陰影などで実際よりも大きくなってる絵の場合、
見た目より当たり判定が大きくなるのは嫌だな。
2009/09/04(金) 21:01:11ID:3y2blY+c
C++でゲーム作るならツール作成用にサブ言語覚えるのは必須だよな
448名前は開発中のものです。
垢版 |
2009/09/04(金) 21:47:42ID:VrgUM9IL
自分はツール作成にVB 2005使ってた
2009/09/05(土) 01:06:11ID:BLuHc9Vl
C++/CLI
2009/09/05(土) 11:39:35ID:5TqflyB5
悪いこと言わないから.NETならC#かVB使いなさい
451名前は開発中のものです。
垢版 |
2009/09/05(土) 14:06:19ID:6JitDinv
やっぱり VB 2005 + C++/CLI + アンマネージコード(SSE使用)
C++/CLIではアンマネージコードを含むことができるので、速度がきわめて重要な部分に使う。
2009/09/05(土) 14:20:26ID:BLuHc9Vl
まぁ、小物はスクリプト系(そのときの気分で言語色々、場合によっては秀丸マクロも)
GUIが必要ならDelphiを使ってる
本格的なツールって大抵は既存のフリーでまかなえるし、データ整形がメインだから
秀丸とUWSCで間に合うよな
453名前は開発中のものです。
垢版 |
2009/09/05(土) 14:47:07ID:6JitDinv
そしてさらに小物の場合はbashのシェルスクリプト
さらにさらに小物ならシェルスクリプトにせずbashシェルに長い1行で打ち込む
2009/09/05(土) 15:26:27ID:H9l9Obux
SDLの話題ないんだな
455名前は開発中のものです。
垢版 |
2009/09/05(土) 16:13:51ID:6JitDinv
SDL使いながら自前でソフトウェアレンダリングしてる人ってどれぐらいいるんだろ。
2009/09/05(土) 18:50:24ID:BLuHc9Vl
3Dのレンダリングのこと?ワイヤーフレームなら自前処理したことあるけど結構楽しいな
SDL/OpenGLは環境構築ややこしくて諦めたorz
今はいい解説サイト増えたからまたやってみようかな
2009/09/10(木) 23:41:48ID:ouJOE5Kg
3D目的でSDL使うメリットって何かある?
2009/09/11(金) 02:16:55ID:V5iYPA+I
>>456
OpenGL つかえる環境作って SDL 使える環境を作ったら終わりだろ…
どこがややこしいんだ??
2009/09/12(土) 16:14:02ID:AVCa/v68
>>457
インタラクティブなことをしようとするならオーディオレイヤと入力レイヤを備えているのはメリットだと思うが。
OpenGLを表示に使いたいだけならglutなりgluxなり使えばいいわな。
460名前は開発中のものです。
垢版 |
2009/09/12(土) 17:31:48ID:0lmv1+mo
[GLUTを使用すべき場合]
瞬間的にウィンドウサイズを変更できるようにする場合。
簡単なプログラムをすばやく作成する場合。
[SDL+GLを使用する場合}
ウィンドウサイズを変更させたくない場合。
(ブルームエフェクトなどを使用する場合、ウィンドウサイズ変更時にエフェクト用の
バッファを割り当て直す必要がある)
音も鳴らす場合
2009/09/12(土) 17:44:22ID:Su1dcMt0
GLFWというものもあるね
gamedev.orgのスレではこれがプッシュされてたみたい
http://www.gamedev.net/community/forums/topic.asp?topic_id=444230
GLUTは長い間メンテされてないからあまりお勧めしないとかなんとか
2009/09/12(土) 18:37:25ID:nubInKl1
gl系は画像読み込みがものすごく不親切だった記憶がある
2009/09/12(土) 19:39:29ID:MwUmjNb/
前にビットマップファイル作ってヘッダ消して読み込むってやらせてたけど
流石にこれは俺が悪いよな
2009/09/14(月) 00:47:35ID:/xnNUQM4
オッス、おらニート
サマージャンボで3億円当たっちまってボーっと遊びまくってらこのスレ見つけたわけだ。

おまいらどうやって生活費まかなってんの。後学のためにおしえてくんろだぺ。

あ、俺もう寝るから、明日でもえぇよ。じゃーねぃ。?x2665;
2009/09/16(水) 09:33:51ID:k4ZJL2/r
GLFWは前に試してみたけどlinux環境ではスタティックリンクできなくて
フォーラム見たら作者が仕様だと開き直ってたので捨てた
Win前提なら問題ないみたいだけどそれじゃGLFW使う意味半減だからなあ

最近は改良されてるのかもしれないが…
2009/09/16(水) 11:00:02ID:StlQ+yhL
そこでgleeですよ
2009/09/20(日) 01:42:21ID:/lXUq7jB
HSPでSDL_BlitSurface呼ぶとエラーになる
もうねるし
2009/09/20(日) 05:27:05ID:zX6iAyXm
HSPからSDL呼んで何か嬉しいことってあるのか・・・?
2009/11/03(火) 19:03:32ID:dUOYzCVS
>>467
そろそろ起きろよ池田ァ!!
2009/11/04(水) 00:49:30ID:txEubNfN
ドンだけ寝てんだよw
2009/11/08(日) 23:03:17ID:5mg8aONh
OpenGLメンドくせーだのDirect3Dメンドくせーだの言うが


出来て損なことは何一つねえ



のだよ
偉い人にはそれがわからんのです。
2009/11/10(火) 23:41:21ID:iS3PwIuY
もう諦めたし
2009/11/13(金) 21:50:34ID:Q4b/jXV7
WindowsにおけるSDLはDirectXを利用しているんだけどな。
2009/11/13(金) 22:11:37ID:XT+fnpy7
DirectX5だっけか?
2009/11/13(金) 22:38:40ID:FHBMJcaz
win32apiのラッピングライブラリじゃねえの
2009/11/14(土) 12:27:52ID:0S0r62R2
SDL+OpenGLでゲーム作ってます
ゲームの流れは
動作処理→描画→Swap→Delay

動作処理→Swap→描画→Delay
のどちらがよいのでしょうか?垂直同期待ちについてもよくわからないのでそこと包めて教えてください
2009/11/14(土) 12:29:23ID:0S0r62R2
二個目は動作処理→描画→Delay→Swapでした
連投申し訳ありません
2009/11/15(日) 23:04:16ID:zpJnzLrg
映像信号は左から右へ1ドットずつ、それを上から下へ1ラインずつ送っているんだ
下まで送りきった後、また上から送りなおすまでに若干の準備期間があって
その期間が来るのを待つのが垂直同期待ち

描画が終わったからと言ってすぐSwapしてしまうと、
送信前と送信後の境目で映像を切り替えてしまうことがあり
ちらついたように見えてしまう
これを俗にティアリングと呼んでいる

垂直同期待ちをする場合はSwapの前に必ずDelayが入る
2009/11/15(日) 23:29:35ID:C19h/pYA
言いたいことは分かるけど476が勘違いしそうだな
SDL_Delayとティアリングが起こるかどうかは直接関係ない。
垂直同期待ちを有効にしてある場合はティアリングが起きないように
Swap時に自動的に内部で待機が行われる(>>478のいうDelay)ので
描画とSwapの間にSDL_Delayを入れる必要はない。むしろ入れたら遅れすぎてしまうかも。
2009/11/15(日) 23:41:54ID:zpJnzLrg
あぁそうだ。478で言うDelayはSDL_Delayのことじゃなくて、単なる待ち時間と捉えてくれ。
補足サンクス。
■ このスレッドは過去ログ倉庫に格納されています