2013年17ゲ製作技術110: SDLスレ ver.2.0 (694) TOP カテ一覧 スレ一覧 2ch元 削除依頼
ラムダってどうよ? (130)
そろそろ看板つくりませんか? (120)
ゲーム作りってそんなに時間かかるもんなの? (107)
【3Dゲームエンジン】Unity総合スレッド20 (250)
■ LiveMaker スレッド6 ■ (515)
■ゲーム会社の給料教えろ!■ (947)

SDLスレ ver.2.0


1 :2006/02/28 〜 最終レス :2013/08/29
マルチプラットホームな汎用ゲームライブラリの
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/

2 :
テンプレとか追加適当にヨロ。

3 :
>>1


SDL Library Documentation (Japanese)
http://www.wakhok.ac.jp/~momma/SDL/
Japan SDL Wiki
http://www5.atwiki.jp/ntooka/
SDL-fan-jp(メーリングリスト)
http://www.freeml.com/ml_info.php?ml=sdl-fan-jp

4 :
DirectXなんて捨てちまえ。
これからはSDL。
本家
http://www.libsdl.org/index.php
ゲームとか
http://adas.lolipop.jp/digit/index.php?SDL
サンプル
http://saka.moo.jp/Linux/SDL.html


5 :
超スローペースだな。テンプレ張るのに6日とか。

6 :
ノーマークなリナックスゲームでも作ってノーマークのまま消えるか・・・

7 :
DirectXよか敷居低そうに見えるけど、実際どうですか?
ちなみに2Dのゲーム作ろうと思ってるんですが。
カラーキーを考慮して普通に描画、
半透明、加算、減算、拡大縮小、回転等の機能はひととおりそろってるんでしょか。

8 :
SDLのコア部分はびっくりするほど機能何もないよ

9 :
SDLのコアな機能として、BMPファイルの読み込み、カラーキーの設定、WAVファイルの再生、などなど...
ほかの定番な機能も、補助ライブラリによって大概のものが提供されている
SDL_image 様々な画像ファイルの読み込みを扱う
SDL_gfx  基本的な図形の描画や、画像の回転拡大描画を扱う
SDL_mixer 様々な音楽ファイルを便利に扱える

10 :
>7
テンプレにある初心者の〜にでもいってみそ

11 :
SDL_gfxは拡大縮小といっていいのだろうか・・・

12 :
初心者の〜
ttp://tokyo.cool.ne.jp/sdl/index2.html
ココ参考にしてVisualStudio2005EEでコンパイルしてみたんですけど
警告が出ます。どなたか、解決方法わかりませんか?
1>------ ビルド開始: プロジェクト: sam, 構成: Debug Win32 ------
1>コンパイルしています...
1>main.cpp
1>i:\documents and settings\hoge\my documents\visual studio 2005\projects\sam\sam\main.cpp(57) : warning C4715: 'Init' : 値を返さないコントロール パスがあります。
1>マニフェストをリソースにコンパイルしています...
1>リンクしています...
1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: defaultlib 'msvcrt.lib' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
1>マニフェストを埋め込んでいます...
1>ビルドログは "file://i:\Documents and Settings\hoge\My Documents\Visual Studio 2005\Projects\sam\sam\Debug\BuildLog.htm" に保存されました。
1>sam - エラー 0、警告 2
========== ビルド: 1 正常終了、0 失敗、0 更新、0 スキップ ==========

13 :
>12
日本語読めますか・・・?

14 :
>>13
それはちょっとキツイ.
初心者の〜なんだし.
>>12
サンプルソース見ると分かるけど,Init()の最後に return true; が無い.
解説サイトでそりゃ無いだろ,って気もするけど...
あと,msvcrt.lib を無視する設定にすると後半の警告は消える.
VisualStudio2005EE では設定方法分からないけど,
VC++6.0 の場合は,メニュー→プロジェクト→設定→リンク→インプット
で無視するライブラリを設定する.

15 :
SGE
http://www.etek.chalmers.se/~e8cal1/sge/
主に画像関係がつまってる。
当たり判定のチェックも出来るみたい。

16 :
【pygame】pythonでゲーム製作【ぱいがめ】
http://pc8.2ch.net/test/read.cgi/gamedev/1126605105/
SDL使ってるんで宣伝

17 :
しかしどっちも過疎ってるな。

18 :
hyoしゅ

19 :
Ruby/SDL製のクラスライブラリ、Miyako v0.6リリース
http://www.twin.ne.jp/~cyross/Miyako/

20 :
>>19 てどうよ?

21 :
・最適化すると動かなくなる
・起動時に自動でテキストが出力される
このあたりは設定で回避できたりしないんでしょうか?
あとは、フォルダ内にDLLが多くなるので、
使う機能だけをexeファイルに内包させ、実行ファイルだけで済むようにしたいんですが…

22 :
>>21
最適化云々は知らん。ウチの環境(VC++2005)では動いてる。
あと2つは、
ヒント:
./configure --disable-stdio-redirect --disable-shared --enable-static

23 :
>>21
exeファイルに内包させるとLGPLが適用されるけど、それは構わないという認識でOK?
俺はSDL.dllやSDLimage.dllなどをまとめてSDL_cust.dll(仮)1つにしたいんだがやり方が分からないでいる。

24 :
散らばるのがアレならディレクトリに放り込めばいいんじゃないんでしょうか。

25 :
オープンソースなんだから自分でビルドすれば
もし成功したら欲しい

26 :
>>20
* 画面サイズは640x480のみ
* 同時発色数はハイカラー以上(フルカラー奨励、256色非対応)
* ウィンドウスタイルのみ、フルスクリーンモードなし
* 遅い(どうしようもないなぁ・・・)
* ウィンドウ、マップのインタフェースが煩雑(どうしようか・・・)
* Windows以外ではフォントパス検索が不十分(解決したい・・・)
* エラーの整備が不十分
* ドキュメントが全然整っていない(リファレンスはまだまだ・・・)

27 :
>>26
遅いのはやっぱりRubyだから?

28 :
SDL自体もそんなに早くないしね。

29 :
>>28
SDLより速いのって何?

30 :
ちなみにDirectX以外で。

31 :
SDLはSuDdenLyの略

32 :
Sudden Death

33 :
>>28
SDLの2Dってソフト連打じゃなかったけ?ソース見てないからなんともいえんが
OpenGLにすれば早くなるよね

34 :
Mix_LoadMUS_RWが使えないんだが…
原因に心当たりのある人、助言plz。

環境・やったこと
・ VC.NET, SDL1.2.9, SDLMixer1.2.6
・ SDL_mixer と mikmod を USE_RWOPS でビルド
・ 自分のプロジェクトにも USE_RWOPS
・ 自分のプロジェクトをビルドすると、LNK2019。Mix_LoadMUS_RWが未実装。
・ 関数の実体が定義されてないっぽいと分析したが、SDLの該当ソース部分はifdefの嵐でわけわかんないよギヴアップ。
・ ここ読んだ。でも意味がよくわからないから、上に書いたことしかやってない。 ttp://ilaliart.sourceforge.jp/tips/mix_rwops.html

35 :
>>34
つ ttp://www.freeml.com/message/sdl-fan-jp@freeml.com/0000828
とりあえず、SDL_mixer 1.2.5の時点では実装されていない

36 :
待望のバージョンアップ!!!
SDL version 1.2.10でますた。
さっそくSDL-devel-1.2.10-mingw32.tar.gzダウンローーード!!!
…。
肝心の libSDL.a が含まれてないような気がする…。
しかもINSTALLみると、コンパイルしなければならない???
configureもみつからない…。
ファイルサイズもちっこいし…。
なんか怖いのでSDL-1.2.9に戻しますた。

37 :
>>36
libSDL.dll.a が入ってるだろ…
INSTALLファイルはソースからのインストール方法が書いてあるだけだし…

38 :
ざっとChangeLog見てみたが、大きな結構変更点多いな
とりあえず、
・Added SDL_GL_SWAP_CONTROL to wait for vsync in OpenGL applications.
 (GLアプリでvsync待ちが出来るようになった)
・SDL_WM_SetCaption() now officially takes UTF-8 title and icon strings, and displays international characters on supported platforms.
 (ウィンドウタイトルがUTF-8に対応した…英語以外もおk)
・SDL_opengl.h has been updated with the latest glext.h from http://oss.sgi.com/projects/ogl-sample/registry/
 (SDL_opengl.hが最新のGL拡張に対応した)
・[Windows] Window positions are retained when switching between fullscreen and windowed modes.
 (フルスクリーンとウィンドウモードの切り替えをした時にウィンドウ位置が維持されるようになった)
・[Mac OSX] SDL now supports building Universal binaries, both through Xcode projects and when using configure/make. See README.MacOSX in the SDL source archive for details.
 (ユニバーサルバイナリに対応した)
このあたりが個人的におぉ!と思った

39 :
> 大きな結構変更点多いな
結構大きな変更点多いな
orz

40 :
Windows上で、VisualC++とSDLでゲーム開発したいのですが、
SDLはDirectXのラッパーらしいので、となるとDirectX SDKも
インストールする必要があるのでしょうか?
ランタイムDLLだけじゃダメ?

41 :
SDKはいらない。

42 :
SDLでドキュメントのPlaySoundのサンプル見ながら音を鳴らすコード書いてみました。
ちゃんと動きましたが、でも音の再生や停止に微妙な遅れが出る…
コールバックが呼ばれてるまでの遅れでしょうか?
ゲームだと音の遅れはかなり目立ちます。何か解決策はありますか?

43 :
その前にお礼を言ったほうがいいと思うよ

44 :
>42
なんか前に少しいじったとき、
すごい音がブチブチに途切れるんで何ごとかと思ったら
フルスクリーンにしたら直った。
ウインドウモードだとBltにスゴイ時間がかかって
処理落ちしてるみたい。呆れるほどの低速動作・・
でもフルスクリーン限定のゲームを作るならいいかな。
ていうかSDLってウインドウ時すごく遅いですよね
呼び方を間違ってるのかな・・?

45 :

もしかしてAPIのバージョン使ってる?
ドキュメントより:
「バージョンが2種類あります。 Win32 API 上で動く全てのシステムで
安全なバージョンと、 DirectX API 上で動くハイパフォーマンスの
バージョンです。」

46 :
あと、描画する前にテクスチャのフォーマットを
画面のフォーマットと同じに変換してメモリ上に置いておかないとすごく遅くなるよ
GL使ってる場合は別だが

47 :
>>35
Mix_LoadMUS_RWが使えるようになった。ありがとう。

48 :
>>45
ダウンロードできるバージョンは一つしか無いようですが…
どうやってDirectXとWindowsAPIを切り替えるんでしょうか?

49 :
>>48
環境変数 SDL_VIDEODRIVER や SDL_AUDIODRIVER で切り替え可能.
そういえばSDL-1.2.10からwin32環境のデフォルトのビデオドライバが
directx から windib に変更になったらしいね。
ttp://zinnia.dyndns.org/~hiki/SDLKB/?%B4%C4%B6%AD%CA%D1%BF%F4SDL_VIDEODRIVER
ttp://zinnia.dyndns.org/~hiki/SDLKB/?%B4%C4%B6%AD%CA%D1%BF%F4

50 :
>>49
レスさんくす。
環境かよ!って突っ込みたくなりますね。

51 :
環境変数となるとユーザに配る時面倒だな
小さなローダプログラムで設定して本プログラムに渡すのが一番いいかな…

52 :
>>51
自分で書いたプログラムならSDLの初期化前にputnev()で
設定してやればいいだけじゃね?

53 :
どこかに1.2.9のアーカイブまだ残ってないのかな。
1.2.10にしたらBCCでコンパイルが通らなくなって、
とりあえずエラーが出ないようにはできたんだけど。
どうして1.2.9だとエラーでなかったのか調べたいと思ったら
このまえうっかり消しちゃって…。

54 :
ああごめん。
リンクされて無いだけで、普通にファイルは残ってたのね。

55 :
>>53
http://www.libsdl.org/release/ 好きなのどうぞ

56 :
>45>46
情報ありがとうございます。試してみます。

57 :
>>55
ありがとう、見つけました。
でもヘッダーファイルの構成変わったみたいで見てもわかんなかったや。
ところでbccでコンパイルしたときって、
SDL単体でもmsvcr71.dll必要じゃなかったっけ?
今やったら無くても動いたんだけど、1.2.10でなんか変わった? 前から?

58 :
SDLのデバッグってどうやってやってますか?

59 :
普通にVisualStudioとかgdbとかXcodeとかで

60 :
はぁそんな高低さあるデバッグ環境並べられても
困るのですが

61 :
printfで十分だろ。

62 :
いやだいやだもっと高機能なデバッガ欲しいよ

63 :
3つ並べたけど、自分の環境に従ってどれでもどうぞってことだよ?
VisualStudioのデバッガじゃ不満なの?

64 :
あのねあのね、SDLってMFCでいうとこの
MDIみたいにWindowをネストして管理しることできますか?

65 :
>>64
SDL単体にそんな機能は無いな
そもそもそういう用途向けのライブラリじゃないし
http://www.libsdl.org/libraries.php
で GUI で検索してみれば?

66 :
何がわからないのかもわかってない自分にとっては
こういう流れも荒れてるようには見えない…
参考になります。

67 :
マウスカーソルをSDL_JOYAXISMOTIONで動かす為にSDL_WarpMouseを使った所、
カーソルがあった位置の画像が欠けたみたいになってしまいました。
こうならずに動かす方法はないでしょうか?

68 :
SDL 1.3(開発版)を使っている人はいますか?

69 :
>>68
そういえば、1.3ではLGPLとは違うライセンス形態が追加されるんだっけ。
誰か情報知ってる?

70 :
>>69
LGPLと、別のライセンスによるデュアルライセンスみたい。
いまなぜかwww.libsdl.orgが見られないんでグーグルのキャッシュでごめん。
ttp://72.14.253.104/search?q=cache:NjYq8XR_4aEJ:www.libsdl.org/pipermail/sdl-cvs/2006-June/001796.html
ttp://72.14.253.104/search?q=cache:IZ4CJHmKo7MJ:www.libsdl.org/pipermail/sdl-cvs/2006-June/001797.html

71 :
ウェブサイトが見えるようになったので追記。
ttp://www.libsdl.org/license.php
ttp://www.libsdl.org/license-commercial.php
commercial licenseがどういうものかはわかんない。
MLでは話題に上がっているのかな。

72 :
SDL.dllとSDL_image.dll、それぞれどのバージョンがどんな感じに対応しているか、
詳しく知っている人いませんか?
または、対応表とか。
SDL 1.2.7をbcc32でコンパイルしたプログラムを
SDL.dll 1.2.7とSDL_image.dll 1.2.5を一緒に使ったところ、
「SDL_Error関数がSDL.dllにない」と言われました。
SDL.dllを1.2.11にしてみたところ問題なく動いたので、SDL.dllの対応がSDL_image.dllに
追いついていないということになるみたいなのですが……。

73 :
>>72
SDL_image をコンパイルするときに使った SDL を使えばよいだけなのでは?

74 :
>>73
あ、そういう方法がありましたか。
自分は基本的にバイナリ配布のものをそのまま使っている軟弱者なので、気づきませんでした。
ありがとうございます。
>>53氏も言っていましたが、
bcc32の場合、SDL 1.2.10以降はヘッダーファイルがコンパイルに引っかかって困ります。
どこかに修正版が落ちていないものでしょうか……。

75 :
VC++2005が無料で使える今となっては、
bccでやる人はほとんどいないだろうしなぁ

76 :
>>74
コンパイルできないとかならBTSにレポートすれば?
>>75
まぁ確かにVS2005あるし,gccな人はMinGWやcygwinがあるし,
でも使い慣れたものを使いたいという人もいるだろうしサポートはしといて欲しいなぁ…

77 :
>>74
1.2.11での話だけど、"SDL_config_win32.h"の32行目
--------------------------------------------------
#elif defined(_MSC_VER)
--------------------------------------------------

--------------------------------------------------
#elif defined(_MSC_VER) | defined(__BORLANDC__)
--------------------------------------------------
と書き換えればエラーは出なくなる。
多分64bit対応部分で、bccには関係ないのでこれでOKだと思う。
勘だけど…

78 :
>>77
コンパイル通りました!実行も問題ありません。
(といっても、ウィンドウ作って、背景色をつけるぐらいのことしかしていないので、
他の機能がどうなっているかまではわかりませんが)
本当にありがとう。

79 :
過疎ってるなぁ……
念のため、age

80 :
SDLコンパイルはできるのに
.exeを実行すると画面が一瞬だけ出て消えてしまいます
原因はググってもわかりませんでした
何が原因でしょうか・・・・

81 :
>>80
初心者用のサンプルコードのためと思われる。
ウィンドウを作るだけでプログラムが終わるので、ウィンドウは速攻で破棄される。
試しに、SDL_Quit()を呼ぶ前にSDL_Delay( 2000 )とでも書いてみ。

82 :
SDLとDXライブラリはどちらが初心者向きですか?
ちなみにスト2のような2D格ゲーを作りたいと思っています。

83 :
>>82
初心者向け、ということならDXライブラリのほうが初心者向け。
日本人による日本人のためのゲーム作成ライブラリだから、日本語の資料しかない。
SDLは英語の資料がほとんど。
勉強になる、スキルアップにつながるという点では、SDLのほうに軍配があがると思われる。
関係ないけど先日から挙動がおかしかったSDL公式ページ、サーバー落ちてるよ……。

84 :
>>83
回答ありがとうございます。
途中で挫折してしまっては意味がないので、DXライブラリにしようと思います。

85 :
>>82
マルチプラットホームを意識しないならDXが日本語ドキュメント豊富で
でいいんじゃないかな

86 :
ほしゅ

87 :
www.libsdl.orgおかしくね?
契約切れかな

88 :
>>87
ちょっと前まで、サーバが挙動不審だったり、落ちてたりしてたけど、
今は大丈夫じゃないか?
アクセスしたけど、問題なかったよ。

89 :
Linux版を配布する場合,ライブラリのlibSDLはどのように同梱すれば良いのでしょうか?
Windowsであれば同一フォルダにSDL.dllを置いておけば認識して起動します
でも,Linuxはそれだと認識されないみたいです

90 :
Linuxerならライブラリ自分で入れちゃうだろうから同梱しなくていいんじゃね
SDL使ってますってだけどっかに書いといたら?

91 :
>90
PS3用なので,ユーザのスキル低いんです
依存関係調べて,元から入っている古いやつを削除とかムリ
配布したファイルだけで完結していたい

92 :
>>91
本当にユーザのスキル低いのか?
ってか低いって言えるほどPS3 Linux のユーザのサンプルが存在してるのかしら…?
低いやつってか使えないやつはLinuxインストールしてもすぐ消すんじゃね?

93 :
というだけだとあれなんで…
SDLがLGPLなんでソースをLGPLやGPLで公開できるなら全部スタティックリンクしちゃって配布すればいい。
できないなら libSDL を含む実行に必要な共有ライブラリ全部を同封して起動用のシェルスクリプトを
書いてやればOKだろう。シェルスクリプトの中で環境変数LD_LIBRARY_PATHに共有ライブラリを
置いたディレクトリを設定してやる、というかんじで…

94 :
LGPL だからリンク出来る様に *.o だけ同梱しておけば、ソースを晒す必要は無いよ。
スタティックリンクしちゃいな。

95 :
>>91
PS3Linux使用者のスキルは低くないだろ
現状を考えると

96 :
シェアウェアや同人ゲームなどでSDLを動的リンクで使う場合、
LGPLライセンスは感染しないのだから
ゲーム本体の著作権は開発者が完全に保持できるという理解で正しいんでしょうか。
第三者による無断配布やリバースエンジニアリングを禁止できるか否か、ということなのですが。

97 :
動的リンクすれば商用もokだから問題ない。
しかし、1.3以降はどうするんだろ?
今、ホームページ見たら1.3以降は
LGPLまたは別途商用って...
もめそうだな。

98 :
>>97
ありがとうございます。
ライセンスが過渡期というのはいかにも怖いので、無難にDXライブラリを採用することにします。

99 :
デュアルライセンスにするとなぜもめるのか分からん.
コミッタがいっぱいいると了承得るのはメンドイだろうが,
ホームページに書かれてるって事は,既に大体解決してるからだろう.

100 :
ようはあれでしょ。
金払ってもいいから、プロプライエタリなソフトに組み込みたいっていう
人のためのライセンスも用意するってことでしょ。
むしろ、今より選択肢が増えるんじゃない?
でもSDL本体に商用ライセンスができても、周辺ライブラリが
LGPLだったりするからなー。

101 :
 

102 :
2ヶ月書き込みがないとは…
ライセンス云々で質問なんだけど
ソース同梱しちゃえばGPLだろうが何だろうが
販売しちゃっても問題無いんですかね?

103 :
>>102
Yes.
GPLの場合はライブラリのソース/おまえさんの作ったソフトのソース
両方共同梱だから注意な
ついでにSDLはGPLじゃなくてLGPLだからな

104 :
>>102
SDLはLGPLだからSDLをダイナミックリンクすればアプリの
ソース非公開でバイナリのみ配布(販売含む)してもOKだ
でも同封したSDLのバイナリの元になったSDLのソースは同梱しよう

105 :
バイナリ入手者が、ソースを手に入れたい時に入手できればよいから、
SDLの公式URLでも書いとけばいいはず

106 :

だから、GPLのも必ずしもソース同梱しなくていい。
サポート窓口か何か用意しておいて、ソース公開問い合わせが来たら渡すでもよかったはず。
ただし、その入手者が、さらなる公開を妨げることができないのでたいして変わらないが。
ToHeart2も確かその体制だったような

107 :
なんかバージョン上がってから、タイトルバーの日本後表示ができなくなったんだけど、なんでかわかる人いるかしら?

108 :
http://bugzilla.libsdl.org/show_bug.cgi?id=365
svnにある最新版では直ってるよ

109 :
おお!ありがとです!

110 :
GUIで文字列を入力したいんだけど、SDLにそんな機能はないよね・・?

111 :
>>110
GUIで入力って意味がよくわからないけどドラクエ入力みたいの?
それともGUIウィジェットのテキストエリアにIMEで入力するような話?
# どっちにしろSDL本体にそんな機能はないけどね…

112 :
>>111
抽象的でごめんなさい、後者の方を想定してた(テキストボックスにサーバのアドレスを入力して接続)
ちょっと他の方法を模索してみます。

113 :
>110
SDL用のライブラリを探せばそんなのもあるんじゃないですか?
と、無責任なことを言ってみる

114 :
SDLSKKってのがあるっぽいけど110氏の用途に合うかどうかは
よく分からんかった。

115 :
SDLスレはなんて良スレなんだろう!ほかのスレときたら…

116 :
>>110
アドレスならASCIIコードの範囲で収まるから自前でキーコードから
入力させてもすぐできると思う。でも楽したいならSDLベースのGUIライブラリが
あるから適当なのを探してみるといいよ。

117 :
これがチャットしたいからIMEで日本語入力させろとかだと一気に大変になって
SDL_inputmethod や SDL-IM みたいなライブラリを使うことになる。
- http://sdlinputmethod.sourceforge.net/
- http://sdl-im.csie.net/
ちゃんと動くか知らないけどね

118 :
>>114
これは良さそうです、もっと調べてみます
>>116-117
確かにすぐに実装できそうですね。ライブラリに逃げて、上手くいかないようでしたら
自前で作ってみることにします。
わざわざ調べていただき、ありがとうございます。
よっしゃ!頑張ろう!

119 :
頑張ってら〜

120 :
Qt辺りも使えるんじゃね?

121 :
>>103-106
ソースも必ず同梱しないといけないのかと思ってましたが
意外と自由度があるんですね…
readme.txt にURL書いておくのが簡単そうでいいですね

122 :
>>121
> readme.txt にURL
おれも最初それが楽そうかな?とか思ったんだが、
一次配布元が移転してたり、もっとひどいと無くなってたりして、
さらに自分も当時のバージョンを手元に持ってなかったりする状態の時に
「ソースくれ」と言われたらやっかいだなぁ、とか思ったのでやめにした記憶があるんだぜ
まぁ、心配しすぎなだけかもしれないが

123 :
>>121
厳密に運用しようとすると >>122 に書いてあるような問題があるんだけど
実際にはソース同梱しない人が多いね.
CD配布とかで容量の問題がないなら同梱した方が面倒はないはず.

124 :
SDLで音をパニングしたいんだけど、可能ですか?
デフォルトのメソッドには無いので普通には出来ないっぽいですが。

125 :
自分でミキシングすればもちろん可能ですよ。
SDL_mixer にも Mix_SetPanning がありますよ。

126 :
>>125
ありがとうございました。
テンプレの一部の文書しか読まず、他の豊富な関数の存在を見落としました。
ttp://jcatki.no-ip.org/SDL_mixer/SDL_mixer_frame.html

127 :
重ねて質問恐縮なのですが…
SEについても、SetMusicPosition などの便利な命令を使いたいのです。
それが無理なのでしたら、複数のBGMを同時に扱い、SEとして使いたいのです。
どのような方法があるでしょうか?

128 :
というか・・・
SEでしか使えない命令とBGMでしか使えない命令が多く、かなり不便で困ってます。
SetPanningを使いたいならSEでないといけないが、SetMusicPositionで再生位置を指定したいのならBGMでないといけない……
何か対策はあるのでしょうか?
全部の関数が使える型があれば嬉しいのですが…

129 :
よくわからないけど、これも似たような話?
ttp://star-engine.sourceforge.jp/wiki/index.php?%E3%82%B5%E3%82%A6%E3%83%B3%E3%83%89

130 :
SDL_mixer は mixer って名前の割に mixer 機能と音声デコーダとしての機能が
ひっついてたりと微妙な設計の上に mixer としての機能はいろいろ制限付きだから
凝ったことしたいなら mixer を自作するか他のライブラリを使った方がいいと思う

131 :
>>129,130
回答ありがとうございました。
SDLは音関係はまだ弱いみたいですね。今後に期待します。

132 :
今後強くなることはほぼ無いよ
どうしても欲しけりゃ自分で作れ
マジで

133 :
SDL使ってないんだが、
SDL製のゲームってなんで、フルスクリーンから戻ると、
ウインドウがくっちゃくちゃになるんだ?
WindowsXPになってからから、最近はあまりならなくなったが、
デュアルディスプレイ環境にしたとたん、今度は、フルスクリーンから戻ると
サブディスプレイ側にウインドウが全部持ってかれるwwww
SDL製ゲーム、妙に腹立つんだが……
SDLって、フルスクリーンに、どんなAPI使ってる?

134 :
ソース読めば

135 :
>133
SDL-1.2.10のリリースノートに対策したと書いてあった気がするので
それ以前のバージョンだとダメとかありそう
とりあえずSDLのDLL群だけ公式サイトの1.2.10のものに入れ替えてみたらどうよ?
まーそれでもデュアルディスプレイ時は問題がある、とかだったらアウトだが

136 :
>>135
OK試してみる

137 :
QuickTime を最新版にしたら
ld: Undefined symbols:
_HIPointConvert referenced from QuickTime expected to be defined in Carbon
ってのが出てコンパイルできなくなった
これは俺だけ?

138 :
環境を(ry

139 :
エラーメッセージから多分OSXだろうな、ということぐらいは推測出来るけども
それが分かったところでそんな環境でやってる人が少なすぎて誰も答えられない予感

140 :
OS Xなんだけど、むしろ137を見て、
iTunesとQuickTimeのパッチを宛ててない俺がいる。
真相が明らかになるまで宛てない。

141 :
>>137
もしかして Panther ですか?
うちも 6 月 26 日に SDL をコンパイルした時は何の問題もなくて
mplayer をビルドできたんだけど、QuickTime の更新後他にも
ライブラリを追加して mplayer をリビルドしようと ./configure したら
SDL を認識しなくて configure.log に >>137 と同じログが残っていました。
--enable-sdl、--with-extraincdir、--with-extralibdir、--with-sdl-config 等を
オプションに加えてみたけどダメだった。

142 :
ム板のQtスレで似たような症状を見かけたな。
紛らわしいがQuicktimeじゃなくてQtのスレな。
そのときはQuickTimeのバージョンを落とせと言う結論が出てた。

143 :
QuickTime ProにしてたらQuickTImeのバージョンをあげずにシステムだけソフトウェアアップデートできる

144 :
すいません初心者なんですが
SDLで描画する際に描画処理をもっと高速化したい場合
どんな方法があるでしょうか?
もしくは気を付けるべき点とかありますでしょうか?
主にわりと広い領域を1フレームごとに単一色で塗りつぶしたいです

145 :
>>144
ビデオカードによってはGL併用で板ポリで塗りつぶしたほうが早いことがあるかもね

146 :
>>145
レスありがとうございます 試してみます

147 :
今日始めたんだがもうなにがなにやら
導入できないしなんとか出来たと思ったらビルドできないし…
解説が少し古いから最新バージョンを使わないで説明に使われてるバージョンにしたほうがいいんだろうか
泣きそうだ

148 :
俺も始めたばかりだけど、windowsでのバイナリ作成はイマイチよくわからん
unixならmakefileかいてmakeすればいいだけだったからなぁ

149 :
WindowsならVC++用のDLLやらlibやらひと通りバイナリで公式に置いてあるじゃないか

150 :
SDL-devel-1.2.12-VC8.zipでいいの?

151 :
VC++2005ならそれでいいと思う

152 :
だよね…
設定からincludeとlibにパス通してから
ttp://www.tacoworks.jp/software/SDLdoc-jp/html/guidebasicsinit.html
の一番下のコードをコンパイルしようとしたらエラーが…
1>------ ビルド開始: プロジェクト: SDL_test, 構成: Debug Win32 ------
1>コンパイルしています...
1>main.c
1>c:\documents and settings\*****\my documents\visual studio 2005\projects\sdl_test\sdl_test\main.c(4) : warning C4026: 関数はパラメータ リストを使って宣言されています。
1>リンクしています...
1>main.obj : error LNK2019: 未解決の外部シンボル _SDL_Quit が関数 _SDL_main で参照されました。
1>main.obj : error LNK2019: 未解決の外部シンボル _SDL_GetError が関数 _SDL_main で参照されました。
1>main.obj : error LNK2019: 未解決の外部シンボル _SDL_Init が関数 _SDL_main で参照されました。
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
1>C:\Documents and Settings\Anpan\My Documents\Visual Studio 2005\Projects\SDL_test\Debug\SDL_test.exe : fatal error LNK1120: 外部参照 4 が未解決です。
1>ビルドログは "file://c:\Documents and Settings\Anpan\My Documents\Visual Studio 2005\Projects\SDL_test\SDL_test\Debug\BuildLog.htm" に保存されました。
1>SDL_test - エラー 5、警告 1
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

153 :
ユーザー名全然消せてないし('A`)

154 :
>>152
リンクするライブラリに
SDL.lib SDLmain.lib を追加してないだけじゃないか、それ

155 :
>>154
できた。できました。
ttp://www.geocities.jp/jq2hpl2000/SDL/environment.html
の一番下に書いてあることをやってみたらついにできた
パス通せば勝手にやってくれるわけじゃないんだね
できる人から見たらくだらないミスかもしれないが、完全に詰まってたから助かった
しかもこんな過疎スレでタイミング良く…
本当にありがとう

156 :
>>155
動いてよかったすな
あとこのスレ特に話題にすること無いから過疎ってるけど
ROMは結構いるんじゃないかと思う

157 :
そうなのか
一年半で150レスだと知って絶望したが安心した
これからよろしく

158 :
>>155
SDL ってか VisualStudio の使い方の問題だから一度は
ツールの使い方の勉強をするといいと思うよ.他にも応用が効くし.

159 :
自分も、見てはいるけど、書き込んではいない人ですね。

160 :
つられて書き込みに来ました><

161 :
SDLで同人ゲーム作って3年後には成金の予定です><

162 :
いくつかかサンプルプログラム組んでみたんだが、
やたらCPU使用率が高いのは仕様なのだろうか

163 :
>>162
適当にSDL_Delayでも入れたら?

164 :
ほぼCPUによる描画だからCPUの使用率が高いというオチは無いかね。
なんらかのSDL_VIDEODRIVERを指定しないとSDL_BlitSurfaceは重いよ。

165 :
ありがとう
たぶんCPUだけでひたすらループをまわしているからかな…
参考にしてみる

166 :
まったくDelay入れてなければ普通にビジーループと同じなんだから
どんなCPUでも100%近くまで食うだろうけど…

167 :
1.2.12って先月出てたんだな……。
Added support for UTF-8 window titles on Windows. が嬉しい。

168 :

SDL入門てきなページのサンプルにprintf使ってるのあるんですけど、
printf使ってみてもなにも表示されないんですよ。原因わかる人
教えてくれますか?

169 :
>>168 Cヘッダファイル読み込んでないとかいうオチじゃないよな?

170 :
コンソール表示してないとか

171 :
実行ファイルと同じディレクトリにstdout.txtってのがないですか?
あるならそれに出力されてるはず

172 :
窓に出力するのは結構面倒だぜ

173 :
>>169ヘッダファイルよみこんでました
>>170すいません、意味がわかりませんでした。ほんと、すみません。
>>171stdout.txtありました。ちゃんとかいてありました。
画面に出力する場合は fprintf( stdout, "maimai" ); でいけるかなと思ったんですが、
うまくいきませんでした。
もしかしてSDLの標準ライブラリには、そのような関数はないんですか?

174 :
>>172そうですかやっぱりSDL_kanjiなどをつかうべきですか?

175 :
だからコンソール出せばいいじゃん

176 :
>>168
そのサンプルで同じようにしたいなら
どのような手段を利用したいのか教えて欲しい
もしくはそのサイトへリンクを張るのも手だ
不足している情報は「どこに」「どういった目的で」文字を出力したいか
そして、現在は「どのような手段」を使ってそれを達成しようとしているかだ
間違いを修正して欲しいなら正解だと思っている方法を提示すべきだし
新たな方法を示して欲しいなら目的や条件をはっきりさせて欲しい

デバッグ目的であればコンソールやファイルに出す方法があるし
もしくは(Windows限定になるが)OutputDebugStringを使うのも便利だ

ただ、現象からみてコンソール出してないだけだよなぁ……
出し方わかる?たぶん色んなソースをチャンポンしたせいで
mainとWinMainのソースが混ざってるだけだと思うんだが

177 :
Windows版のSDLでprintfをコンソールに表示したかったら、
SDLmain.libをコンソールアプリで作り直さないと無理だよ

178 :
レスありがとうございます。
>>175本当にごめんなさい、意味がわからないです。
>>176>>不足している情報は「どこに」「どういった目的で」文字を出力したいか
そして、現在は「どのような手段」を使ってそれを達成しようとしているかだ。
「どこに」は、ウィンドウです。「どういった目的で」は、いまはとくに目的はありませんが、
サンプルどうりの結果が得られないのは、自分の環境に問題があるように思えて、心配です。
「どのような手段」は、今は、見つかっていません。どうしようもなければSDL_kanjiを使おう思っています。
間違いを修正して欲しいなら正解だと思っている方法を提示すべきだし>>printf("maimai");をメイン関数の中に入れてウィンドウにmaimaiと表示させたいです 。
デバッグ目的であればコンソールやファイルに出す方法があるし >>デバックが目的ではないです。
もしくは(Windows限定になるが)OutputDebugStringを使うのも便利だ>>調べてみます。
ただ、現象からみてコンソール出してないだけだよなぁ……
出し方わかる?たぶん色んなソースをチャンポンしたせいで
mainとWinMainのソースが混ざってるだけだと思うんだが>>ごめんなさい、いみがわかりません。




179 :
SDLより前に基礎的なことが分かってなさ過ぎる。
printfは基本的に標準出力(コンソールやファイルやプリンタ)への文字表示命令であって、
SDLみたいなグラフィック画面への出力とは全く別物なんだよ。
そもそも、どこのサンプルでどう上手く行かないかも明示せずに
曖昧で焦点がぼやけた質問で人様を煩わせるのはちょっとどうかと思うんだわ。
そんな調子では超能力でもなければ君の問題を把握することができんよ。

180 :
もーっ、そのものズバリ書いたってのにー
printf() は Windows 以外だったら標準出力(コンソール)に出るが、
公式で配っているWindows版のSDLはコンソールアプリじゃなくてWindowアプリとして作られてるので
そのままではprintf()を使ってもコンソールには何も出ない
その代わりに標準ではstdout.txtに出力されるようになってる
これはfreopen()を使って別のファイルにすることは可能
あと、Windows版SDLでは、自分で書いたmain()は #define 使ってSDL_mainに書き換えられてる
本当のエントリポイントはSDLmain.libの中にあるWinMain()
だから、コンソールにprintfを出力させたかったらSDLmain.libを作り直す必要があるってこと

181 :
SDL_kanjiは知らないけど、日本語使わない漏れはSDL_ttfのTTF_RenderUTF8_Solid()で作ってSDL_BiltSurface()で貼り付けるのを関数化して文字列渡して使ってる
しかしstdout.txtあるのは便利だよな

182 :
お前ら凄い親切なw
伝わってないのが端から見てて歯痒い。
>>179-180以上にかみ砕くのは俺には無理と思うが、補足。
・printfでstdout.txtに出力されるのはとりあえずWindows環境では普通の動作なんで別に心配しなくていい。
とりあえず出力した文字の確認もできるだろうし、ウィンドウに出力されなくても問題ないよね?
・普段printfで出力してるコンソール画面は、SDL使ってる限り出せないと思っていい。
ウィンドウに文字を出したいなら、文字列を画像(サーフェス)として生成して、それを表示する必要がある。
それをやってくれるのがSDL_ttfとかSDL_kanji。使えるフォントの種類に違いがあるんだが、Windowsなら何も考えずSDL_ttfを使っていい。
あと、なんか、上のレスを見る限り意味がわかりませんと返ってくる気が凄くするんだが、わからんのがどの部分のどの用語なのかとかを書かないと説明しようがないんじゃないかと思う。

183 :
>>179
ものっっっすごく申し訳ありません。
もしよければhttp://web1.nazca.co.jp/studioh/diary015.htmlに飛んでもらって、そのページのEvent関数の
if(ev.type == SDL_KEYDOWN) //キーが押されたかどうかの確認。
{
printf("キーが押されました");ここについて説明してもらえれば助かります。
>>180
わかりやすい説明ありがとうございます。
mainに見えても実はWinMainとゆうことですね。WinMainでprintfが使えないのはしっています、ですが、
http://web1.nazca.co.jp/studioh/diary015.html
if(ev.type == SDL_KEYDOWN) //キーが押されたかどうかの確認。
{
printf("キーが押されました");
で使われています。普通の環境で"キーが押されました"が表示されないのは当たり前でしょうか?

184 :
>>183
> 普通の環境で"キーが押されました"が表示されないのは当たり前でしょうか?
「Windowsの」普通の環境では表示されないのが当たり前
stdout.txtに出力されるのが当たり前

185 :
違う人だけど答えます
printfの出力先は"stdout"ってのは常識ですよね?(俺もまちがってるかも)
で、windowsのSDLではこの"stdout"ってのは[stdout.txt]とイコールなわけです。
だから、printfは[stdout.txt]に出力するようになっているわけです。
だから、このプログラムはもし、何かしらのキーが押された場合に、[stdout.txt]に
キーが押されました
と、書き込むプログラムなわけです。
要は、SDLのイベントの処理の仕方を説明したプログラムです

なんだか、いろいろ勘違いされてるみたいですが、SDLにウィンドウに文字列を描画する、WinAPIでいうところのTextOutのような関数は存在しません。
もし、ウィンドウに文字列を描画したいなら皆さんが言うようにSDL_ttfや、SDL_kanjiなどを使うか、
自分でbitmapを用意して、それを描画しなくてはなりません
というより、stdoutとか理解してますか?
SDL以前にCがあやふやではないですか

186 :
たぶん>>185の言っていることの一割も理解してないんじゃないかと

187 :
多分分かってるのは「違う人」だけだと思う

188 :


189 :
すまん、誤爆、、、
>>187
どこか、間違ってますか?できれば教えてもらいたいのですが、、、
こんな長文書いといてなんですが、自分もC

190 :
は結構微妙なんで

てか、すみません
なんか、ビューワの調子が、、、

191 :
>>185>>要は、SDLのイベントの処理の仕方を説明したプログラムです
完璧理解しました、簡単なことでしたね。
どうもありがとうございます。
みなさん親切にどうもありがとうございました。

192 :
簡単なことでしたね、じゃない。捨て台詞みたいでちょっと感心しないな。
お前には難しかったんだろ。

193 :
まぁまぁ。俺も同じこと書きそうになったけど。

194 :
っていうかVC++2005EEでもbcc+devでもビルド設定でコンソールアプリケーションに指定したら普通にでるよ
処理止めないとすぐ消えるけど

195 :
>194
いわれてみれば、確かにw
思いつきもしなかった

196 :
if( g_WindowActive ){ // ウィンドウがアクティブかどうか
move();
  draw();
} else {
SDL_WaitEvent(&g_Event);
}
if(!PollEvent()){ // SDL_PollEventでイベント処理
break;
}
こんな感じでウィンドウがアクティブのときは動いて、
非アクティブのときは止まっているようにしたいんですけど、
ウィンドウが完全に見えている状態で非アクティブからアクティブになっても
止まったままなんです。
非アクティブのときにCPU使わないようにしようとWaitEvent入れたらこうなりました。
どうすれば対処できますか?

197 :
>>196
そもそもアクティブ/非アクティブの状態の取得をどうやってる?
完全に想像だから間違ってたらすまんが、SDL_APPACTIVEは最小化されてるorされてないしか判定しない。
フォーカスの有無ならSDL_APPINPUTFOCUS

198 :
>>197
PollEvent()内で、このような処理をしています。(ほかのイベントは省略しています)
while(SDL_PollEvent(&g_Event)){
switch(g_Event.type){
case SDL_ACTIVEEVENT:
if( (g_Event.active.state & SDL_APPINPUTFOCUS || g_Event.active.state & SDL_APPACTIVE) && g_Event.active.gain == 0 ){
g_WindowActive = false;
}
if( (g_Event.active.state & SDL_APPINPUTFOCUS || g_Event.active.state & SDL_APPACTIVE) && g_Event.active.gain == 1 ){
g_WindowActive = true;
}
break;
}
}
最小化からの復帰と別ウィンドウからフォーカスが移って再描画されるときはまた動き出すのですが
ウィンドウが完全に見えているときのフォーカスの変化に反応してくれないんです。

199 :
>>196
SDL_WaitEvent() で拾ったイベントを捨ててるからだろ…

200 :
SDL_WaitMessage()のあとにもイベント処理をはさむようにしたらうまくいきました。
どうもありがとうございます。

201 :
先生!SDL_AddTimerが0しか返してくれやがりません><

202 :
>>201
エスパーすると SDL_Init() に SDL_INIT_TIMER を渡してないんだろう

203 :
ごめんなさいSDL_InitにSDL_INIT_TIMER渡してないだけでしたごめんなさい

204 :
美しすぎる流れに完敗

205 :
久々にいいモン見れた
今日は夢に美少女が出てくるに違いない

206 :


207 :
質問です。SDL_VIDEORESIZEが送られてくるタイミングっていつですかね?

208 :
SDL_SetVideoMode()で SDL_RESIZABLE を渡してウィンドウ作って
そのウィンドウをリサイズしたときじゃね?

209 :
ごめんなさい間違えた。SDL_VIDEOEXPOSEです。

210 :
>>209
Windowsとかだと普通にウィンドウが表示されたときや隠れたウィンドウが表に出たときに
飛んでくると思うけどXだと全然こなかったりするね…
あとは別スレッドでデータ更新してメインスレッドで描画する場合に別スレッドから
自前で SDL_PushEvent() で送ってやるときとかに使うこともあるかな…

211 :
X の場合 GL と併用しない限り送られてこないと思う。
Windows の場合は WM_ERASEBKGND のタイミング。

212 :
ありがとうございます。
SDL_PushEvent() を使えばInvalibateRect()のように
SDL_VIDEOEXPOSEを送ることができますか?

213 :
>>212
あんな感じで使える。
でもSDL_ExposeEvnet には範囲がないから範囲指定はできない。

214 :
ありがとうございます。
ちょっと調べてきます

215 :
しかしゲームだと毎フレーム描画することが多いのであまり使われる機会はないよなぁ…
ツールとかなのかな?

216 :
Wizのような疑似3DRPGやADVならアリかもしれないな

217 :
>>215
ですよね、毎フレーム描画するほうが自然ですよね。やっぱり舞いフレーム描画することにしました。
レスしてくれたみなさまどうもありがとうございます。

218 :
すみません、ちょっと質問です。
C++で使うときに便利なラッパーて存在しますか?
自分で書いていたんですけど、途中まで書いたところで嫌んなってきたので……

219 :
>>218
http://sourceforge.net/projects/sdlmm/
http://sourceforge.net/projects/sdloo/
http://sourceforge.net/projects/sdlucid/
C++使わないから使い勝手は知らん。
というか>>218が使ってみてレポートしてくれたりするとみんなの参考になるかも?

220 :
>>218
今の流行は、g3d だな

221 :
>>220
あの辺はラッパーの域を大きく越えてもっと高レベルなゲームエンジンだろ

222 :
見てみました。 >219
……全部死に絶えているようです。
あと、実装も古かったのであまりC++らしく無かったです。自分の実装の方がまだましだった……

223 :
じゃ!がんばれ

224 :
あっと、一つだけ質問。
イベント構造体って、どういう使い方するのが一般的?
やっぱり設定を済ませたらとっととイベントキューに押し込む&使うときだけイベントキューから取り出す
ということで、イベント構造体を保存しておくようなことはあんまり無い?

225 :
>>222
要するに気にいらなかったんだなw
ぶっちゃけるとSDLみたいな低レベルのAPIをそのままC++ラップしてもあまり嬉しくない。
余程潔癖なC++プログラマじゃない限り C の API そのまま呼ぶのは別に苦じゃないしね。
g3d まで行かなくてももう少し高レベルのゲームエンジンとか特定ジャンル向けAPIなら
使ってみるかという気になるけれど。

226 :
遅レスすみません。
G3Dがなかなか良さそうだったので色々弄っていたのですが……初っ端のstarterサンプルも走らない……。
なんで〜〜〜〜。ドキュメント通りに設定したのに……。
>225
>余程潔癖なC++プログラマじゃない限り C の API そのまま呼ぶのは別に苦じゃないしね。
まあ、そうですけどね。リソース管理といってもboost::shared_ptr併用すれば大した手間じゃないし。
それは判っているのですが、ついゴテゴテとクラスを構築してしまって……
普段boostの便利ツールを使っているとどうも納得行かなくて。
基本的なところを実装できたらなんかのフレームワークでっちあげてみようかな。

227 :
そして目的がゲーム製作からライブラリ製作へ・・・w

228 :
ありがちなパターンだよなw

229 :
ゲーム作るより楽しかったり

230 :
あるな。すげえよくわかるw

231 :
おれもだw

232 :
クルマ一台一人で作るより
ネジや歯車を一人でつくる方が完成する可能性高いしな

233 :
やべえ、楽しい。SDL自体のボリュームも大きくないから、絶望的な気分になることも無いですし。
しかし、SDL側で管理しているリソースとかが所々にあって、ちょっと厄介ですね。
使い込みながらブラッシュアップしよ。

234 :
>>233
ゲームを作りながらライブラリを作ることをお勧めします。
できたらある程度高レベルなライブラリ(ってかゲームエンジン)を頼む。

235 :
すみません、質問です。
SDL_mixerでoggファイルを再生しようとしてるんですが、
再生中中断して次の曲を鳴らすと一瞬ノイズが入ってしまいます。
Mix_PlayMusic、Mix_HaltMusic以外に何か必要な手順等あるんでしょうか?
Mix_OpenAudioでバッファ長4096を指定していて、
これを1024とかにしたら注意しないと気づかないくらいノイズも短くなるんですが、
根本的な対策にはなってないので…。

236 :
>>235
音を瞬時に切ったらプチっていうノイズになるのは当たり前
横着せずにMix_FadeOutMusic()とMix_FadingMusic()を使うべし

237 :
>>236
ありがとうございます。
知りませんでしたが、ものすごく基本ぽいですね…。

238 :
http://www.libsdl.org/
今繋がらない、うちだけ?orz

239 :
つながらないです

240 :
繋がるようになった

241 :
SDL_imをSDL 1.2.12で使ってる人います?
パッチを手動でシコシコ移してるんだがめんどくせぇ・・・

242 :
g3dのstarter動かないんだが>>218の解決策ギボン

243 :
サルベージ!

244 :
msys+mingwでSDLを試しているんですが、bmpの読み込みはできるんですが
pngの読み込みができずに頭を抱えています。
SDL_image.hをインクルードするとあるんですが、やってみてもIMG_Loadの
ところでビルドエラーになってしまいます。
$ gcc -o myLibTest.exe myLibTest.c myLib.c -g -O2 -I/usr/include/SDL -D_GNU_SOU
RCE=1 -Dmain=SDL_main -DHAVE_OPENGL -L/usr/lib -lmingw32 -lSDLmain -lSDL -mwind
ows
C:/DOCUME~1/ほげ/LOCALS~1/Temp/cca2baaa.o: In function `SDL_main':
C:/msys/1.0/home/moregusi/SDL-1.2.12/mytest/myLibTest.c:65: undefined reference to `IMG_Load'
collect2: ld returned 1 exit status

pngを読み込もうとしない場合は無事実行できます。どなたか教えてくだされ。

245 :
>>244
SDL_imageが必要
http://www.libsdl.org/projects/SDL_image/

246 :
SDL_imageをどのように環境に組み込むのが正しいのでしょうか。
同ディレクトリ内にSDL_image.dllを置いて、includeディレクトリ内にSDL_image.hをおいて
ビルドをしてみましたが状況に変化がありませんでした。

247 :
ttp://cefiro.homelinux.org/resources/doc/SDL_image/install-mingw32-04.html
すいません、質問をするまえに調べるべきでした。
こちらをみながらがんばって見ます。
>>245さんありがとうございます

248 :
たびたびすいません。
無事SDL_imageのインストールは済んだようなのですが、
ひとつのディレクトリ内に SDL-1.2.12 SDL_image-1.2.6 
と並べてインストールしたんですが、SDL-1.2.12内で作業している場合
どうすれば正常にpngを読み込めるようになるでしょうか?

249 :
標準のままだとmake installで/usr/local以下の同じディレクトリに
SDLもSDL_imageも入るはずだけど、変更したってことかな?
もし標準のままだったら/usr/local/bin/sdl-config参照

250 :
オプションに-mSDL_imageと、-I -Lでインクルードファイルとライブラリ置いてあるディレクトリへのパス指定すればいいんじゃね?
漏れは全部SDLの中にぶちまけてたけど(笑

251 :
ごめん-mじゃなく-lだった

252 :
-lSDL_imageオプションの指定をすることで無事ビルドがとおるようになりましたが
IMG_Load(ファイル名文字列)の返り値ポインタがNULLになってしまうようで
表示にいたりませんでした。画像自体はサンプルにあるものなので不正なファイルで
ないと思うのですが。
SDL_imageライブラリを扱う際にzlib,libpngなどSDL_image以外の拡張も
必要になるのでしょうか?
ttp://hp.vector.co.jp/authors/VA016379/cpplib/libpng.htm

253 :
perrorを使ってみるとなんか出してくれるかも?

254 :
便利な関数を教えていただきありがとうございます
perror(ファイル名文字列)をためしてみましたが、No errorと出力されました。
IMG_Load関数の挙動に問題がある様子です。
どこの落とし穴にハマっているんでしょう...

255 :
なにかエラーが出たら、IMG_Loadで呼び出されるSDL_RWFromFileでエラーがセットされるようなので、
IMG_Load呼び出した後にSDL_GetError();をやってみるといいかもしれないです。

256 :
ごめんなさい、正しくは
printf("%s\n",SDL_GetError());
です

257 :
さっそくためしてみました
Unsupported image format というエラーがセットされていました
念のため読み込まれるpngの透過情報をなくしてみたりと
データ側をいじってみましたが変化がありませんでした。
一度SDLの環境を見直してみます

258 :
ttp://risky-safety.org/~zinnia/sdl/intro/intro.1.html
こちらのサイトの解説に
「SDL_imageではjpeglibやlibpngなどを使いますし、 」とありますが、
windowsXP上でmsys+mingwの環境の場合もlibpngなどの導入は必須なんでしょうか?
どなたかご存知でしょうか。


259 :
>>258
そのSDL_imageはどこで手に入れたんだ?
自分でコンパイルしたのだとしたらコンパイルする前にlibpngを入れとかないとだめだよ?
で、libpngをコンパイルするには zlib を入れとく必要がある。
なんか基本的なとこがわかってない気がするな…

260 :
とりあえず、聞く前に試そうぜ?

261 :
SDL1.2.13のリリース情報
SDL1.2.13はちょっとしたバグフィクスリリースです。
【一般注意事項】
インテルCompiler10と共に建てるときの固定連結路誤り。
公共のヘッダーから迷っているC++コメントを取り除きました。
【unix注意】
セキュア・オペレーティング・システムにSDL_SoftStretch()でのクラッシュを固定しました。
UTF-8サポートなしでX11実装に未定義のシンボルを固定しました。
XFree86インテルのIntegrated Graphicsドライバーの上にXVideoを使用するときのBadAlloc誤りの周りで扱われます。
取り除かれたもの時に止まることの代わりにリナックスのすべてのジョイスティックのために、スキャンします。
sdl.m4でのsdl-コンフィグ議論の固定使用
【Windows注意】
ビデオドライバーが32のbppビデオモードより高く報告するとき、クラッシュを修理しました。
24ビットのOpenGLビデオモードを設定した後にデスクトップを復旧しながら、修理されています。
Windows95/98/MEに窓のタイトルを固定しました。
拡張マウスボタンのためにSDL_BUTTON_X1とSDL_BUTTON_X2定数を加えました。
引用されたコマンドライン議論のサポートを加えました。
【Mac OS X注意】
SDLは現在、Mac OS X10.5(ヒョウ)に建てます。
速成の意味ありげなテキストが入力した高周波を固定しました。
ESCキーが押されて、ユニコード翻訳が可能にされるとき、ビープを修理しました。
サポートをスクロールするtrackpadを改良しました。
あるジョイスティックを届け出るジョイスティック帽子を修理しました。

262 :
>>261 乙。
でもすげぇ機械翻訳でわらったw

263 :
プログラムも専門領域だよな
その機械翻訳やばすぎるwww

264 :
>インテルCompiler10と共に建てるとき
build with ICC10かwww 「建てる」ってカコイイなw

265 :
拙作ながら SDL でこんなものを作ってみました
http://www.starruby.info/

266 :
なかなかお手軽そうですね。パフォーマンスはどう?

267 :
>>266
ありがとうございます。
「スーパーファミコン風」を目指しているもので、
低解像度 (320×240) で 30FPS 程度のゲームを作るならば全く問題ないです。
解像度をあげると (640×480) ちょっと苦しくなるかも。
- Pentium M 1.6 GHz
- メモリ 512 MB
- 解像度 320×240
- 16×16 のスプライトを 200 個表示
で、最大 180 FPS ほどは出ました。

268 :
お、何か面白そう。時間取れたら見てみよう

269 :
>>265
↓みたいのないの?
Greenbear Laboratory - Ruby/SDLスターターキット
http://mono.kmc.gr.jp/~yhara/w/?RubySDLStarterKit

最近こういうの増えたけど今一つはやらないんだよね。。。
MyGame
http://dgames.jp/ja/projects/mygame/
Miyako メインサイト
http://www.twin.ne.jp/~cyross/Miyako/

270 :
RubyでSDL使うメリットが少ないからだろう

271 :
>>270
HSPみたいにRubyも裾野を広げたいって
Rubyの制作者が煽ってなかったっけ?

272 :
>>271
kwsk

273 :
>>269
> ↓みたいのないの?
> Greenbear Laboratory - Ruby/SDLスターターキット
ないです。
ワンコマンドのインストーラーは作ったのでそれでいいかなと。
exerb は入っていないですが。
> 最近こういうの増えたけど今一つはやらないんだよね。。。
そうですね。
いろいろな人に使われるためには、クラスライブラリだけじゃ足りなくて、
なんらかのエディタが要るんじゃないかと考えています。

274 :
HSPってそこそこ小さいバイナリになるし同人も商業利用もOKじゃん
Rubyつかうとどうなんの?
HSPについてるエディタって大したことないし、その辺のがネックじゃないの

275 :
逆にHSPのエディタってたいしたことなさ過ぎてそれでやる意味自体薄いよな
むかしemacsのhspモードとかあったな

276 :
ってスレ間違えたごめん

277 :
>>274
「そこそこ小さく」はないですが、 Exerb を使えばバイナリにはできます。
ソースコードがまんま exe に含まれてしまうので、
みられたくないならば暗号化などの工夫は要りますけど。
RPG ツクールの例を鑑みるに、商用利用は可能です。

278 :
> HSPについてるエディタって大したことないし、その辺のがネックじゃないの
> 逆にHSPのエディタってたいしたことなさ過ぎてそれでやる意味自体薄いよな
コマンドプロンプトでの作業すら抵抗を感じる程度の初心者相手を想定しています。
エディタ自体の機能が重要ではなくて (むしろしょぼくてもよくて)、エディタの中で
- ゲームが作れる
- ゲームが実行できる
という安心感こそが必要と思いました。
と、書いている途中で調べましたが、吉里吉里や NScripter とかにはエディタがありませんね。
あると思い込んでいました。
やっぱり >>269 のスターターキットみたいなのがいいのかなあ。
SDL の話から脱線してますね。すみません。

279 :
>>278
やっぱHSPの層狙うんならそれぐらい簡単である必要があるんじゃない?
もしくはrubyのダウンロード、インストールから
ちょっと画像表示して動かすまでの馬鹿丁寧なチュートリアルがあればいいんじゃねww
完全に説明通りの手順踏むだけでいいような

280 :
>>279
> もしくはrubyのダウンロード、インストールから
> ちょっと画像表示して動かすまでの馬鹿丁寧なチュートリアルがあればいいんじゃねww
やっぱりチュートリアル書いた方がいいですよね。はい。今度書きます。

281 :
動かない・・・
画面が表示されてすぐに、エラーが出てとまります。
OSはwindows XP sp2です。

282 :
他に書くこと無いのか……?
エラー内容とかさ。

283 :
エラーメッセージ何もない。windowsのエラー報告が出てそれだけ。

284 :
>283
だからそれを書け
あとSDLのバージョンも

285 :
すいませんSDLスレだということを忘れてました。
上のはStarrubyの話です。Game.runをすると止まります。

286 :
>>285
使っていただきありがとうございます。
> 上のはStarrubyの話です。Game.runをすると止まります。
Ruby の例外が出ていて止まっているんでしょうか?
SEGV ですか?
質問の問答を始めるとスレ違いになるので、どこかに避難しましょうか。
Google アカウントをお持ちでいらっしゃるならば、
Google Group に書き込んでいただければ幸いです。
http://groups.google.com/group/starruby

287 :
色々なlibを使用しない、おすすめなWindow managerって
どれですか?

288 :
>>287
スレ違いだろ

289 :
>287 板違いだが,あえてevilwmと言っておく

290 :
学校の課題で、Ruby/SDLを使ってゲームを作っているのですが、
コンパイル、実行しようとすると、次のようなエラーが出てしまいます。
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
/usr/lib/ruby/1.8/sdl.rb:220:in `open_imp': Couldn't open audio: No available audio device (SDL::Error)
from /usr/lib/ruby/1.8/sdl.rb:220:in `open'
from main.rb:34
オーディオデバイスに異常がありそうなことは分かるのですが、
解決法がわからず困っています。

291 :
サウンドデバイスが見つからないと言っている

292 :
なんかどっかで見たな、オイw

293 :
>>290です。
>>291
板違いかもしれませんが、どうやったらサウンドデバイスを認知してくれるようになりますか?
それに対し、こちらの環境で知りたいことがあれば、また載せたいと思います。

294 :
やっぱサンプルゲームが必要だよな

295 :
>>293
ここはお前の宿題を教えてやるスレじゃねーんだよボケ。
だいたい人にものを聞くのに教えてくださいも言えないのか?
困ってます?ああそう。

296 :
>>295
ここにきた私が間違っていました。
すいませんでした。

297 :
何が間違ってたのか分からないんじゃ、また同じことの繰り返しだぞ

298 :
そろそろ卒業のシーズンだし時間やばいんだろうなwww
プログラムと環境どっちが悪いのかわからんけど、
プログラム弄って回避する手段がないなら環境変えればよくね

299 :
sdl_Imageって、gifやPNG、jpgは読めるのに、icoは読めないのか。残念だ。

300 :
>>299 が実装してパッチ投げればいい

301 :
>>300
本末転倒。

302 :
なんで?

303 :
icoのフォーマットは難しいのかね?

304 :
昔調べたと限りではすごく簡単なフォーマットだと思ったが…
確かbmpの中身みたいなのを複数詰め込めるような程度だった気が…
で、中身がbmpと大差ないのでSDL_imageでサポートするメリットもないだろうなぁ

305 :
やっぱりSDLは過疎スレだよな
日本でSDLなんて使ってくれるのはRubyくらいか
そんで>286にランチャーとか言うのが増えてるよ
目指せHSPならRuby,SDL,Exerb,RDEとかのセットと
簡単ドキュメント+サンプルでいいのだろうけど
GUIがどうしようもないんだよな・・・まあこれはSDL関係ない問題かw
IronRubyとか.NETでよければ、それでいいのかな・・・

306 :
>>305
特に語るネタがないんだよ…
SDL自体に複雑な機能が存在しないから使える人は悩むことなく使えるし、
SDL自体がライブラリとしてすっかり枯れてるからAPIの変化とかもないし…
SDL 1.3とか2.0とか出ればまた違うんだろうがな

307 :
>>305
286 の中の人です。
Ruby の GUI ライブラリはないわけではなくて、僕は ruby-gnome2 か Visualu Ruby のどっちか使おうかなと思ってます。
テキストエディタは、こちらで用意しなくても、各人好きなもの使ってもらった方がいいと思ったんですが、どうなんでしょう。
IronRuby だと C で書いた拡張ライブラリが動かないのが問題です。

308 :
>>306
早くでるといいな・・・
>>307
駄文にレス有り難う。HSP基準で考えるとだけど、それだけで始められるセットがいいのかなと思ったの。
GUIはWindowsネイティブっぽい見た目が必要だけど、マルチOS対応にすると選択肢が微妙かなと思う。
エディタもF5押したらたとえ保存しなくても、実行して試せるみたいなHSP仕様(違ったかな?)だといいかなと。
普通の人ならメモ帳で始めたりするだろうし、Rubyに色分け対応したエディタは少ないから。
.NETは見た目がWindows標準になるから幸せに思えるのかな。

309 :
>>308
> HSP基準で考えるとだけど、それだけで始められるセットがいいのかなと思ったの。
なるほど。
メモ帳 (か、ユーザーの好きなテキストエディタ) のプロセスをランチャー内で立ち上げられるようにすれば
いいかなと思ったのですが、こちら側でも用意した方が初心者は安心なのかもしれませんね。
メモ帳 + α程度のものだったら作れそうなので検討してみます。
シンタックスハイライトはきつそうです。
> .NETは見た目がWindows標準になるから幸せに思えるのかな。
そうですね。ネイティブ描画は重要ですね。
ruby-gnome2 はファイルを開くダイアログが萎え萎えなので悩んでます。
Visualu Ruby はネイティブ対応なのでその点安心でした。
wxRuby は、描画はネイティブなんですが、挙動が不安定なので見送りました。
.NET で (GUI) ライブラリを書いて、 Ruby (または C) から叩こうと思ったんですが、できるのかな。
RubyCLI というのがありますがまだ開発途中っぽいなあ。

310 :
RubyCLR だた

311 :
.NETならIronRubyかな
.NET使うんだったらTao.Sdl通して全部C#使って書いちゃった方が楽で早くて速いけど

312 :
以前ゲームライブラリを C# で実装し、ゲーム自体は Ruby を使うという無茶なことをしたことがあります。
SDL の C# へのポーティングは Tao.Sdl ではなくて、 YaneuraoSDK.NET のものを使用しました。
http://star-engine.sourceforge.jp/

313 :
>>309
わざわざエディタ作るくらいなら、RDEや適当なエディタでも付けた方が良さそうだけどね
個人的にはzip解凍したら、そのままRubyとStar Ruby(SDL)とIDE(エディタ)が使えるのがいいかな
チュートリアルとか大変だと思いますが、頑張ってください。期待しています。
あと.NETまぜるのならIronRubyでいいやは同意。
そういやYaneuraoSDK.NETも最近音沙汰無いよね

314 :
>>313
> わざわざエディタ作るくらいなら、RDEや適当なエディタでも付けた方が良さそうだけどね
既存のエディタに上手に組み込めればいいんですが。
エディタを作ることはメインではないので程々にしようかと思います。
Eclipse プラグインとかは使いたくないしなあ。
> 個人的にはzip解凍したら、そのままRubyとStar Ruby(SDL)とIDE(エディタ)が使えるのがいいかな
なるほど。それを目指そう。
> チュートリアルとか大変だと思いますが、頑張ってください。期待しています。
ありがとうございます!

315 :
あげ

316 :
もしかして、最近のSDLってstdout.txt生成されない?

317 :
もしそうだとしても、freopenしちまえばいいだけだからあんまり困らなくない?

318 :
Mix_LoadMUS_RWに使ったrwをMix_FreeMusic後にcloseするとアクセス違反で死ぬんだけど、
これはMix_FreeMusic内で解放してくれてるって解釈でいいの?
調べると「再生中も開きっぱなしにしないとマズいよ。再生終了後にcloseするのが正しいよ」って情報がぼちぼち出てくるんだが……。
デフォで実装されるようになってから仕様変わったんかな。

319 :
>>318
仕様上は Mix_FreeMusic() だけで問題ないはず。
でもすべてのフォーマットでちゃんと実装されているかどうかは知らない。
# Mix_LoadMUS_RW()ってどのフォーマットでも動くようになったんだっけ?

320 :
>>319
サンクス。
1.2.7でmp3に対応、1.2.6でOgg Vorbisに対応したいうようなこと(たぶん)がCHANGESに書いてある。
個人的にはoggで動くなら問題ないなーって感じなんで他の形式については知らない。すまん。

321 :
SDL_mixerでwavしか再生されないんだが。
サンプルプログラムを動かしてみたらmp3やoggが鳴らない。
SDLのバージョンは1.2.9、SDL_mixerのバージョンは1.30なんだが何故?

322 :
スマン。
SDL_mixerのバージョンは1.2.8だった。

323 :
その SDL_mixer に libogg や smpeg がリンクされていないんじゃない?
そもそもその SDL_mixer をどうやって手に入れたんだ?

324 :
誰かネタ投下頼む

325 :
カーソル左クリックでスタートボタンを作りたいのですが、
SDLを使う場合Cではどんな風に書いたらいいのでしょうか?

326 :
>>325
誤記です。
×カーソル→○マウス

327 :
イベント周りを調べてみれ

328 :
環境も書かずに書いてみるけど、
Uint8 *keys = new Uint8;
keys = SDL_GetKeyState(NULL);
(略
delete keys;
とかするとSDL_GetKeyState()でデバッガうまく動かなくね?
ステップ実行だとうまく通過するんだけど通しでやるとそこでプログラムが止まっちまう
デバッグでなく通常実行なら動くんだけど
で、どこでこんな書き方したのか探してたんだけどとりあえず↓にしたら正常になったからキニシナイ
Uint8 *keys = SDL_GetKeyState(NULL);

329 :
>>328
どう見ても動かなくて当然です。
C/C++勉強しなおしましょう。

330 :
どうみてもこれですね本当にありがとうございました
ttp://www.tacoworks.jp/software/SDLdoc-jp/html/sdlgetkeystate.html
>返されたポインタはSDL内部の配列へのポインタですので、 呼び出し側で解放してはいけません。
やっぱ変だとは思ったんだけど、なんでデバッグで通しで実行した時だけ止まるのか気になって

331 :
それ以前の問題だよ
ポインタ勉強しなおせ

332 :
newする必要なんてない
しかも、そのnewしたやつは開放されてない

333 :
>>330
デバッグ版のほうが不正なコードに対するチェックきついんだよ。特にメモリまわりはね。

334 :
サンクスコ
だから動かなかったんですか
理由もわかったしデバッガとかのバグでなくてすっきりした
>>331-332
330の時点でその辺は分かってるyo
自分でもなんでこんなの書いたのかすげー不思議だ

335 :
SDL1.2.10以降でSDL_WM_SetCaptionに日本語を使うと文字化けしてしまうのですが、
2byte文字を化けないようにする方法はないでしょうか。

336 :
つSetWindowText

337 :
>>335
UTF8で渡せとかそういう話じゃなかったっけか?

338 :
ソースをUTF-8で保存してればできたような。(≒>>337
SDL_EnableUNICODEしないといけないんだっけ?

339 :
ソースをUTF-8ってか関数に渡すバイト列がUTF-8になればいい。
SDL_EnableUNICODEはキーイベントの振舞を変える関数だから関係ないはず。

340 :
そうでした、ゴメン

341 :
こっちこそゴメン…
あやまるから、もう一度やり直そうぜ!

342 :
SDLに付属のサンプルプログラム testgl.c に関する質問です。
icon.bmpの周りの黒い部分を切り取った状態で、スマイルのみを
表示するように改造するにはどのようにしたらよいのでしょうか。
描画前に以下を追加すればよいとの情報がありましたが、うまくいきませんでした。
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glColor4d(1.0, 1.0, 1.0, 1.0);
そもそもこのbmpにはアルファ値が含まれていないのでしょうか。

343 :
bmpは普通アルファチャネル入ってないしょ。
今ならPNGあたりが妥当か。あとはTGAとか。

344 :
SDLなんだし、パレットからアルファチャネル捏造してもよさそうだな

345 :
>>342
-logocursor や -logo で出てくるicon.bmpのテクスチャだよな?
icon.bmp は 4bit カラーの DIB なんて当然アルファとか入ってない。
SDL_LoadBMP() で icon.bmp をロードした後に
SDL_SetColorKey(image, (SDL_SRCCOLORKEY|SDL_RLEACCEL),*(Uint8 *)image->pixels);
とかやって透過色を指定してやる。そうすると SDL_GL_LoadTexture()でアルファ付きの
テクスチャにしてくれるはず。そうした上で描画前に
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glColor4d(1.0, 1.0, 1.0, 1.0);
とする。あるいは、
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
とかでテクスチャの色でポリゴンの色を置き換ちゃってもいいかも。

346 :
>>345
できました!!本当にありがとうございました。
こんなことで2日ほど悩んでました。
ちなみに、このSDL_SetColorKey()で指定しているキーというのは、画像のはじっこの色を
指定している、という理解であってますか?

347 :
*(Uint8 *)image->pixelsが左上のピクセルを指してるので、その理解で合ってる。
SDL_MapRGBで任意の色を指定してもいいよ。

348 :
なるほど、ありがとうございました。
いろいろ弄ってみます。

349 :
>>348
いろいろがんがれ!

350 :
あげ

351 :
SDLのKEYUP/KEYDOWNのエッジ検出というか変化した瞬間の検出する機能ってないですよね?

352 :
event.type

353 :
>>351
普通にイベント処理するか、ゲームみたいに扱うキーが少ない
なら自分で1フレーム前の状態を記憶しておくかじゃね?

354 :
サンクスコ
イベント処理ってのがよくわからなかった('A`)
ので、記憶させるほう作って終わしますた
bool isKeyboardPressAndRelease(int key){
 Uint8 *keys = SDL_GetKeyState(NULL);
 static int oldkeys[SDLK_LAST];
 if(keys[key] == SDL_PRESSED ) {
  oldkeys[key] = SDL_PRESSED;
  return false;
 }else if(oldkeys[key] == SDL_PRESSED ) {
  oldkeys[key] = SDL_RELEASED;
  return true;
 }
 return false;
}

355 :
sdl_ffmpegなんてものもあるんだな
ただmplayerで再生するより重くなっちゃうけど

356 :
よく見てないが出来るのはデコードだけなのか
エンコードも出来ればリプレイをそのままようつべにうpとか
夢が広がりまくりんぐなんだが

357 :
サイト消えてる?

358 :
アクセスできんね

359 :
復帰してる模様

360 :
Note: We've moved libsdl.org to new hosting and the mailing lists have not been restored yet.
This is a high priority and will be fixed as soon as possible.
Please report any other issues you find ASAP.
Thanks!
サーバ変更か

361 :
SDLも十分扱いやすいんだが、DXライブラリほどではないんだよな
ちょっとSDLのラッパー作ったらはやるんじゃないか?これ
マルチプラットフォームだし

362 :
SDLのラッパーなんて腐るほど出てるよ
Cスタイルで手軽に使えるのが特徴なんだから需要ないと思う
DXライブラリみたいにハンドルまで何でもかんでもint型でラップしないと使えないようなこともないし

363 :
勢いないから誰も居ないと思ったらROMがいるようで安心した
考えてみればSDL使うやつは自分でラッパー作るなりしてやってるな

364 :
SDL_gfxの日本語ドキュメントあれば教えてください。
ぐぐったけど無いみたいで…ソース読むしかないですか

365 :
亀レスだけど初心者のSDLに少しだけかいてあったかも

366 :
OpenGL使ってゲーム作ろうと思うんだが
SDLとGLUTの違い教えてください
二つもAPI覚えてたら頭パンクしちゃいます。OpenGLでもうカオスなのに

367 :
使ってる鳥を晒せ
教えるかどうかはそれ次第だ

368 :
OpenGL自体は計算しか行わないので、計算結果をディスプレイへ表示するためには
何か他のライブラリを使って行う必要がある。
SDLは画像の表示、音声の再生、(マウスやゲームパッドなど)入力機器のコントロールを行うためのライブラリ。タイマーやスレッドなどの機能も提供。
GLUTは画像の表示と、(マウスやキーボードなど)入力機器のコントロールを行うためのライブラリ。
ゲームを作りたいだけならGLUTは捨ててSDLに絞ればいい。

369 :
>>367
Ubuntu
>>368
ありがとう。とてもわかりやすかった
SDLとOpenGLでマルチプラットフォームなゲーム作りに挑戦するよ

370 :
ごらんの有様

371 :
Glutがあればティーポットが簡単に表示できるだろうが

372 :
ティーポットをキャラにしてゲームを作りたいなら両方リンクすればいいじゃない

373 :
>>371 glutがなくてもgluがあればティーポットは表示できる。
しかしゲームでティーポットだけの表示もないだろ

374 :
>>373
>しかしゲームでティーポットだけの表示もないだろ
ネタにマジレスすぎだろ…
あと glutWireTeaport() や glutSolidTeapot() で簡単に表示できるって話じゃないの?

375 :
マジかよ…
俺のこの5年は一体…

376 :
SDL_LoadBMP で確保したSDL_Surface(1) と
SDL_CreateRGBSurface で確保したSDL_Surface(2) で
何か違うのかな?
それぞれscreenに表示する関数に渡した後、
(1)は描画されるのに
(2)は何も描画されない(アプリが落ちることもない)
関数に渡さず、どちらも確保した関数内で
screenにSDL_BlitSurface+SDL_UpdateRectした場合は、表示されるんだけどね

377 :
SDL_LoadBMP内ではSDL_CreateRGBSurfaceが呼ばれてるから本質的には何も違わない。
SDL_Surface構造体の中身を表示して比べてみればいいんじゃない。

378 :
ABAのようにSDLでゲーム開発していてオープンソースなところを教えてください
コード見て勉強したいです

379 :
>>378
「ペンギンコマンド」とかどうよ。
http://www.linux-games.com/penguin-command/

380 :
SDL.NETで作ったソース公開されてるゲームないかな?
SDL.NET自体情報が少なくて、へたれな俺にはぴんとこない。
codezineでやってたのでやっと少し理解できたぐらいで。
できれば日本人が作ってるのがいいんだが・・・

381 :
>>379
海外か。やっぱ国内のは少ないのか…
見てみる。ありがとう

382 :
>>380
ttp://d.hatena.ne.jp/fslasht/20080722#1216721957

383 :
質問です。
SDL_DisplayFormatAlphaでα情報を持たせたSurfaceに
SDL_SetAlphaで全体α情報を付加させたいのですが
どうもうまくいきません。
これは仕様で出来ないのでしょうか?

384 :
>>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.
とあるので、仕様で不可能になってるんだと思います。

385 :
そうですか…
何回やっても出来ないわけだ
素早い回答ありがとうございました。

386 :
SDLでフルスクリーンを使用するときに、使っているディスプレイでの最大の解像度(1680x1050)でフルスクリーンにしようとするとウィンドウ化、フルスクリーンを繰り返してしまいます
それ以下の対応した解像度(たとえば1440x900)では正常に表示されます
原因として何が考えられますか?

387 :
>386
カメレスだが
OSはWindows?
下で動作してる古いDirectXが対応してないとか

388 :
こんなスレあったのか。これこそ俺が求めてたスレ
しかし過疎ってんな

389 :
プログラム板にも類似スレあるからなぁ
http://pc12.2ch.net/test/read.cgi/tech/1103655588/

390 :
Linux板にもあるんだな
http://pc11.2ch.net/test/read.cgi/linux/1025048946/
どこも過疎なんだな

391 :
まぁどの板も見てる人は同じだったりするんだがなー

392 :
>>391
あるあ…あるあるwww

393 :
>>391
禿同

394 :
pitchってなんなんだよ

395 :
サーフェスが内部で持ってるバッファの横幅のバイト数
主に効率の理由で、SDL_CreateRGBSurfaceは要求されたwidthより多めにバッファを確保することがある
そのためwidthとは別に、実際のバッファサイズpitchを提供している

396 :
大抵は
width * BytesPerPixels == pitch
になるんだがwidthが中途半端な値の時に行末にパッディングを入れて
効率よくアクセスできる様に行頭位置を調整したりする環境があったりする。
そういう環境では、
width * BytesPerPixels != pitch
になるんで座標(x, y)の値をpixelsから得るときなどpitchを使う方ようにする。

397 :
SDLで垂直同期待ちをするにはどうしたらいいのでしょうか

398 :
SDL_SetVideoModeでSDL_FULLSCREEN | SDL_HWSURFACE | SDL_DOUBLEBUFを指定してSDL_Flip()

399 :
できないです

400 :
>>397
環境が分からんけど OpenGL 使うなら
SDL_GL_SetAttribute() で SDL_GL_SWAP_CONTROL に 1 を設定する

401 :
ローグライクのようなビジュアル的な計算が不要なゲームだと、
OpenGL使わずSDLだけでも十分って認識でおk?age

402 :
>>401
SDLもいらね。CUIで十分だ。

403 :
SDLの本が全く無いのがおかしいと思います

404 :
じゃあ書くしかないよね!期待してる

405 :
シンプルなのに本が必要って理解できない。
関数の説明とかサンプルがあれば十分だと思う。
言語を本を見て勉強する人も理解できない。
文法なんて数日で慣れるし、実際にコーディングした方が早い。

406 :
>>402
タイル版が好きです。

407 :
実行ファイルに埋め込んだリソースのBMPを読み込むにはどうしたらいいんですか

408 :
SDL_RWFromMem と SDL_LoadBMP_RW で

409 :
プログラムの中でgzファイルを解凍して使うにはどうしたらいいですか

410 :
もうそれ SDL 関係なくね?
zlib 用意して gzopen, gzread, gzclose
あとはここ
http://www.gzip.org/zlib/rfc-gzip.html

411 :
>>408
すいません。SDL_RWFromMemに与えるべき引数が分かりません。
VisualStudioでresource.rcという下記内容のファイルを作って、
RSC_BMP BITMAP "./test.bmp"
test.bmpを実行ファイルに埋め込むことはできているのですが、どうやって取り出したらいいのでしょうか。

412 :
え、そこから?
なら FindResource, LoadResource, LockResource で

413 :
実行優先度を設定する関数とかない?
今のところ窓でしか使ってないんだけど、
せっかくのマルチプラットフォームでWin32API使うの勿体無い('A`)

414 :
可搬性のあるやり方は未だ無いと思う
__WIN32, __darwin, __linux, __unix, __FreeBSD で場合分けするしか無いんじゃない?

415 :
結局そうなるよね。

416 :
マルチプラットフォームw

417 :
>>416
は何がおかしいのか分からない。

418 :
時々居るよね。意味もなく笑う人。

419 :
Winだと、printfとかが使えなくなかったっけ。

420 :
そんなことないよ

421 :
>>419
標準出力の内容がstdout.txtに書き出されるとかそういうのじゃなくて?

422 :
>>421
そう、それです。めんどくさいよね。

423 :
SDL_SetVideoModeを繰り返し呼んでも問題ないでしょうか

424 :
SMPEG_playで再生中の動画の現在の再生時間を得るにはどうしたらいいですか

425 :
SDL_getinfo()でできましたありがとうございました。

426 :
サンクスコ
とりあえず__WIN32のだけ適当に作るわ

427 :
_WIN32はあったけど__WIN32はなかったような

428 :
やけにCPU使用率高いなと思ったらSDL_VideoDriverName()の結果が"windib"でさらに
SDL_SetVideoModeの戻り値のflags見たらSDL_HWSURFACEがセットされてねえし。
ネットの情報調べたらデフォルトでwindib使うようになっててハードウェアアクセラレーション使いたかったら
opengl使えとか書いてあるしまじ糞ライブラリ

429 :
デフォルトでハードウェアアクセラレーションの効かないグラフィックライブラリ。
SDL_putenv("SDL_VIDEODRIVER=directx");やっても遅くなったし。。

430 :
>>427
ちょっとSDL_main.h辿ってたら
#if defined(__WIN32__)
だったからこのまま使ってるんだけど、
WIN32、_WIN32、__WIN32、__WIN32__とも動作するみたいだった

431 :
マウスがウィンドウの内部にあるかどうか判定する方法ありませんか?
ウィンドウの外にいくとマウスがクリックしたことになるので。

432 :
たまに >>482 みたいな勘違い君がいますがSDLはグラフィックスライブラリではありません.
- 画面の初期化
- ジョイスティック,マウス,キーボードでの入力
- PCM出力
のためのライブラリです.
ってか昔Windows環境のデフォルトドライバは dirextx だったんだが
ちょっと前に windib がデフォルトになった.現状の SDL の directx ドライバ
ってDirectX 5 とかだしね.
今の directx ドライバ使ったとしても SDL_FULLSCREEN|SDL_HWSURFACE を指定して
かつ実際にハードウェアサーフェスになってなければただのメモリコピーだし速くもならない.
素のSDLのBitBlitで作るのはスーファミくらいのレベルのゲームまででそれ以上
やりたかったらOpenGLを使う.これ世界の常識.あとマルチプラットフォームに
興味ないなら最初から DirectX 直接使っておけばよい.
# SDL 2.0 とかになればこの辺の状況も少しは変るだろうけど…

433 :
>>482に期待

434 :
OpenGLでやるにしてもSDLとOpenGLをつなぐ部分の資料を少なすぎてすぐいきづまるし。まじSDLは糞。
Linuxで2Dゲーム作りたい人くらいしか存在価値ない。winでやるならwin32api直の方がまし。
やっぱオープンソースは糞。人間は金が絡まないと本気にならないのだ。

435 :
testgl.cで十分だろ。

436 :
>>434
いきづまるのは勝手だが、SDL+OpenGLはなんの問題もないよ。
とりあえず、
ttp://www.libsdl.org/opengl/SDLgears-1.0.2.tar.gz
でも見ればいいと思うよ。

437 :
>>434
>>435 のおっしゃるとおり
ttp://risky-safety.org/zinnia/sdl/sourcetour/
こちらさんのhtmlのソースを眺めて、たどる

438 :
煽りのフリした教えてくんか糞が。
夏だな。

439 :
お前がな

440 :
いいや、俺が夏だ

441 :
あたしの夏を取らないでよ!

442 :
夏の荒らしさん乙です

443 :

あーめんどくせー
衝突検知用の画像作りたいんだけど、pngから透明部分以外を一定値として抜き出す楽な方法ない?
ってふと戻り値boolな関数でreturnさせたら0,1でちょうどいい具合だったのでそういう事にするチラシの裏

444 :
>> 443
一般的に言えばゲームとかだと画像通りの当たり判定を用意したりしないと思うが…
# まぁゲームとはかぎらないけど…

445 :
>>443
Photoshop使用
またはlibpngを使用して自作、とか

446 :
陰影などで実際よりも大きくなってる絵の場合、
見た目より当たり判定が大きくなるのは嫌だな。

447 :
C++でゲーム作るならツール作成用にサブ言語覚えるのは必須だよな

448 :
自分はツール作成にVB 2005使ってた

449 :
C++/CLI

450 :
悪いこと言わないから.NETならC#かVB使いなさい

451 :
やっぱり VB 2005 + C++/CLI + アンマネージコード(SSE使用)
C++/CLIではアンマネージコードを含むことができるので、速度がきわめて重要な部分に使う。

452 :
まぁ、小物はスクリプト系(そのときの気分で言語色々、場合によっては秀丸マクロも)
GUIが必要ならDelphiを使ってる
本格的なツールって大抵は既存のフリーでまかなえるし、データ整形がメインだから
秀丸とUWSCで間に合うよな

453 :
そしてさらに小物の場合はbashのシェルスクリプト
さらにさらに小物ならシェルスクリプトにせずbashシェルに長い1行で打ち込む

454 :
SDLの話題ないんだな

455 :
SDL使いながら自前でソフトウェアレンダリングしてる人ってどれぐらいいるんだろ。

456 :
3Dのレンダリングのこと?ワイヤーフレームなら自前処理したことあるけど結構楽しいな
SDL/OpenGLは環境構築ややこしくて諦めたorz
今はいい解説サイト増えたからまたやってみようかな

457 :
3D目的でSDL使うメリットって何かある?

458 :
>>456
OpenGL つかえる環境作って SDL 使える環境を作ったら終わりだろ…
どこがややこしいんだ??

459 :
>>457
インタラクティブなことをしようとするならオーディオレイヤと入力レイヤを備えているのはメリットだと思うが。
OpenGLを表示に使いたいだけならglutなりgluxなり使えばいいわな。

460 :
[GLUTを使用すべき場合]
瞬間的にウィンドウサイズを変更できるようにする場合。
簡単なプログラムをすばやく作成する場合。
[SDL+GLを使用する場合}
ウィンドウサイズを変更させたくない場合。
(ブルームエフェクトなどを使用する場合、ウィンドウサイズ変更時にエフェクト用の
バッファを割り当て直す必要がある)
音も鳴らす場合

461 :
GLFWというものもあるね
gamedev.orgのスレではこれがプッシュされてたみたい
http://www.gamedev.net/community/forums/topic.asp?topic_id=444230
GLUTは長い間メンテされてないからあまりお勧めしないとかなんとか

462 :
gl系は画像読み込みがものすごく不親切だった記憶がある

463 :
前にビットマップファイル作ってヘッダ消して読み込むってやらせてたけど
流石にこれは俺が悪いよな

464 :
オッス、おらニート
サマージャンボで3億円当たっちまってボーっと遊びまくってらこのスレ見つけたわけだ。
おまいらどうやって生活費まかなってんの。後学のためにおしえてくんろだぺ。
あ、俺もう寝るから、明日でもえぇよ。じゃーねぃ。?x2665;

465 :
GLFWは前に試してみたけどlinux環境ではスタティックリンクできなくて
フォーラム見たら作者が仕様だと開き直ってたので捨てた
Win前提なら問題ないみたいだけどそれじゃGLFW使う意味半減だからなあ
最近は改良されてるのかもしれないが…

466 :
そこでgleeですよ

467 :
HSPでSDL_BlitSurface呼ぶとエラーになる
もうねるし

468 :
HSPからSDL呼んで何か嬉しいことってあるのか・・・?

469 :
>>467
そろそろ起きろよ池田ァ!!

470 :
ドンだけ寝てんだよw

471 :
OpenGLメンドくせーだのDirect3Dメンドくせーだの言うが

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

のだよ
偉い人にはそれがわからんのです。

472 :
もう諦めたし

473 :
WindowsにおけるSDLはDirectXを利用しているんだけどな。

474 :
DirectX5だっけか?

475 :
win32apiのラッピングライブラリじゃねえの

476 :
SDL+OpenGLでゲーム作ってます
ゲームの流れは
動作処理→描画→Swap→Delay

動作処理→Swap→描画→Delay
のどちらがよいのでしょうか?垂直同期待ちについてもよくわからないのでそこと包めて教えてください

477 :
二個目は動作処理→描画→Delay→Swapでした
連投申し訳ありません

478 :
映像信号は左から右へ1ドットずつ、それを上から下へ1ラインずつ送っているんだ
下まで送りきった後、また上から送りなおすまでに若干の準備期間があって
その期間が来るのを待つのが垂直同期待ち
描画が終わったからと言ってすぐSwapしてしまうと、
送信前と送信後の境目で映像を切り替えてしまうことがあり
ちらついたように見えてしまう
これを俗にティアリングと呼んでいる
垂直同期待ちをする場合はSwapの前に必ずDelayが入る

479 :
言いたいことは分かるけど476が勘違いしそうだな
SDL_Delayとティアリングが起こるかどうかは直接関係ない。
垂直同期待ちを有効にしてある場合はティアリングが起きないように
Swap時に自動的に内部で待機が行われる(>>478のいうDelay)ので
描画とSwapの間にSDL_Delayを入れる必要はない。むしろ入れたら遅れすぎてしまうかも。

480 :
あぁそうだ。478で言うDelayはSDL_Delayのことじゃなくて、単なる待ち時間と捉えてくれ。
補足サンクス。

481 :
>>476
Swap ってことはダブルバッファ使ってるって前提で言うと
1) 垂直同期待ち ON(SDL_GL_SetAttribute() で SDL_GL_SWAP_CONTROL に 1 を設定している)なら
SDL_GL_SwapBuffers() で自動的に垂直同期待ちするので SDL_Delay() などは必要ない。
処理→描画→SDL_GL_SwapBuffers()[自動でVBLANK待ち]
2) 垂直同期待ち OFF なら SDL_Delay() で適当な時間待って SDL_GL_SwapBuffers() を呼べばいいんじゃないだろうか。
処理→描画→SDL_Delay(適当)->SDL_GL_SwapBuffers()
1) はモニタのリフレッシュレート依存のフレームレートになる。
2) はティアリングするけど、自分でフレームレートの調整ができる。
ってとこじゃないだろうか。
ちなみに俺の環境(Debian) だと環境変数 __GL_SYNC_TO_VBLANK に
0 以外の値が入ってないと SDL_GL_SWAP_CONTROL に 1 を設定しても
垂直同期待ちしない。

482 :
質問ですが、
FR・LGのROMの0xF00000〜0xFDFFFFを
使っても大丈夫なのでしょうか
既出だったら申し訳ありません

483 :
SDL_FULLSCREEN で真ん中に寂しく表示される場合があ
るけど、同じ SDL 使ってて mplayer とかはどんな解像
度でもちゃんと画面一杯に出るのは mplayer が頑張っ
てるってこと?

484 :
>どういう理由であれ、ハードウェアによる解像度変更ができない場合は
>一段階解像度の高いモードが使われ、黒い背景の中央に表示ウインドウが置かれます。
だから、例えば最低解像度が640*480の環境で320*240を指定するとそういう状態になる。
確実に画面いっぱいに表示したければ、SDL_ListModesで作成可能な解像度を調べて
適切な拡大処理をすれ。

485 :
mplayerがどうしてるかは知らんけど、たぶんオーバーレイってやつだと
思うよ。SDL_CreateYUVOverlayで作れるけど、対応してればハード
ウェアで拡大してくれる。前にためしで使ってみたけど、色指定が面倒
だから使うのやめた。画面一杯に拡大しても、CPU使用率ほとんど
変わらないのは魅力的だったけど。

486 :
mplayer のログに YUV planner がどうの、と出るから
多分それだと思う。使ったことないや…
http://en.wikipedia.org/wiki/YUV

487 :
ffmpegのチュートリアルが詳しかった。
http://www.dranger.com/ffmpeg/tutorial02.html

488 :
一番いいのは、ユーザーに選択させること。
こっちは800x600前提で作ってりゃいい

489 :
描画部をアダプタパターン的にリファクタリングしてス
ケーラを挟むようにした。とりあえず RGB のままでソ
フト的にスケールさせて、アプリ側に問題ないようなら
オーバレイを試してみるよ。
ffmpeg のライブラリ使うと変換も楽そうだし。
http://www.dranger.com/ffmpeg/tutorial08.html
>>485
ヒントサンクス。

490 :
ttp://cefiro.homelinux.org/topics/SDL/printable/setup-win32-mingw-1.1-20030402.html
を参考にMinGW5.1.6にsmpeg 0.4.4を入れようとしているのですがmakeに失敗します。
いくつかのサイトで-lstdc++が必要とのことで
cd smpeg-0.4.4
env LIBS="-lstdc++" sh configure --prefix=/mingw
make
エラーの内容は
undefined reference to 'SDL_XXX'
undefined reference to '__cxa_pure_virtual'
などです。SDLはインストール済みで/mingw/lib/libSDL.aはあります。
どなたか解決策をご存知ないでしょうか。

491 :
>>490
make CC=g++ CXX=g++ LD=g++
と打つと成功する可能性があります。

492 :
>>491
アドバイスありがとうございます。
コンパイルやリンクにc++の代わりにg++を使うようになったのですがエラーメッセージは変わらずです・・・
エラーを出力して調べてみたところ
Warning: This library needs some functionality provided by -lSDLmain.
I have the capability to make that library automatically link in when
you link to this library. But I can only do this if you have a
shared version of the library, which you do not appear to have.
と出ていました。SDLがリンクできていないのがエラーの原因のようですが上記メッセージと関係あるでしょうか?
ちなみにPATHを通したC:/MinGW/binにはSDL.dllというshared libraryがあります。
もし何かわかる方がいたらアドバイスください。

493 :
>>492
SDL のダイナミックライブラリが見つからないと言っている。
libSDL.a はスタティックライブラリ。

494 :
ああ、dll はあるのか。
>>490 に書いてあるパスとよく見比べてみろ。

495 :
>>494
dllは/usr/local/binじゃなくて/mingw/binにインストールしたんですが、MSYSでecho $PATHとやると
.:/usr/local/bin:/mingw/bin:/bin:...
となっていてSDL.dllがおいてある/mingw/binはパスに入ってます・・・もうお手上げ
よく見たら
ttp://cefiro.homelinux.org/topics/SDL/printable/setup-win32-mingw-1.1-20030402.html
のサイトにMinGWでコンパイルしたsmpeg-0.4.4のバイナリがおいてあるのでそれを/mingwに展開したらとりあえず使えるようになりました。

496 :


497 :
同じプログラムでSDLをダイナミックリンクしたものと、スタティックリンクしたものを作成したのですが、
ダイナミックリンク版ではコンソールへ標準出力されていたものが
スタティックリンクでは出ないような現象が発生しています。
SDLのリンク方法によってこういう現象は発生するものなのでしょうか。
また、リンク方法が原因である場合、スタティックリンクで標準出力へ出力する方法は
あるでしょうか。

498 :
>>497
標準出力に表示されない設定でコンパイルされたライブラリをリンクしてるだけでしょ


499 :
なんだこのデジャブは

500 :
>>498
1ライブラリが本体のソースの動作まで変えてしまうものなんですね。
勘弁してほしいものですが...

--enable-stdio-redirect
ですかね。試してみます。
でも現状ではファイルにリダイレクトされてるわけでも無いようですが...

501 :




makeしたら負けだと思う





502 :
正月早々審議中ですがな

503 :
floatに頼子だ割ったプログラムソースを目指す人のためのブランド「float志向」

504 :
SDL_MixerでBGMを任意の位置でループさせる方法はないものか・・・。
やっぱりSDL_Audioで作るしかないのかな

505 :
どうしてもSDL_Mixerでやりたきゃオーディオソースを切っちゃえばいいじゃん
どうせならOpenAL使おうぜ

506 :
SDL_WM_SetCaptionで日本語を表示したいのですがどうすれば良いですか?

507 :
最新バージョンだと文字コードがUTF-8だったと思うんで変換して渡せばいいはず。
変換の仕方はググって下さい。

508 :
>>505
ありがとうございます

509 :
変換の仕方がわかりませんでした。

510 :
こんなんあったよー。
Shift-JIS -> UTF8
ttp://www.atmark.gr.jp/~s2000/r/rtl/encode.html
ttp://www2s.biglobe.ne.jp/~satosi/soft/sjis2utf8.h

511 :
IBMのICUを使おうぜ

512 :
変換できました。
UTF-8は可変長なのが糞。

513 :
SDLdoc-jp を置いている tacoworks.jp の管理人です。
サーバの移転を行うため、3/15 のあたりに DNS 情報の切り替えを予定しています。
ドメイン名自体の変更はないので移転後も
ttp://www.tacoworks.jp/software/SDLdoc-jp/ のURL は
そのままアクセスできますが、
切り替えの時期に一時的に見えなくなるかも知れません。
もしそうなったら申し訳ありません。

514 :
openglを使う時に最初の画面が真っ白になるのを回避できませんか?
できれば画像を読み込んで、いきなりそれを表示したいのですが。

515 :
>514
もしかしてSDL_SetVideoModeしてから最初のSDL_GL_SwapBuffersを呼ぶまでの時間が長いんじゃないのか?
ファイルの読み込みとか

516 :
いえ、別に何もしていませんが、最初の一瞬だけ真っ白になります。
それが嫌なのです。

517 :
>>514
うちではならない。
再現する最小のソース書いてうpするか他のPCで試しても同じになるか試してみるか。

518 :
#include <SDL.h>
#include <SDL_opengl.h>
#include <windows.h>
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
#pragma comment(lib, "opengl32.lib")
void End(); // 終了処理
bool PollEvent(); // イベント処理
bool Init();
SDL_Surface *gScreenSurface;
int main(int argc, char* argv[])
{
// 初期化
if( !Init() ){
printf( "初期化に失敗しました" );
return 0;
}
// メインループ
while( 1 ){
glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
// 四角形を描く
glBegin(GL_QUADS);
// 描画色を白に設定
glColor3f(1.0, 0.0f, 0.0);

519 :
// 4つの頂点を指定
glVertex3f(100.0f, 100.0f, 0);
glVertex3f(540.0f, 100.0f, 0);
glVertex3f(540.0f, 380.0f, 0);
glVertex3f(100.0f, 380.0f, 0);
glEnd();
// 更新を画面に反映する
SDL_GL_SwapBuffers();
// イベント処理
if( !PollEvent() )break;
}
// 終了処理
End();
return 0;
}
// 初期化処理
bool Init()
{
// SDLの初期化
if( SDL_Init( SDL_INIT_VIDEO ) < 0 )return false;
SDL_WM_SetCaption("test", NULL);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
// ウィンドウの初期化
gScreenSurface = SDL_SetVideoMode(640,480,32,SDL_OPENGL | SDL_HWSURFACE);
glOrtho(0.0, 640, 480, 0.0, -1.0, 1.0);
glClearColor(255.0f, 255.0f, 255.0f, 255.0f);

520 :
glClear(GL_COLOR_BUFFER_BIT);
return true;
}
// 終了処理
void End()
{
// SDLの終了
SDL_Quit();
}
// イベント処理
bool PollEvent()
{
SDL_Event ev;
SDLKey *key;
while(SDL_PollEvent(&ev) )
{
switch(ev.type){
case SDL_QUIT:// ウィンドウの×ボタンが押された時など
return false;
break;
case SDL_KEYDOWN:// キーボードからの入力があった時
{
key=&(ev.key.keysym.sym); // どのキーが押されたかを取得
if(*key==27){// ESCキー
return false;
}
}
}
}
return true;
}

521 :
上のコードを試してみて下さい。
真っ白なウインドウが出てからちょっとしたら赤い四角形が出てくる
のですが、最初からいきなり赤い四角を表示したいのです。

522 :
>>521
OS: windowsXP sp3
コンパイラ: gcc version 3.4.5 (mingw-vista special r3)
コンパイルコマンド: g++ hogehoge.cpp `sdl-config --cflags --libs` -lglu32 -lglut32 -lopengl32
私の環境では初回起動時に一瞬、背景が透明なウィンドウが生成されてから、中身が表示されました。
二回目以降は最初から白の背景に赤い四角が表示されます。

523 :
通りすがり
OS : Linux 2.6.18-164.11.1.el5.centos.plus i686 i386
コンパイラ : cc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
コマンド : cc piyo.cxx `sdl-config --cflags --libs` -lglut
背景が黒のウィンドウができてから白の背景に赤の矩形が表示された

524 :
SDLがウィンドウ関連の処理にてこずってるようにも見える。
苦肉の策として サイズ(1 x 1) でウィンドウを作っておいてから
初期化が終わったあとでサイズ変更(or 作り直す)すると
まだマシかもしれない。

525 :
関係ないけど
>glClearColor(255.0f, 255.0f, 255.0f, 255.0f);
これ変じゃない?

526 :
画面上をクリックするゲームを作ってるんですが、
画面上でマウスカーソルを動かしまくるとイベントを受け付けないフレームが出てきます。
どうすればいいですか。

527 :
すいません。自己解決しました。
イベントキューからイベントを取り出してないだけみたいでした。

528 :
下のコード動かすと画像表示しないで画面が真っ黒になります。
イベントハンドラのセット(SDL_SetEventFilter(&filterEventsHandler);)
を画像転送の後に配置すると画像表示されるんですけど
そういうものなんですか?何かルールありますのですか?
以下ソース(D言語)
-----------
void main()
{
SDL_Init(SDL_INIT_VIDEO);
SDL_Surface *screen = SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE);
SDL_SetEventFilter(&filterEventsHandler);  // イベントハンドラ
// ビットマップ読込
SDL_Surface *image = SDL_LoadBMP("hell.bmp");
// 転送
SDL_BlitSurface(image, cast(SDL_Rect*)0, screen, cast(SDL_Rect*)0);
// イベントループ
bool done = false;
SDL_Event e;
while ( !done ) {
while ( SDL_PollEvent(&e) ) {
done = e.type == SDL_QUIT;
}
SDL_Delay(1000/30);
}
SDL_Quit();
}

529 :
SDL_Flip( screen );
したら表示されました。イベントハンドラ設定したら
プライマリサーフェイスがクリアされるとか・・・?
わからねえ

530 :
SDL_SetVideoModeのことろで、
SDL_DOUBLEBUFも指定しない場合、
SDL_Flip以外でも「誤って」画面表示される場合があります。

531 :
>>530 ありがとうございます。
逆に偶然表示されたって感じなんですね。

532 :
ウィンドウを最大化状態から、「元の大きさに戻す」をした場合に、
SDL_ResizeEvent が発生しないのは仕様なのでしょうか。
WindowsXP です。

533 :
openalで音出せなくて泣きそうになってたけど、
sdlでやってみたら何の苦労もなく音鳴らせた。
難しいものだな。

534 :
ttp://www.kekkai.org/roger/sdl/index.html
ここがすごく良かったです。

535 :
keysymの"sym"ってどういう意味ですか?
何かの略語でしょうか?

536 :
symbol

537 :
>>536
ありがとうございました。

538 :
GUI(ボタンとか)で使いやすいLIBってどれでしょうか?
軽めのやつで

539 :
WindowsでSDL使っています
ウィンドウのタイトルバーをドラッグしてるときに
処理がとまらないようにするにはどうすればいいんでしょうか

540 :
SDLのソースを書き換えてWM_MOVEを別スレッドで処理すればできると思うけどオススメはしない

541 :
>>540
Tnx よし、DirectXにしよう

542 :
亀で人違いだが
>>382
thx!
ほんとSDL.netって流行ってないなw

543 :
そんなもん俺ライブラリの一つに過ぎないんだから流行ってるも何も
SDLの人気の理由の一つとしてシンプルで簡単というのがあるけど
.NETは簡単にGPU使えちゃうからな
ブラウザ上で動く.NETのSilverlightなんかでもSDLとは比べ物にならないパフォーマンス出るんだぜ

544 :
DirectXやXNAの話か?
そっちの方が将来性あるしいいか。

545 :
古いバージョンのsdlが欲しいのですが…
MacOS9用のsdlが本家で見つかりません。

546 :
あ、http://www.libsdl.org/release/
にありました。
しかし、普通にたどれるようにして欲しいです。

547 :
SDLのサイトが壊滅的に使いづらいのは仕様

548 :
SDLで日本語入力を実装したいのですが、SDL_inputmethod、SDL_textmanager、SKK
どれがついすやすいのでしょう?

549 :
懐かしいな、SDL。昔WindowsとMacOS9で同時開発しなくちゃならなくてこれも検討したな。
結局使わずにWindows用の自社ライブラリ移植したんだけど、どうして採用しなかったか
理由忘れちまった。

550 :
書き込みテストも兼ねて・・・
なんであまり普及してないんだ?便利だと思うんだが・・・
OpenGL使ってて、ゲーム作るならGLUTよりSDL!と言われてたのに

551 :
してなくは無いだろ
SDL.dllが同梱されてるゲームやデモは結構あるぞ

552 :
ここだけしか見てないんだろ

553 :
サーセンw
でもやっぱ資料が見つかりやすくはない・・
日本語にこだわるからかもしれんがorz
使うのが簡単とは言っても初心者にもおすすめって感じでは無いのか・・・?
更新が途中で数年止まってる入門サイトとか、リンク切れしてるサイトとかあったから
もう廃れたのかと思ってしまった

554 :
ライブラリの使い方(個々の関数の仕様)を知りたいのか、
SDLを使ったゲーム作りのチュートリアルを知りたいのかわからん。

555 :
両方ですがどちらかと言うと後者です
今までは検索すれば入門サイトが2つも3つも出てくる環境でやってたので
もしかしたら探し方が甘いだけかもしれんが・・・
自分が探してるのはSDL自体の使い方というより、
SDL(SDL_imageなども)とOpenGLで作る2D、3Dゲームのごく基本的な部分
例えば画像を読み込んでテクスチャにしたりとかそのあたり
関数の仕様等は調べられるけど、具体的で決定的な使い方がわからず
「これでいいのか・・・?」といった状態です・・・

556 :
「sdl_surface texture」でわんさか出てくるんで、確かにこれ探せないなら使うの辛いかもな。

557 :
本当だ・・・orz

558 :
いろんな例のサイトがありますが自分なりにまとめてみます
ありがとうございました。

559 :
連投ばかりスマソ
うーん、、、いっぱい検索して調べれば最後にはなんとかなるけど
やっぱ初心者が容易にとっつける物ではない感じ
わがままかもしれないが、もうちょい至れり尽くせりなサイトがあってもバチは当たらないとも思った
SDL+OpenGLはクロスプラットフォームで有望な選択肢だと思ったし、いつか自分でまとめたいと思った

560 :
>>559
一口に初心者といってもいろいろあるよね。
a. OpenGLのみ経験済み。SDLは初めて。
b. SDLのみ経験済み。OpenGLは初めて。
c. SDLとOpenGLそれぞれ個別に経験済み。SDL+OpenGLは初めて。
d. SDLもOpenGLも初めて。だけどゲームは作ったことがあります。
e. ゲーム以外のジャンルのプログラムは経験済み。
f. そもそもプログラムを作ったことがありません。
g. その他
バックグラウンドもわからずに初心者って言われると上記くらいは想像できるので、
まあ>>550にはガンバレくらいしか言えないw

561 :
http://hg.libsdl.org/SDL/file/05af1b9ff46d/test/testgl.c
これとSDLのAPIリファレンス見ればだいたい分かるはず。
SDLとかGLUTは描画に専念できるから導入にはいいと思う。

562 :
これは本当にありがたい、サンクスです。

563 :
GLUTなんて使ってゲーム作る人は
DirextXのときはDXUTを使うんだろうか。

564 :
GLUTって数値計算シミュレーションの可視化とかに使うもんでしょ
DirectXで2Dゲームなら素のままで十分いける

565 :
別にDirectXでシミュレーションしたっていいんだよ。
大学とかだと研究用PCがLinuxだからOpenGLの例が公開されてるだけで。
そういう時にToolkitとして使われるのがGLUT。

566 :
>564
久しぶりに言ってみるか。
お前は何を言っているんだ?

567 :
GLUTではウィンドウの移動ができたのに
SDLではなんでできないんだろう・・・

568 :
>>567
SDL 1.2の頃はまだ不要だと考えてたんじゃない?
SDL 1.3ならSDL_SetWindowPosition()があるよ。
ttp://wiki.libsdl.org/moin.cgi/SDL_SetWindowPosition

569 :
1.3からはマルチウインドウに対応するんだっけ
窓そのものをキャラクタに見立てたウザシューティングが作れるな

570 :
なるほど、thxです。1.3に期待。

571 :
だいぶ待ってるんだが、リリースいつになるんだろうなあ。
現状普通に使えるの?

572 :
>>571
つまり、現バージョンまでを一度も使用せず、次バージョンを待ってると?

573 :
安定版にしか興味がないならSDL 1.2一択かな。
SDL 1.3には1.2にない機能が入っているから、
それらに興味があるなら1.3を使い始めればいいと思う。

574 :
いや、1.2は使い倒してる
1.3はwarning under construction! とか書いてあるけど
やっぱどっか未実装だったりすんのかなあって

575 :
これ見ながら
http://www.opengl.org/wiki/Tutorial1:_Creating_a_Cross_Platform_OpenGL_3.2_Context_in_SDL_%28C_/_SDL%29
早速1.3を使ってみたけど、
これは動いたが自分のプログラムはSDL_imageのIMG_Loadで落ちるようになった。
何がいけないんだろうか。

576 :
>>575
SDL 1.3を使ってSDL_imageをビルドしなおしているよね?
手元の環境で使う分には問題ないんだけど。

577 :
ごめん、>>576はSDL 1.3とSDL_imageの話であって、
>>575のリンク先のチュートリアルをビルドしたわけじゃないです。

578 :
コンパイル済みのBinaryのを使ってましたorz

579 :
できればzlib・libpngのビルド→SDL_imageのビルド、libogg・libvorbisのビルド→SDL_mixerのビルドとか
長い手順踏みたく無いけどその場合は安定版のSDL1.2じゃなきゃ駄目かorz
そりゃそうかorz

580 :
SDL Perl を使ってゲームっぽいものを書いてみました。
けれどゲーム製作についてサッパリ知らないもので、
ある動作を実現するのにどんな定番なやり方があるのか知りたく思っています。
ゲーム製作初心者向けのサイトやドキュメントや書籍をご存知なら、
教えていただけないでしょうか?

581 :
SDL 1.3が正式にリリースされたら、そのバイナリ(本体とSDL_imageなど)の配布が始まるんでしょうか・・・?

582 :
今更だが>>567
リサイズ時にスクリーン座標 100, 50 へウィンドウを移動させる:
SDL_putenv("SDL_VIDEO_WINDOW_POS=100,50");
リサイズ時にディスプレイ中央へウィンドウを移動させる:
SDL_putenv("SDL_VIDEO_CENTERED=1");
SDL1.2 の幾つかのビデオドライバのみの対応だけど
それと SDL1.3 正式版が zlib ライセンスになってリリース予定らしいね

583 :
ありがとう、試してみます。
1.3からはiPhoneやらandroidへの移植が可能になるみたいですが、
これもバイナリ配布で簡単に導入できるようになるんでしょうか
そこが気になって夜も眠れないorz

584 :
すいません考え方を変えます
粘着でスマソですがやっぱり情報が探せない。。。
VC使っててSDL_imageにlibpngをリンクする方法が未だわからないorz
どのサイトを見ても「pngを読むにはlibpngが必要」とだけ書いてあって
ビルド時にlibpngの存在をどう伝えるのかがわからん
SDL_mixerのoggも同じ
SDLで書いたコード見ると簡潔で初心者にもうってつけな印象だったけど
実際はやっぱりそうじゃないのか
android移植だっておそらくNDKだろうし、やろうとしたら導入で死にそうorz

585 :
ソースコード追えばいいよ
で終わらすのもあれなんで
SDL_image や SDL_mixer とかのソース内では #ifdef 使ってライブラリ利用を切り替えてる
SDL_image+libpng なら追加のオプションに
/D "LOAD_PNG"
を入れたり、
/D "LOAD_PNG_DYNAMIC=\"libpng.dll\""
なんて入れると VC++ が libpng の API を参照するようになるかもね

586 :
それとその iPhone やら Android やら DS への移植について
あれらは共有ライブラリの仕組みが無いから
否応無しに SDL をスタティックリンクしなければいけない
なので各開発者は自分の開発環境で扱えるように一からビルドする必要がある
開発環境ごとにスタティックリンクに必要なファイルは異なるわけで
余程優しい人が居なければバイナリ (ビルド済み lib ファイル等) 配布なんて無いかもね

587 :
詳しい答えをありがとうございます。
少しソースコード見てみます。
重ね重ねすみませんが、もし良ければこの質問に答えてください。
Android開発を今しているわけではないのですが、気になる事なので。
Androidは調べてみるとJavaからJNIでCを動かすようで、
結局 入力や音声はJava側でやるみたいですし(iPhoneはわかりません)、
スマートフォンの入力はパソコンのキーボードやゲームパッドと異なるので
そのまま移植というわけにもいかないと思います。
そうなると、SDL 1.3で謳っているこれらへの移植がどういった物なのかイメージが湧きません。
実際にはほとんど書き直す必要があるのでは?と思ってしまいます。

588 :
Android は『ARM CPU で動く Linux の上の箱庭』
脱獄すればそこは素の Linux
つまり組み込み Linux 向けのコードが動くし、その開発環境も流用できる
ttp://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite
もちろんプログラムはお馴染みの int main(...) から始まる
iPhone みたいなキーの無い携帯端末もあるけど
SDL_MOUSEBUTTONDOWN で液晶画面タッチは捕捉できるので
バーチャルボタンみたいな物を画面上に用意すれば良い
SDL 自体、そういう OS 毎のインターフェースの違いを吸収する役割を担ってるから
こちらはコードを使い回せるわけだね

589 :
ほうほう、なるほど!ありがとうございました。
ということはマルチタッチ的に複数のMOUSEにも対応するのか?
まだやってないけどwktkしてきた
この度はサンクスでした!

590 :
上のほうでも書かれていましたが、確認させてください。
SDL単独では垂直同期はできないということですか?

591 :
590 名前:名前は開発中のものです。[] 投稿日:2011/06/04(土) 16:34:50.15 ID:k66UbPBd
上のほうでも書かれていましたが、確認させてください。
SDL単独では垂直同期はできないということですか?

592 :
SDL_Flipで同期待ちするかもしれないし、しないかもしれない

593 :
>1の初心者の初心者による初心者の為のSDL ttp://tokyo.cool.ne.jp/sdl/
がCOOL終了で6月末に消滅する(と思われる)んだけどどうしたものか?

594 :
じゃあ、ミラーリングしといて

595 :
>>593
各個人でページのミラーをローカルにとっておいたほうがいいと思う
ミラーソフトは色々あるけど俺のオススメはPageDown
http://www.vector.co.jp/soft/win95/net/se068515.html
内容も少し古くなっているし、最新版にあわせた記述にしたいけど
時間もないからまずは今の状態でミラーリングする事を優先したい

>>594
一応がんばってるけど閉鎖までに間に合わないかも
http://wiki.game-develop.com/index.php?SDL_tutorial

掲示板のほうはもうすでに消えてるね
スパムが多かったけど、それ以前はやり取りがあったので残しておきたかった
当時の書き込み内容どこかに残ってない?

596 :
PageDownで4階層まで・他サイトを含まない・jpg,gif,lzhをDL
でDLできた。
infoseekもなくなって、COOLもなのか・・・貴重なページが無に消える・・・

597 :
貴重なサイトが無に消えるのは残念だけど、
だからといって丸々転載するのはどうなんかね?
転載するだけでもグレーなのにそれを編集するとか真っ黒だし

598 :
>>597みたいな意見もよくわかるけど実際どうするよ?
丸々転載は複製権、編集は同一性保持権にひっかかると思う
グレーなんて言い方してる所をみると著作権を知らないんだと思うけどどっちも真っ黒
現時点での判断基準はサイトに書いてあったこの文章がヒントになると思う
>なお、サンプルソースおよび私の作成したデータの使用には特に条件はつけませんが、
>著作権は放棄していません
>まぁ常識の範囲で自由に使ってもらって問題はないと思います
>私の作ったデータは自分のゲームに取り入れて使ってもまったくかまいませんが、
>フリー素材の場合は製作者のサイトなり連絡先なりで使用条件を必ず確認してください
まぁ、SDLはもともとゲームメーカーが開発して使っていたもので、今はGNU LGPLのオープンソースなんだけど、
そのあたりの肌感覚にあわせると「改良して公開するのは善」みたいな所もあると思うわけよ
そして2ちゃんねる的にもおまえのサイトは俺らのもの的な妙な一体感というか感覚があると思う
たしか作者ってここの住人だったよな?違ったらごめん、前スレ残してないからうろ覚え
プロフィールに2ちゃんがきっかけって書いてあったからこっちかム板のどっちかだとは思うけどな
一番確実なのは作者に連絡を取る事だけど、今までずっと放置されてる所をみると返事がある可能性は低いと思う
そんなわけで俺一人でどうこう考えても仕方ないのでおまえらがどう考えてるのか聞きたい
ちなみに俺は別にいいんじゃねーのという考えです
>>597が転載ならグレーゾーンになると考えているなら、ミラーリングしたアーカイブをアップローダに置いておくのが
落としどころになると思っています
丸ごと別サイトに置いてもいいけどな。

599 :
うだうだ言う前に作者には連絡したんだよね?

600 :
>>599
言いだしっぺの法則

601 :
一応説明しないとわからないと思うのでしときますが
連絡していつまでに返事がなかったらどうするとか
それまでに保全どうするのとか
連絡するならするでどんな条件で誰が保守するんだとか
そのあたりも含めた相談です。
ちなみに私は面倒な展開になったら手を引くつもりなので
皆を巻き込んでおこうという腹なのですが>>599さんは
SDLに興味はおありですか?
ちなみに変な物アップしたらwiki管理人に迷惑かかるんじゃねーのとかも
懸念してはいたのですがよく見たら私の文章が勝手にいっぱいコピペされてるので
そのあたりはもう気にする必要はないよね、お互い様なんだからって感じです(怒ってるわけじゃないですよ、念のため)
というかコピペするだけしといて、コピペブログするなとかいって荒らしてるのはおまえらですか?
あまりの手法にガクブルでしたよ
というわけでそろそろ返事は貰えましたか?>>599さん

602 :
>>601
俺を巻き込むなw

603 :
返事来たヨ。
転載、改変自由だってさ

604 :
じゃあ早速作者の名前を改変するとするか

605 :
別に得もないだろうにww

606 :
出版社から「本を出しませんか?」と声がかかったときに重要じゃないか!!!

607 :
ライターで食っていけるほど売れると思ってんの?

608 :
どう解釈したらそう読めるんだ……

609 :
macで使ってみたいんだが……
フレームワークとテンプレートをコピーしてxcodeで立ち上げるまではいくんだけどそこで
syntax error before
no such file or directory
で11のエラーが出る
初心者丸出しで悪いけど誰かアドバイスしてくれないだろうか

610 :
とりあえず,ソースコードとコマンドラインを張ろうか
SDLとコンパイラのバージョンがあればなお良し
ってか,パスが通ってないように思えるが

611 :
自己解決しました
アホみたいな見落としだった……

612 :
どう自己解決したのか書け

613 :
パス通してなかったかフレームワークを置いてなかったか。

614 :
もう皆さんは、SDL-1.3で開発してるのですか?

615 :
いや、古いまま
別に困ってないし・・・
1.3って何か新機能あるの?

616 :
>>614
SDL 1.3を使っていますよ。
>>615
ttp://wiki.libsdl.org/moin.cgi/Introduction
> Full 3D hardware acceleration
> Support for OpenGL 3.0+
> Support for multiple windows
> Support for multiple displays
> Support for multiple mice, tablets, etc.
> Force Feedback available on Windows, Mac OS X and Linux
他にも細かい機能追加や仕様変更はあるはず。
ただ、SDL 1.3でサポートを打ち切られたプラットフォームもあるから、
SDL 1.2じゃないとダメという人もいると思う。

617 :
Nintendo DS向けのコードとか入ってるし、ML見るとiOS向けにがんばってる風もあるよね1.3。
iOS向けはRotation周りで苦戦してるっぽかったからまだ実用できないと思うけど。
> Support for multiple mice, tablets, etc.
ちなみにtabletsはIntuosとかの話かと思いきや、コード見ると
wintab(いわゆるWacomのペンタブ)じゃなくてタブレットPCの話だったぜ。

618 :
添付のプロジェクトファイルだとVC++がSDL_gfx.libを作ってくれないから
マクロをBUILD_DLLからDLL_EXPORTに書き換えて解決

619 :
過疎ってるみたいだけど質問です
Win7 64bit + VS2010 C++ ExpressでSDL1.2.14-1を使っています。
この環境でSDL_PollEventを実行すると以下の様なエラーが出て困っています。
'hoge.exe': 'C:\Windows\SysWOW64\RpcRtRemote.dll' を読み込みました。Cannot find or open the PDB file
hoge.exe の 0x75cfb9bc で初回の例外が発生しました: 0x000006F4: NULL 参照ポインターがスタブに渡されました。
色々ググって見ましたが解決方法がわかりませんでした。

620 :
とりあえずリリースビルドでやってみればいいんじゃね

621 :
>>620
リリースビルドでも出るんです
例外が出ているけどストップさせなければ問題なく動いている(ように見える)んですが
出来れば解決したいところです。
尚、PollEvent以外のイベント取得系の関数でも同じエラーがでるようです

622 :
あ、もう一つ情報ですが
デバッグでステップ実行すると例外は発生しないようです…

623 :
とりあえず原因はわかったので追記です
SDL_ACTIVEEVNETが発生すると例外が飛ぶようです
解決方法はまだわかりません。

624 :
エラーメッセージが似てますが、参考になりますか?
ttp://dixq.net/forum/viewtopic.php?f=3&t=5719
ttp://watery.dip.jp/slash/archives/400

625 :
解決したので報告です
関係ないと思って書いてなかったのですがSDL_mixerを一緒に使っていました。
で、SDL_mixerの初期化(Mix_OpenAudio)を
SDL_Initの後に呼び出すとSDL_Initで確保したメモリの一部が破壊されてしまうようです
Mix_OpenAudioの後でSDL_Initすると問題は解決しました。
詳細は不明ですがとりあえずこれで進めてみます。
レスくれた方ありがとうございました

626 :
SDLの周辺ライブラリが一斉にアップデートされた。
SDL_image 1.2.11
SDL_mixer 1.2.12
SDL_net 1.2.8
SDL_ttf 2.0.11
各ライブラリがzlibライセンスへ移行した。

627 :
朗報だなあ。これで1.3使う意義がぐっと増したと思う。
ライセンスだけのアップデートって訳じゃなくて、結構いろいろ変更点あるみたいだし。
SDL_ttfに「欧文以外についてキャッシュを改善した」って書いてあるっぽいが
パフォーマンスよくなってるのかしら。

628 :
WindowsだとHWの恩恵をうけるには3Dで作成しないといけないのねぇ
2Dゲームなのに....3Dで作りなおそうかな

629 :
1.2 が zlib になったのかと思った。
結局、1.3 から変わるんだよな。まだ stable じゃないみたいだが

630 :
>>628
SDL 1.3は2D描画にDirect3DやOpenGLを使用可能なので、
3Dのアクセラレーションが効けば
SDL 1.3を使うだけでもとりあえずは速くなる、はず。
>>629
SDLの周辺ライブラリは特にバージョンを1.3とかに引き上げる様子がないから
現状のままライセンスのみSDL 1.3に合わせたんじゃないかな。

631 :
1.3でデバイスロストってどうしたら検知できる?

632 :
[SDL] Creating SDL2
ttp://lists.libsdl.org/pipermail/sdl-libsdl.org/2012-January/083550.html
SDL 1.3はSDL 2.0になった模様。
それに伴いライブラリの名前が変更されるため、SDL 1.2との共存が可能となる。
周辺ライブラリの名前もSDL2_imageなどに変更されるみたい。

633 :
あと、SDL 2.0からSDL 1.2互換APIが削除されたようだ。
test以下の古いAPIを使ったサンプルもいくつか削除されている。

634 :
動いてるなって感じだ。
思いがけずスレのタイトルと一致したな

635 :
ウィンドウの生成とサウンド部分にのみSDLを使用したいのですが、
その場合、普通に生のGL描画関数を直接使えるでしょうか?
SDLでラップされてる?描画関数を使わないって事ですが。

636 :
>>631
Direct3Dレンダラの話でいい?詳しくないけどソースを読んだか印象では、
SDLの関数がデバイスロストが原因でエラーを返した場合、
エラーメッセージにDEVICELOSTという文字列を含めるのでそれで判定する感じかな。
例えばSDL_RenderPresent()内部でIDirect3DDevice9::Present()がデバイスロストのエラーを返すと、
SDL_GetError()は"Render(): DEVICELOST"という文字列を返す。
>>635
ttp://mono.kmc.gr.jp/~nojima/hiki/?2D%A5%B2%A1%BC%A5%E0%A4%CE%A4%BF%A4%E1%A4%CEOpenGL%2FSDL%C6%FE%CC%E7%281%29
ここで紹介されているようなこと?

637 :
>>636 前半の最後の行間違えた。
SDL_GetError()は"Present(): DEVICELOST"という文字列を返す、です。

638 :
>>636
まさにこういう事でした。ありがとう
SDL1.2だとOPEN_GL3以降に対応してないとか、どっかでちらっと見たような気がしたので
完全にGL関数がSDLにラップされてて、いちいち経由しないと
使えないようになってるのかと勘違いしました。

639 :
>>636
わざわざソースまで追ってもらって申し訳ない。ありがとう。
でもSDL_RenderPresentって返値voidなんだよなー。
他の関数は失敗したら0以外を返すからGetErrorで調べろ、みたいな感じなのになんでこれだけ、という気がする。
Presentが失敗する環境が少数派(Direct3Dだけ?)なのか。

640 :
>>639
SDL_RenderPresent()の戻り値はvoidだけど、
内部ではIDirect3DDevice9_Present()のエラーチェックを行なってて、
かつ実際にエラーが起きたらSDL_GetError()が返すメッセージを設定している。
なのでデバイスロストが起きたらSDL_GetError()で拾えるはず(良い方法ではないとは思う)。
ただ、D3Dレンダラのソースを読むと、ちまたのデバイスロスト関連記事にあるような
リソースの破棄だとかその手の処理がなくて、単に無視しているように見える。
この振る舞いが正しいかどうか分らないけど、実際困るようなら開発者に働きかけるのが良いと思う。

641 :
ラップなんかされてねーYO!
アハ
カモ
イエ
(ここでフレミング右手の法則、の手)

642 :
OpenGLにはデバイスロストなんてないのに
なんでDirectXにはあるんですか?

643 :
誤爆スマソ

644 :
SDL_Surfaceを任意のピクセルサイズ(たとえば64x64)で生成するのは、SDL_CreateRGBSurfaceを使うしかないのでしょうか・・・

645 :
スクリーンサーフェイスはグラフィックボードとAPIが対応してるものしか出来ないのは
当然ではないか。

646 :
OH shit

647 :
SDL_CreateRGBSurface を使いたくない理由をはっきりさせてからじゃ

648 :
ぐは、3D化するのめんどいからglTexSubImage2Dで手抜きOpenGL対応したら
さらにおそくなった。まあわかってたけど真面目にやろう

649 :
うーむ・・・SDL_gfxやSDL_rotozoomを使わずにスクリーンの拡大に挑戦しているが、なかなかうまくいかないな・・・

650 :
SDLと相性がいい。OpenGLラッパーってありますか?

651 :
どれもラッパーというよりは3Dエンジンだけど
OpenSceneGraph
http://www.openscenegraph.org/projects/osg
IrrLicht
http://irrlicht.sourceforge.net/
OGRE
http://www.ogre3d.org/
ぐらいじゃないかな

652 :
拡大縮小回転とかやりたいだけじゃないの?
うん、俺も知りたい。gfxは出来がいいとは思えない

653 :
つーかソフトウェアでその辺やろうとすると重すぎてきついよね

654 :
>>651
 レスありがとうございます、やはり3Dエンジン使ったほうが簡単に作成できますね
でもそうなるとSDL使う必要ないToTような。
SDLは2D専用とて使用していきます。

655 :
>でもそうなるとSDL使う必要ないToTような。
確かに必要はなくなるけど、
3Dエンジンは描画がメインなので、
音や入力などはSDLを併用して用いる方法もある。
逆にBillboard機能とか2D部分だけを使っていくなら、
3Dを導入するにしてもそれほど面倒ではない。
もちろん、最後は好みの問題だが…
SDLとOpenSceneGraphはどちらもOpenGLのみなので、
組み合わせ的には干渉が少ないかな。
海外だけと一応チュートリアルもあるので張っとくよ。
http://www.cs.clemson.edu/~malloy/courses/3dgames-2007/tutor/index.html

656 :
というかSDLの利点って音声と入力のAPIがポータブルなところだろ
それと、簡単な何かを作るのには手軽ってこと
「簡単に何かを」じゃないからな

657 :
ポータブルで最速なら面倒でもいいんだけどな

658 :
Mac SnowLeopard&Xcode3からLion&Xcode4に変えたら
"ld: symbol(s) not found for architecture x86_64"
と出てbuildが通らない・・・
SDLは-arch i386 -arch x86_64付けてmakeしたんだけどな。
もはやお手上げ\(^o^)/

659 :
そこは「俺が対応させてやるぜ!」だろJK

660 :
もう、どうにもならんしよく考えたらSDLあんまり必要ないことに気づいた
OpenGL+glut+OpenAL+Freetype2+libpngでやります。

661 :
じゃあglutもいらんじゃん。

662 :
各種イベント(キーボードとかマウス)は欲しいです(^q^)
あと、ObjectiveC全然わからんです。

663 :
基本OpenGLの各種ライブラリでやってるんだけど、
画像ファイル読み込みと音声処理のためだけにコレ入れるのってアリ?

664 :
それだけなら別にSDL使わなくてもって感じはするかな

665 :
音声処理->OPENAL
画像->libPNGなど
キー,ジョイスティック入力->各OSのAPI
でいいよ

666 :
>>663
画像もOSGとかエンジン寄りのライブラリなら複数対応している気もするが。
そういえば以前SDL1.2系ベースで作った自前フレームワークも
ゲームループとキー入力、OpenGL2Dテクスチャ位しか機能無いな。
glutの代わり程度には成るので、
SDL_opengl.hを1.3系のに入れ替えてOpenGL3.0環境にして、
http://www.arcsynthesis.org/gltut/
↑のサイトのチュートリアルを移植して勉強中。

667 :
2.0でSDL_RenderCopyExで回転できることそれだけで嬉しい

668 :
2Dのゲームは作りやすくなったよね

669 :
>>668
作ったものをぜひ見せてください

670 :
>>669
試しに作ったくそげーでよければ
ttp://www1.axfc.net/uploader/File/so/81760.zip
DLパスはneet
デバイスロストの対応だけど、SDL_RenderPresentした後
エラーメッセージにINVALIDCALLが含まれてたらrenderer作り直しにしてるけど
これでいいのかが解らない
手持ちの環境で試した限りDEVICELOSTが帰ってきたこと無いんだよな

671 :
なんてことだ ここはウインドーズ板だったのか

672 :
>>671
素直にソースコードもよこせって言えばいいのに。

673 :
>>670
よくできてんなー
5970点付近に俺の限界があるわ
簡単にゲーム作ろうってなるとWindowsだと選択肢たくさんあるけど
その他民だとSDLが一番手軽感あるな

674 :
>>673
Windows用のゲームをLinux上で作りたかったからSDLを選んだよ
規模が適度に小さいので覚えること少なくていいわ
そのぶん自分で色々つくんなきゃいけないけどねw

675 :

Linuxでゲーム遊ぶ層いるの?

676 :
>>675
いるけど、だから何って話じゃね?

677 :
MessageBoxが入ったか
地味に欲しかったから結構助かるわ

678 :
hg最新版でDebian関連ファイルが整えられてるけど、SDL 2.0のリリースが近いのかな。
MLではDuke Nukem Foreverネタしか見つけられんかった。
http://lists.libsdl.org/pipermail/sdl-libsdl.org/2013-January/086697.html

679 :
まだちゃんと見てないけどGameControllerとかできたのね、wikiは追いついてないみたいだけど
CMakeにも対応してきてるし、そろそろ2.0くるのか?

680 :
hg最新版でプラットフォームにPSPが追加され、代わり?にDSサポートが削除された。
この手の自作ソフト(homebrew)勢ってよく知らないんだけど、需要あるんだねえ。

681 :
ほんとだ、DS無くなったんだな
DSはハード考えると直接叩いた方がいいだろうし使ってる人少なそうだしな
SDLサポートしとけば各種エミュがすぐ移植できそうだし
結構需要はあるんじゃないかな、ユーザー層的に

682 :
SDLの関数を使った画像や音声の読み込みって別スレッドから呼び出しても平気?
画面Flipしながら別スレッドで読み込めたら最高なんだけど。
ネットで検索しても全然出てこないから、俺が見逃してるだけだったら教えてください・・・。
でも流石にDXライブラリみたいな非同期読みこみが用意されてるなんてありえないよね

683 :
>>682
SDLのBMPやWAVの読み込みだけならファイルを開いて読み込んで閉じるだけだから問題ないと思う。
あと非同期関数は無かったはず。
SDL_imageやSDL_mixerについては知らない。
というか、画像や音声の読み込みを別スレッドで行うと起こる問題ってなんだろう。
ファイル読み込み処理が使用するメモリをグローバルで共有してたりするとか?
読み込みだけなら競合も関係無さそうだし。

684 :
正直どういう実装になってるか次第なんだろうけど別スレッドでSDLの命令は呼ぶなってマニュアルに書いてあるよ
Surfaceだとビデオメモリ使ってたりしたらまずいだろうし…エラーメッセージとか確実に取る方法がない
SDL2でテクスチャ周り実装した時は、画像読み込み展開を裏でやってメインスレッドでテクスチャ変換って処理書いた
裏で読まなきゃいけないほどのデータ量作ったことないけどねw

685 :
ありがとう〜
正直俺も裏で読むのが必要になるくらいのデータ量は作ったことないから
とりあえずそのままでいきますかね

686 :
@kk

687 :
SDL2.0がリリースされたのに過疎ね・・・

688 :
マジで!?

689 :
正直、どうでも良い気がしてるなぁ。
なんか、SDLに新しい事は求めてない。
SDLを使うときはそれなりの時で、
結局はそれなりのフレームワークやミドルウェア使うんだし、
と思ってしまう。
まぁ、それよりもC#なりPythonのバインディングあります!!とか
言われても、既にそっちならOpen Sourceで楽で一通り評価の通ったのがあったりで、
2.0来るのが2年ぐらい遅かったと思うわ。
今更感が。

690 :
実際2.0なるの大分遅れたんだっけ
androidやiphone対応ついでにいろいろ見なおしたーって思えば悪くは無いと思うけどね
便利だとは思うんで地味に使われるんじゃね

691 :
地味〜に変わったところで、IME対応とかあるよねぇ
ちょっと毛色の違うアプリが出てくるかな?

692 :
おーRC版お試しして以来放置してたけど、正式リリースされたんだ?おめでたい
しかしもう時代的にアレだなぁ、ライブラリのみのエンジンってめんどい・・・。
ただただゲームを作りたいだけなら、もうエディタとかGUIな開発環境と
リンクしてるような言語やスクリプト使えばいいやってなる
技術力向上のための練習と考えても良いけど、ライブラリじゃ中途半端だよね
SDLのソースコードをビルドして導入するあたりがピークな気がする

693 :
SDLの2Dレンダラと併用できそうな3Dライブラリってないかな
デバイスの違いを意識せずに書けたらいいんだけど
OpenSceneGraphは無駄にでかくてちょっと敬遠してる

694 :2013/08/29
SDLでカメラに貼りつくオペレーション部分作って
別ので3Dモデルを描画したいって意味?
TOP カテ一覧 スレ一覧 2ch元 削除依頼
Windowsゲーム制作ツール「3D Gamestudio」 (127)
おい貴様ら!園芸シュミレーションって作れますか? (185)
Windowsゲーム制作ツール「3D Gamestudio」 (127)
CEDECどうだった? (515)
制服伝説プリティファイターゲーム製作スレッド (544)
ゲーム作りませんか? (809)
--log9.info------------------
MBA取得の三木谷が心の底から嫌われる理由 (128)
ファイティー存続運動を語るスレ (810)
棒振りニュース開始でチャンネルを変えるヤツ→ (176)
巨人戦の視聴率が13%超える方法を真剣に考えるC (395)
【祈願】 岡山楽天イーグルス 【成就】 (154)
【55本】真の年間最多本塁打は? (285)
落合博満をしみじみ語るスレ その15 (914)
門田博光(南海〜オリックス〜ダイエー) (940)
日本史上最強打者は松井秀喜? 王貞治? 中西太?2 (499)
V9のエース堀内恒夫 (844)
1986年のプロ野球 (504)
メジャーの殿堂入り選手 14 (719)
二流から一流に変貌を遂げた選手 (291)
記憶に残るヒーローインタビュー (249)
ドラフト、たられば (319)
もし江川が高卒で即プロ入りしてたら? PART2 (227)
--log55.com------------------
TOMIX信者の会part246【真談話室224】
ロリコン津田沼って何?
思い出のNゲージメーカー 学研・永大
【1962】Nゲージ発売50周年【2012】
模型で神戸市を再現してみるスレ
           人形           
【蟻塚】Nゲージプレミア会員専用スレ【1000両】
【しおじ】模型で甦る山陽本線【鷲羽】