[過去ログ] SDLスレ (987レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
778: 名前は開発中のものです。 [sage] 2005/04/02(土) 16:44:19 ID:mMTwmK/8(2/2) AAS
>>777
777(1): 名前は開発中のものです。 [sage] 2005/04/02(土) 08:41:42 ID:6EJmuvmn(1) AAS
>>776
新規作成のウィザードでコンソールアプリケーションじゃなくて
windowsアプリケーションを選べ
まじ感謝
779
(1): 名前は開発中のものです。 [sage] 2005/04/22(金) 00:07:43 ID:Ae0Aozsn(1/2) AAS
SDL.NET って、SDL_imageFilter* 系は使えないのか…(´・ω・`)
780: 779 [sage] 2005/04/22(金) 00:09:58 ID:Ae0Aozsn(2/2) AAS
嘘、Tao.Sdl から呼び出せた。なんでもない。
781
(6): 名前は開発中のものです。 [sage] 2005/05/07(土) 13:39:48 ID:HNMZWJUh(1/2) AAS
はじめまして。早速ですが質問させてください。
現在がSDL_Surfaceに画像を読み込もうと次のようなコードを書いています。
FILE *fp = fopen( "pic/pic.bmp", "rb" );
if ( fp ) {
SDL_RWops *rwops = SDL_RWFromFP( fp, 0 );
SDL_Surface *surface = IMG_Load_RW( rwops, 1 );
}
ですがIMG_LoadRW()の部分でエラーが出てしまいます(ハンドルされていない
例外はsdltest.exe(NTDLL.DLL)にあります 0xC0000005Access Violation)。一方、
SDL_Surface *surface = IMG_Load_RW( SDL_RWFromFile( "pic/pic.bmp", "rb" ), 1 );
とした場合には正常に読み込めてその後画像を表示することも出来ました。
出来ればファイルポインタから読み込んで表示させたいのですがエラーの原因が
分かる方がいらしたら解決法を教えていただけないでしょうか?
開発環境はWindowsXP Pro、VC++6.0SP5、SDLのバージョンは1.2.8でSDL_imageの
バージョンは1.2.4です。よろしくお願いします。
782
(4): 名前は開発中のものです。 [sage] 2005/05/07(土) 16:26:55 ID:tQ5vRoic(1) AAS
>>781

/src/file/SDL_rwops.cの230行あたりを見てるみと

#ifdef WIN32
 if ( ! in_sdl ) {
  SDL_SetError("You can't pass a FILE pointer to a DLL (?)");
  /*return(NULL);*/
 }
#endif

となっていてDLLではSDL_RWFromFPは使えないようです。
たぶんSDL_GetErrorでエラーが拾えると思います。
Static Linkすれば使えるのかもしれませんが、試したことはありません。
783
(1): 781 [sage] 2005/05/07(土) 18:01:27 ID:HNMZWJUh(2/2) AAS
>>782

うまく行かない時はSDL_GetError()を確認するべきだったのですね。
複数の画像ファイル等を一つのファイルにパックして、そこから
画像ファイルを読み込んで...ということをしようと思ってSDL_RWFromFP
を使ってみました。この方法がダメとなると何か他に良い方法があるでしょうか。
取りあえずSDL_RWFromMem()でできるかを試してみようと思います。
どうもありがとうございました。
784: 782 [sage] 2005/05/08(日) 19:51:26 ID:ARUo6ShU(1) AAS
>>783

>この方法がダメとなると何か他に良い方法があるでしょうか。
>取りあえずSDL_RWFromMem()でできるかを試してみようと思います。

SDL_RWFromFileは内部でSDL_RWFromFPを呼び出しているだけなので、
SDL_RWFromFPで可能ならば、SDL_RWseekなどを使って同じような操作が
できると思います。もちろんSDL_RWFromMemでもかまいませんが。

ちなみにSDL_archiveというものもあります。
>>370
370(3): ◆8fOTfwdIi. [sage] 04/02/25 04:31 ID:1WNUyKXe(1) AAS
SDL_archive っての作ってみたよ。
アーカイブファイルを元に内部のファイルのインデックス作って、
そこから SDL_RWops を生成できるってもの。
外部リンク:qas.sourceforge.jp
VisualC++ と BCC のビルド環境しか入れてないから
gcc な人とかは自分で全ファイルをコンパイル&リンクして適当に作ってくだちい。

785: 781 [sage] 2005/05/08(日) 20:33:06 ID:GW0v55yy(1) AAS
取りあえずSDL_RWFromMemを使って期待通りに動作させることが出来ました。
助言ありがとうございました。

質問ばかりで申し訳ないのですが今度はフォントの表示で行き詰ってしまい
ました。現在SDL+OpenGLでゲームを作ろうとしています。SDL_ttfでWindowsの
フォント(MSGothic.ttc)を読み込んで利用しているのですが、TTF_RenderUTF8_Solid()
で作ったSDL_Surfaceをどうやって描画してやればいいのかが分かりません。
glDrawPixelsでSDL_Surfaceのpixelsを描画すると文字は表示できたのですが、
背景が透明に出来なかったのでTTF_RenderUTF8_Solid()から作ったSDL_Surface
からテクスチャを作ろうとしたのですが幅と高さが2の累乗でないのでうまく行かず...
という状態です。もしうまいやり方をご存知の方がいらしたら是非ご教授ください。

...この質問はOpenGLスレでしたほうが良かったしょうか・・?
786: 名前は開発中のものです。 [sage] 2005/05/09(月) 12:31:19 ID:X842fXoJ(1) AAS
OpenGL使ってるなら、WGLにアウトラインフォントを描画する関数があったはず。それだとWin専用になってしまうけど。
ビットマップフォントでも良いならgl_kanjiがよろしいかと。
787
(1): 782 [sage] 2005/05/09(月) 19:59:22 ID:2WAlRLk2(1) AAS
>TTF_RenderUTF8_Solid() で作ったSDL_Surfaceを
>どうやって描画してやればいいのかが分かりません。
>幅と高さが2の累乗でないのでうまく行かず...

とりあえず、SDL_ttfのサンプルであるglfont.cが
SDL_ttfのソースと一緒にあるので、それを見ていただければ、
大体のことは分かると思います。

見てもよう分からんというときには、また聞いてください。
788
(1): 781 [sage] 2005/05/09(月) 22:12:34 ID:kc7J0Eit(1) AAS
>>787
そんなところにサンプルがあったのですね。全く気がつきませんでした。
早速サンプルを元にして試してみたら無事ttfからテクスチャを作って
描画することが出来ました(日本語は文字化けしてしまいますが)。

助言してくださった皆様、どうもありがとうございました。
789
(1): 名前は開発中のものです。 [sage] 2005/05/10(火) 03:45:21 ID:iTBS7Jyy(1/2) AAS
>>788
OpenGL で TrueTypeフォント使って文字列描画したいなら SDL_ttf なんて使わずに
FTGL ( 外部リンク[html]:homepages.paradise.net.nz )
を使うと幸せになれると思う.
outilne,texture,bitmap,pixmap とかの好きな方法でレンダリングできるよ

あと SDL_ttf で日本語が化けるのは使ってるフォントが bitmap フォントが
埋め込まれた TrueType フォントだとダメとかなかったっけ?
文字列がUTF8じゃないってことはさすがにないよなぁ...
790
(1): 781 [sage] 2005/05/10(火) 11:15:14 ID:/sZ8aOiM(1) AAS
>>789
そのまさかで文字列がUTFじゃないようです(Shift-JISなのかな?)。
TTF_RenderText_Solid()を使っているのですが他のを使えば良いのでしょうか。
それとも文字コードをUTF8に変換するプログラムを書けば良いのでしょうか。
791: 名前は開発中のものです。 [sage] 2005/05/10(火) 19:58:16 ID:iTBS7Jyy(2/2) AAS
>>790
なんてゆーか文字コード以前の問題だろ…
TTF_RenderText_Solid() はLATIN1なテキストしか通らんよ.
できたらマニュアルくらい読んでくれ.
外部リンク[html]:jcatki.no-ip.org
792: 782 [sage] 2005/05/10(火) 20:14:19 ID:c/mddx9W(1) AAS
>あと SDL_ttf で日本語が化けるのは使ってるフォントが bitmap フォントが
>埋め込まれた TrueType フォントだとダメとかなかったっけ?

msgothic.ttcの場合はSolidなら大丈夫、
ShadedやBlendedだと22pt以下はダメですね。
この問題だと化けるのは日本語だけではありませんが。

>それとも文字コードをUTF8に変換するプログラムを書けば良いのでしょうか。

UTF8かUnicodeに変換する必要があります。
フリーのフォントや文字コードについての話が
外部リンク[html]:tokyo.cool.ne.jp
でも行われているので、お悩みなら参考になるでしょう。
793
(1): 名前は開発中のものです。 [sage] 2005/05/11(水) 01:00:39 ID:irIlrbEI(1) AAS
msgothicでもTT_CONFIG_OPTION_EMBEDDED_BITMAPSをundefしてfreetype再コンパイルすれば22pt以下も表示できた気が
794: 名前は開発中のものです。 [sage] 2005/05/11(水) 17:06:15 ID:ChV6SFiM(1) AAS
SDL_ttf は埋め込みビットマップフォントのある TrueTypeFont を読むと、
埋め込みビットマップの存在するサイズを指定するだけで
アウトラインフォントを無視して強制的に埋め込みビットマップフォントの方を使うんだよ。
でもそのための処理は入ってない。だから化けてる。
>>793 は SDL_ttf が内部で使ってる freetype の埋め込みビットマップ処理そのものを潰して対処してる。
なんだかなー。俺も他のライブラリ使った方がいいと思う。
795: 781 [sage] 2005/05/12(木) 15:13:44 ID:gBvQuFFy(1) AAS
皆様アドバイスありがとうございます。

mbstowcs()を使ってUNICODEに変換してTTL_RenderUNICODE_Blended()
を使うことで無事日本語を表示することが出来ました。
取りあえず22pt以下の場合はTTL_RenderUNICODE_Solid()を使って表示
することにしています。他にもライブラリがあるようなのでぼちぼち
調べてみようかと思います。どうもありがとうございました。
796: 名前は開発中のものです。 [] 2005/06/25(土) 16:10:39 ID:kpes39YP(1) AAS
軽めのGUIライブラリーってどれ?
多くてわかんない
797
(1): 名前は開発中のものです。 [sage] 2005/06/26(日) 17:35:22 ID:zg82OFD2(1) AAS
今日(1時間前)からSDLを使い始めたものですが、
>>771
771(1): 名前は開発中のものです。 [sage] 05/03/13 22:40:23 ID:idmmnJMg(1) AAS
>>768
コード生成のランタイムライブラリがマルチスレッドデバッグDLLになってなかったらコロヌ
ライブラリへのパスが通ってなかったらなおコロヌ
の発言のおかげで外部リンク:tokyo.cool.ne.jpの一番雛形が通りました。
Thx!!
798: 名前は開発中のものです。 [sage] 2005/06/26(日) 23:25:16 ID:Expiz02r(1) AAS
>>797
久しぶりにそこのぞいたけど、新しい記事とか解説はなかったな
カウンタが1000越えてるな
たしか>>633
633(1): 名前は開発中のものです。 [sage] 04/11/20 16:11:50 ID:PDaYb1sL(1) AAS
77人目だったよw
が77ゲッツしてたんだよな、懐かしい
799
(3): 名前は開発中のものです。 [sage] 2005/06/27(月) 08:01:33 ID:3Ab5ewvX(1/2) AAS
質問です。
2つあるんですが、
1個目、SDLの標準機能で2枚目のウインドウを作ることってできるんでしょうか?
2個目、SDLの標準機能でC言語標準のscanfやらfgets(from stdin)やらのように、ユーザーに要求を求めるようなことって可能でしょうか?

2個目は1個目ができればハードコードで作ることも可能そうですが、ちょっと面倒な気がします。
よろしくお願いします。
800: 名前は開発中のものです。 [] 2005/06/27(月) 08:02:17 ID:3Ab5ewvX(2/2) AAS
AGE!!
801: 名前は開発中のものです。 [sage] 2005/06/27(月) 23:12:40 ID:YfSmd5eY(1) AAS
>>749
749(4): 名前は開発中のものです。 [sage] 05/02/15 20:48:20 ID:6CIQh+IC(1) AAS
前から BCC で使ってるけど、1.2.7 からコンパイルできなくなったと記憶してる。
DirectX と WinDIB の両方でエラーになるから、片方潰して回避することもできない。
結構粘ってみたんだけど、問題解決できなかった。
単に一つ定義が足りないっつってるだけかと思ったら、
手動で定義しても次々別のエラーが出てくるだけ。終わらない。
他に根本的な原因があるんだろうけど、解明できなかった。

ちなみに VC も DirectX のソースでエラー吐く。
こっちも問題を解決できなかったので、
プロジェクトの設定 -> 左の'SDL'を選択 -> C/C++ -> プリプロセッサ -> 定義から ENABLE_DIRECTX を消す
とやって、これでもまだ足りないから、
ファイルビューから名前に dx5 を含むファイルを全部削除した。
これで DirectX 無しでだがコンパイルできるようになる。
ちなみに、初期状態だと afxres.h が無いとか言い出すけど、
#include <windows.h>
とだけ書いた afxres.h を SDL-1.2.8\VisualC\SDL に置けば回避できる。
まさかちゃんとした afxres.h を持ってこないと
DirectX 付きでコンパイルできないってんじゃないだろうな……。

1.2.7 の時の話だから、今はまた少し事情が違うかもしれないけど、
手元で確認した限りだと 1.2.8 も BCC VC 共にそのままではコンパイル不可。
もう Cygwin でしかテストしてないのかね。
GetAncestor(SDL_Window, GA_ROOT);
がとおらないのは
WINVER=0x0500とでも
C/C++ -> プリプロセッサ -> 定義
に入れると解決。

という遅レス

あとafxres.hなんてMFC入れればあるんじゃね?
802
(1): 799 [sage] 2005/06/28(火) 01:25:30 ID:xvJWzK7X(1/3) AAS
一日で一レスか。
こりゃ参ったなー。
作りたいものへのモチベーションも下がってきたし、一端とりさげるかな。
1-
あと 185 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.027s