[過去ログ]
SDLスレ (987レス)
SDLスレ http://echo.5ch.net/test/read.cgi/gamedev/1005469181/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
529: 名前は開発中のものです。 [sage] 04/08/26 22:50 ID:JtN6FZlL あ、よく見たらビルドできてました。 いや、SDLからIMEの文字列を取得しようと思ったんですが、そのままだと メッセージが取得できないらしくて、少しソースを書き換える必要が出てきたんですよ。 何にせよとりあえずはこれでうまく出来そうです。ありがとうございました。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/529
530: sgi rocks [sage] 04/08/27 00:50 ID:fcNUInF8 最近、SDLとOpenGLでゲームを作っているのですが、 日本語入力のあたりでどうしようか考えてしまっています。 SDLは素晴らしいのですが、日本語入力が絡んで来ると、 せっかくマルチプラットフォームなのが有効に利用できないので、 皆で、SDLで動く日本語入力機構を作りませんか? 各々のOSの入力機構を使うか、それそのものを作るかもなにも決まってませんが、 今のところ、WindowsではIME、LinuxではXIMかIIIMFを使うといいかな、 と思っていたりします。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/530
531: 名前は開発中のものです。 [sage] 04/08/27 10:41 ID:hR9vryWf http://pc5.2ch.net/test/read.cgi/gamedev/1005469181/398-399n 前にもそういう話はあったみたいだけど、 SDL でそういうことをやるのは結構難しいみたいだね。 俺も前ちょっと調べて同じことやろうとしたんだけど、 IME 関連のプログラミングの経験浅いからいまいちよくわかんないんだよね。 入力内容を勝手に描画してくれるのも悪くないとは思うけど、 もうちょっとプリミティブに現在の変換状況を取得できるような作りは厳しいかな。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/531
532: 529 [sage] 04/08/27 17:05 ID:pn3VuAxV とりあえずビルドも成功して、プログラムを書き始めたのですが、 C++でSDL使ったプログラムを書くときに何か注意するところはあるでしょうか? というのも、書いたプログラムをメイクしてみると Error: 外部シンボル '_main' が未解決(E:\BCC55\LIB\C0X32.OBJ が参照) という何だか?なエラーが発生して少し困っているところなのです。 ちなみに、コンパイル時には-WC、-DDEBUG;WIN32をつけてコンパイルしました。 (他にも色々あったのですがとりあえず関係ありそうなものだけあげました) http://echo.5ch.net/test/read.cgi/gamedev/1005469181/532
533: 名前は開発中のものです。 [sage] 04/08/27 17:09 ID:ED0DtQy8 int main(int argc, char* argv[]) にする http://echo.5ch.net/test/read.cgi/gamedev/1005469181/533
534: 名前は開発中のものです。 [sage] 04/08/27 17:57 ID:cER7lJgy sdl-config --libs http://echo.5ch.net/test/read.cgi/gamedev/1005469181/534
535: 531 ◆pm4Rr1N8T6 [sage] 04/08/27 18:27 ID:hR9vryWf トリップつけた。 うーん、すっげー適当な調査しかしてないんだけど、処理の流れとしては 1.SDL_GetWMInfo() でウィンドウシステム固有の情報を受け取る 2.IME が処理してる情報をコールバックで拝借する 3.共有 API によってウィンドウシステムに依存しない情報を得られるようにする って感じが良さそうな気がする。 共有 API で取得できるべき情報はこんなとこだろうか。 ・現在の漢字入力の ON/OFF ・現在入力中の文字列 ・変換確定を行ったかどうかの情報 ・確定後の文字列 わー、よくわからない! 結局変換中の小さいウィンドウを出す座標も設定出来ないと駄目だよなー。 Qt のソースでも読もうかな。 ↓続く http://echo.5ch.net/test/read.cgi/gamedev/1005469181/535
536: 531 ◆pm4Rr1N8T6 [sage] 04/08/27 18:28 ID:hR9vryWf SDL で対応してるウィンドウシステムはよくわからないんだけど、 SDL_SysWMinfo の定義には ・X11 ・Nano-X ・Win32 ・RiscOS があるね。 BeOS とか Amiga とかは最初は無視しといていいかな。 Mac はどうしよう。随分前に調べたんだけど情報を見付けることができなかった。 情報リンク http://home.catv.ne.jp/pp/ginoue/im/index.html 日本語入力プログラミング http://www.hmug.org/man/3/XmbLookupString.html XmbLookupString() の man (ごめん、UNIX よくわからない) http://www.kumei.ne.jp/c_lang/sdk3/sdk_278.htm IME の操作@猫でもわかるプログラミング http://echo.5ch.net/test/read.cgi/gamedev/1005469181/536
537: sgi_rocks [sage] 04/08/28 00:26 ID:IBxR98vc せっかくマルチプラットフォームな環境で走るSDLなので、 共通のAPIを提供しておいて、そのAPIが各々のOSの ネイティブな入力機構を使うのに賛成です。 Mac OS Xに関しては、X11を使っている場合に限っては、 Linuxなどと同じX11経由の入力機構が使えると思います。 私はLinuxでSDLを動かしているので、X11(XIM経由)を少しやってみます。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/537
538: sgi_rocks [sage] 04/08/28 02:14 ID:IBxR98vc ふと思ったのですが、日本語入力機構だけ提供するのが良いのか、 それらを含めたSDLを使ったGUIを提供した方が良いのでしょうか? 入力している時の、変換候補などの表示や、入力欄の事を考えると、 そこだけ他のGUIと違ってしまうのも変な感じがしなくもないのです。 簡単なGUIも一緒に提供するのも良いかもしれない、と思うのですがどうでしょう。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/538
539: 529 [sage] 04/08/28 13:34 ID:D9fRqR5k >>533 とりあえずmainはSDL_mainに置換されるという話なのでもちろんint main(int argc, char* argv[]) は書いているのですが、それでもError: 外部シンボル '_main' が未解決(E:\BCC55\LIB\C0W32.OBJ が参照) が表示されるというのは謎ですね…。このエラーメッセージが何を言っているかがいまいちよく分からないのですが、 多分システムからコールバックされるべき_main、が無いってことなんですかね? SDLmain.libでそっちの方が定義されてるはずなのに…orz >>538 私は完璧に素人なのでこんなことにコメントするのもちとあれなのですが、 GUIごと提供してくれるとかなり便利そうな気もしますね。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/539
540: 名前は開発中のものです。 [] 04/08/28 15:30 ID:YZXmLvih >>538 とりえあず日本語入力機構だけを提供した方がいいと思います. GUIは結局アプリケーション作る人次第な気がするので… http://echo.5ch.net/test/read.cgi/gamedev/1005469181/540
541: 名前は開発中のものです。 [sage] 04/08/28 15:58 ID:QqhNTGOx 7以降ってどんだけの人材と時間が費やされてるんだろうな? よくあのペースで発表・発売できるもんだよ。 俺も将来はあのくらいの会社をもちたい。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/541
542: 名前は開発中のものです。 [sage] 04/08/28 16:01 ID:QqhNTGOx うはwwww 誤爆です。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/542
543: 531 ◆pm4Rr1N8T6 [sage] 04/08/28 16:23 ID:doDxlGS3 >>538 GUI 部分はあとからでも付け足せるから先に入力機構だけでいいんじゃないかな。 と思いながら Win32 部分を作ってたんだけどさ、 まさか編集可能なウィンドウ(テキストボックスなど)が付いてないと IME を入力可能状態にできないウィンドウシステムってある? どうも上手くいかないんだけど、Win32 とかはそうなってるのかな。 うーん、ちょっと怖いなあ。GUI セットじゃないと厳しいかな。 とりあえず共通 API は、 ・ネイティブな C で書く ・初期化関数で構造体を生成してポインタを返し、終了関数で開放 ・ポリモーフィズムは構造体内に関数へのポインタを保持することで実装 ・各処理系ごとにプリプロセッサで分岐し、初期化関数内の処理を切り分ける って感じでいいかな。 SDL 本体内部の SDL_rwops や、多くの SDL 系ライブラリで使用されてる方法だから、 ソースを読めばもっと具体的な実現方法は把握できると思う。 ある程度各処理系の情報、実装の方向性がまとまってきたら、 共通 API を作るためのフレームワークを実装するよ。 一応 smpeg みたいな例もあるし、C++ で書いても問題は無いと思うけど、どっちがいいかな。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/543
544: 529 [sage] 04/08/29 10:00 ID:o5xfi0oD 相変わらずうまく行きませんな…。 公式ページからSDL.dllをダウンロードしてきてimplibでSDL.libを生成して、 SDL_win32_main.cをコンパイルしてSDL_main.libを作っても駄目でした。 最近のソースにはBorland用のライブラリ一式があるんですがあれは使っていいのでしょうかね? Error: 外部シンボル '_main' が未解決(E:\BCC55\LIB\C0X32.OBJ が参照) もう見飽きた…orz http://echo.5ch.net/test/read.cgi/gamedev/1005469181/544
545: 名前は開発中のものです。 [sage] 04/08/29 12:50 ID:dvcQQr7Q >>544 一応、念のため聞いておくが、 SDL.libはリンクしているけどSDL_main.libをリンクし忘れているなんてことは無いよな? http://echo.5ch.net/test/read.cgi/gamedev/1005469181/545
546: 名前は開発中のものです。 [sage] 04/08/29 14:02 ID:iNpWlI3a $ sdl-config --libs -L/usr/local/lib -lmingw32 -lSDLmain -lSDL -mwindows http://echo.5ch.net/test/read.cgi/gamedev/1005469181/546
547: 名前は開発中のものです。 [sage] 04/08/29 14:57 ID:dvcQQr7Q >>546 それ、cygwinの場合でしょ?>>529の場合はbccらしいから同じとは限らないし。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/547
548: 名前は開発中のものです。 [sage] 04/08/29 15:00 ID:dvcQQr7Q あ。>>546のはMinGW+MSYSのほうかもしれないすね。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/548
549: 名前は開発中のものです。 [sage] 04/08/29 17:36 ID:Vt1Safbs >>544 オプションを-Wにしてみろ。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/549
550: 529 [sage] 04/08/29 19:35 ID:o5xfi0oD >>545 SDL.libとSDL_main.libは同じフォルダにおいてフォルダにリンクをしてるので 多分し忘れということは無いと思うんですが…。 >>549 -Wを入れると今度は Error: 外部シンボル 'WinMain' が未解決(E:\BCC55\LIB\C0W32.OBJ が参照) となるんでどうしたものか…。 一応構造的にはSDL_main.libの_mainやらWinMainがコールバックされてそこから mainが置換されたSDLmainの方に制御が移されるんですよね? それともそれをやるにはコンパイルするときにコマンドラインオプションが必要とか? もうわけわかんないです…。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/550
551: 名前は開発中のものです。 [sage] 04/08/29 20:24 ID:iNpWlI3a まずはtdumpとかでSDL_main.libにWinMainや_mainが存在することを確認した方がよいのでは。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/551
552: 名前は開発中のものです。 [sage] 04/08/29 23:02 ID:hlhX5yl6 >>550 > 一応構造的にはSDL_main.libの_mainやらWinMainがコールバックされてそこから > mainが置換されたSDLmainの方に制御が移されるんですよね? どう考えてるのかよくわかんないんだけど、実際には 1. SDL_win32_main.c の中の WinMain() が呼ばれる 2. その WinMain() が consol_main() を経由して SDL_main() を呼ぶ 3. SDL_win32_main.c が SDL_main.h を include しており、 その中で main() が SDL_main() として define されている という作りになってる。 要するに、SDLmain.lib の中の WinMain() によって起動して、 その WinMain() が君のソースの中の main() を呼ぶって仕組み。 WinMain() で起動するために -W オプションは必須だね。 BCC が使う OMF っていうオブジェクトファイル、ライブラリファイルの形式では 関数の頭にアンダーバーを付けることになってるっぽい。 従って、main() をリンクする時には _main って部分を探すんだよ。 「bcc32.exe に -W オプションをきちんとつけて」 「`SDLmain.lib' と、`main() のあるソースから作った .obj ファイル' の両方をきちんとリンクする」 というプロセスが必要だよ。 常にどれかが抜けてるんだと思う。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/552
553: 531 ◆pm4Rr1N8T6 [sage] 04/08/29 23:55 ID:hlhX5yl6 うーん、Win32 では編集可能なウィンドウが無くても IME を ON の状態にはできるんだけど、 このまんまじゃ入力状態を取得できないなー。 表示すらしてないわけだから入力事態が行われてなさそう。 やっぱり GUI をセットにしないと駄目っぽい。 とりあえず、枠線付けただけのテキストボックスを CreateWindow() して その GUI 内で IME による入力をできるようにしてみるよ。 こういうアプローチを取ると IME による入力部分だけ OS 依存のフォント表示になってしまうけど、 その辺はもっと煮詰めてから考えることにする。 http://echo.5ch.net/test/read.cgi/gamedev/1005469181/553
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 434 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.019s