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/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のことじゃなくて、単なる待ち時間と捉えてくれ。
補足サンクス。
481名前は開発中のものです。
垢版 |
2009/11/16(月) 17:42:23ID:+8XK/sK6
>>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 を設定しても
垂直同期待ちしない。
2009/11/26(木) 19:03:17ID:CidvYtOP
質問ですが、
FR・LGのROMの0xF00000〜0xFDFFFFを
使っても大丈夫なのでしょうか

既出だったら申し訳ありません
2009/11/30(月) 14:53:20ID:zYRTMWSr
SDL_FULLSCREEN で真ん中に寂しく表示される場合があ
るけど、同じ SDL 使ってて mplayer とかはどんな解像
度でもちゃんと画面一杯に出るのは mplayer が頑張っ
てるってこと?
2009/11/30(月) 17:17:02ID:KrKp2mDg
>どういう理由であれ、ハードウェアによる解像度変更ができない場合は
>一段階解像度の高いモードが使われ、黒い背景の中央に表示ウインドウが置かれます。

だから、例えば最低解像度が640*480の環境で320*240を指定するとそういう状態になる。
確実に画面いっぱいに表示したければ、SDL_ListModesで作成可能な解像度を調べて
適切な拡大処理をすれ。
2009/12/01(火) 00:26:20ID:k3liZ+0u
mplayerがどうしてるかは知らんけど、たぶんオーバーレイってやつだと
思うよ。SDL_CreateYUVOverlayで作れるけど、対応してればハード
ウェアで拡大してくれる。前にためしで使ってみたけど、色指定が面倒
だから使うのやめた。画面一杯に拡大しても、CPU使用率ほとんど
変わらないのは魅力的だったけど。
2009/12/01(火) 05:20:13ID:q115eOhs
mplayer のログに YUV planner がどうの、と出るから
多分それだと思う。使ったことないや…

http://en.wikipedia.org/wiki/YUV
2009/12/01(火) 07:29:30ID:q115eOhs
ffmpegのチュートリアルが詳しかった。
http://www.dranger.com/ffmpeg/tutorial02.html
2009/12/01(火) 19:43:38ID:JC6VUAq8
一番いいのは、ユーザーに選択させること。

こっちは800x600前提で作ってりゃいい
2009/12/01(火) 21:18:45ID:q115eOhs
描画部をアダプタパターン的にリファクタリングしてス
ケーラを挟むようにした。とりあえず RGB のままでソ
フト的にスケールさせて、アプリ側に問題ないようなら
オーバレイを試してみるよ。

ffmpeg のライブラリ使うと変換も楽そうだし。

http://www.dranger.com/ffmpeg/tutorial08.html

>>485
ヒントサンクス。
490名前は開発中のものです。
垢版 |
2009/12/05(土) 09:27:44ID:maU44PH4
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名前は開発中のものです。
垢版 |
2009/12/05(土) 13:04:40ID:xcDdDp0c
>>490
make CC=g++ CXX=g++ LD=g++
と打つと成功する可能性があります。
2009/12/05(土) 21:38:18ID:maU44PH4
>>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があります。

もし何かわかる方がいたらアドバイスください。
2009/12/05(土) 22:13:58ID:7PVQwHSV
>>492
SDL のダイナミックライブラリが見つからないと言っている。
libSDL.a はスタティックライブラリ。
2009/12/05(土) 22:14:41ID:7PVQwHSV
ああ、dll はあるのか。
>>490 に書いてあるパスとよく見比べてみろ。
2009/12/06(日) 00:58:57ID:J5Ambf4a
>>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に展開したらとりあえず使えるようになりました。
2009/12/06(日) 08:18:47ID:tD3g+RMw
497名前は開発中のものです。
垢版 |
2009/12/27(日) 21:37:15ID:E6vqQ5Mm
同じプログラムでSDLをダイナミックリンクしたものと、スタティックリンクしたものを作成したのですが、
ダイナミックリンク版ではコンソールへ標準出力されていたものが
スタティックリンクでは出ないような現象が発生しています。

SDLのリンク方法によってこういう現象は発生するものなのでしょうか。
また、リンク方法が原因である場合、スタティックリンクで標準出力へ出力する方法は
あるでしょうか。
498名前は開発中のものです。
垢版 |
2009/12/28(月) 02:47:12ID:Fq5F3Q16
>>497
標準出力に表示されない設定でコンパイルされたライブラリをリンクしてるだけでしょ

2009/12/28(月) 02:50:41ID:ueppcxNQ
なんだこのデジャブは
2009/12/28(月) 16:18:04ID:v3DIc8rS
>>498
1ライブラリが本体のソースの動作まで変えてしまうものなんですね。
勘弁してほしいものですが...


--enable-stdio-redirect
ですかね。試してみます。
でも現状ではファイルにリダイレクトされてるわけでも無いようですが...
2010/01/02(土) 20:53:13ID:K2AtahHI







makeしたら負けだと思う







2010/01/02(土) 22:20:06ID:WElBVpUZ
正月早々審議中ですがな
2010/01/03(日) 22:45:29ID:v00n4e/G
floatに頼子だ割ったプログラムソースを目指す人のためのブランド「float志向」
2010/02/10(水) 06:01:03ID:42Ej3nDs
SDL_MixerでBGMを任意の位置でループさせる方法はないものか・・・。
やっぱりSDL_Audioで作るしかないのかな
2010/02/10(水) 14:20:15ID:Epllauxu
どうしてもSDL_Mixerでやりたきゃオーディオソースを切っちゃえばいいじゃん
どうせならOpenAL使おうぜ
2010/02/11(木) 20:04:23ID:eol/wS6u
SDL_WM_SetCaptionで日本語を表示したいのですがどうすれば良いですか?
2010/02/11(木) 22:32:07ID:TYw/tKcb
最新バージョンだと文字コードがUTF-8だったと思うんで変換して渡せばいいはず。
変換の仕方はググって下さい。
2010/02/12(金) 05:23:48ID:50DkRwmT
>>505
ありがとうございます
2010/02/20(土) 00:52:58ID:P6PcOv95
変換の仕方がわかりませんでした。
2010/02/21(日) 10:34:00ID:w53qIXyc
こんなんあったよー。

Shift-JIS -> UTF8
ttp://www.atmark.gr.jp/~s2000/r/rtl/encode.html
ttp://www2s.biglobe.ne.jp/~satosi/soft/sjis2utf8.h
2010/02/21(日) 16:56:39ID:3J1UUm0O
IBMのICUを使おうぜ
512名前は開発中のものです。
垢版 |
2010/02/21(日) 19:59:42ID:ufBia+CD
変換できました。
UTF-8は可変長なのが糞。
2010/02/21(日) 23:58:24ID:EauoWI/j
SDLdoc-jp を置いている tacoworks.jp の管理人です。
サーバの移転を行うため、3/15 のあたりに DNS 情報の切り替えを予定しています。

ドメイン名自体の変更はないので移転後も
ttp://www.tacoworks.jp/software/SDLdoc-jp/ のURL は
そのままアクセスできますが、
切り替えの時期に一時的に見えなくなるかも知れません。
もしそうなったら申し訳ありません。
2010/02/27(土) 21:52:04ID:EEwTwLby
openglを使う時に最初の画面が真っ白になるのを回避できませんか?
できれば画像を読み込んで、いきなりそれを表示したいのですが。
515名前は開発中のものです。
垢版 |
2010/03/04(木) 02:20:13ID:UchClD6H
>514
もしかしてSDL_SetVideoModeしてから最初のSDL_GL_SwapBuffersを呼ぶまでの時間が長いんじゃないのか?
ファイルの読み込みとか
2010/03/05(金) 22:08:24ID:hwXnLLqk
いえ、別に何もしていませんが、最初の一瞬だけ真っ白になります。
それが嫌なのです。
2010/03/08(月) 13:08:12ID:CzYN7Tsj
>>514
うちではならない。
再現する最小のソース書いてうpするか他のPCで試しても同じになるか試してみるか。
2010/03/08(月) 18:55:21ID:Bw1LtACR
#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);
2010/03/08(月) 18:59:11ID:Bw1LtACR
// 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);
2010/03/08(月) 19:03:11ID:Bw1LtACR
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;
}
2010/03/08(月) 19:07:50ID:Bw1LtACR
上のコードを試してみて下さい。
真っ白なウインドウが出てからちょっとしたら赤い四角形が出てくる
のですが、最初からいきなり赤い四角を表示したいのです。
2010/03/08(月) 20:31:19ID:Kg6b0q6C
>>521
OS: windowsXP sp3
コンパイラ: gcc version 3.4.5 (mingw-vista special r3)
コンパイルコマンド: g++ hogehoge.cpp `sdl-config --cflags --libs` -lglu32 -lglut32 -lopengl32

私の環境では初回起動時に一瞬、背景が透明なウィンドウが生成されてから、中身が表示されました。
二回目以降は最初から白の背景に赤い四角が表示されます。
2010/03/08(月) 23:00:18ID:vwTt08PI
通りすがり
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

背景が黒のウィンドウができてから白の背景に赤の矩形が表示された
2010/03/09(火) 01:09:04ID:Vf4aRsZC
SDLがウィンドウ関連の処理にてこずってるようにも見える。

苦肉の策として サイズ(1 x 1) でウィンドウを作っておいてから
初期化が終わったあとでサイズ変更(or 作り直す)すると
まだマシかもしれない。
2010/03/09(火) 20:29:54ID:cbWSj+ct
関係ないけど
>glClearColor(255.0f, 255.0f, 255.0f, 255.0f);
これ変じゃない?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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