[過去ログ] SDLスレ (987レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
738(1): 名前は開発中のものです。 [sage] 05/02/11 23:17:14 ID:XuEZhlNi(1) AAS
>>736736(3): 名前は開発中のものです。 [sage] 05/02/11 22:56:34 ID:dXQ7K1nl(1/2) AAS
SDL_ttfでM+フォントが開けない。・゚・(ノД`)・゚・。
TTF_OpenFont("fonts/bdfmplus.ttf", fontSize);
TTF_OpenFont("fonts/bdfUMplus.ttf", fontSize);
サイズ1〜100まで試したけどだめぽ。
環境はWindows
SDL_ttf-2.0.6
freetype-2.1.8
フォントは香り屋で落としてきたやつ。
詳しくは知らないが、bdfUMplus.ttfはBITMAPフォントらしいのでダメポ
M+のトップからOUTLINEに飛んで、落としたやつは中に18コくらいttfが入ってて
全部は試してないがいくつかはTTF_OpenFontで開けた
M+
外部リンク:mplus-fonts.sourceforge.jp
739: 736 [sage] 05/02/11 23:43:02 ID:dXQ7K1nl(2/2) AAS
>>737絶対パスでもだめでした。
>>738
ビットマップ埋め込みのやつでは駄目なんですね。
公式サイトから落としたやつは出来ました。
ありがとうございます。
740(1): 名前は開発中のものです。 [] 05/02/13 00:50:02 ID:phhxXInx(1) AAS
>>735735(2): 名前は開発中のものです。 [] 05/02/06 19:38:19 ID:GSZ53bwF(1) AAS
>>727
SDL_mixerでは、RWopを使ってストリーム再生するMix_LoadMUS_RWはオプションだから、直接RWopが全てに突っ込めるわけではないです。
USE_RWOPSを定義しておいてやれば使えるけど、SMPEGを利用したmp3再生には対応していない模様。
どうも、Mix_LoadMUSでしかmp3は使えないよう。
ってことは、mp3でなく、oggを推奨していますってことなのかな?
御意。うちは USE_RWOPS を定義して ogg を読み込んでます。
SDL_mixer の music.c を見てると、Mix_LoadMUS_RW() は
ogg, mikmod 以外は実装されてないですね…。
ということは mp3 に限らず cmd, wav, midi もダメっぽい。
ところで cmd て何?って調べてみたら
外部プログラムを実行して曲を再生するんですね…。
music_cmd.c を読んでみたら
冒頭に /* This is a UNIX-specific hack */
再生時に music->pid = fork();
一時停止時に kill(music->pid, SIGSTOP);
再開時に kill(music->pid, SIGCONT);
停止時に kill(music->pid, SIGTERM);
とかやってて、ビビリました。
741(1): 378 [sage] 05/02/13 10:02:12 ID:msvBWsr3(1) AAS
>>735
> ってことは、mp3でなく、oggを推奨していますってことなのかな?
ogg の実装が一番楽だったってだけだよ。
libogg の方に登録する読み込み関数のポインタを
FILE 系から RWops 系にするだけだったから。
SDL_mixer は、USE_RWOPS の場合は RWops 版と FILE 版をコンパイルして、
そうでない場合は FILE 版だけをコンパイルする、というスタンスを取ってるせいで、
mp3, wav, midi は実装なんて読み込む部分以外全部同じなのに
両方のバージョンが必要になってる。
以前、全ソースを RWops 版で統一して、
Mix_LoadMUS は内部で単に Mix_LoadMUS_RW か cmd を呼ぶだけ、
という実装でパッチ投げたんだけど返答は無かった。
Mix_LoadMUS(_RW) レベルじゃなくて、
mp3, wav, midi それぞれの実装に FILE 版と RWops 版のインターフェイスを作らないと
受け入れてもらえそうにない。
めんどいなあ。ほとんど関数名置き換えるだけだから簡単なんだけど。
742: 名前は開発中のものです。 [] 05/02/14 18:46:49 ID:pz8RlDej(1/2) AAS
初歩的な質問で申し訳ないのですが、
SetColorKeyを使って透明色を持たせたテクスチャを表示するのは
SDL_BlitSurfaceでできますが、このテクスチャを拡大、回転をさせたい場合はどうすればよいの
でしょうか?
SGE_Transeformを使うとどうも透明色の効果が発揮しません。
743(1): 名前は開発中のものです。 [sage] 05/02/14 19:59:14 ID:ea+EL2qX(1) AAS
SDL_Surface は思ったより込み入った作りをしてる上に
適当に扱ってもそこそこ動いてしまうことが多いから、
仕様を厳密に守ってるライブラリは少ないよ。
外部リンク:www.ferzkopp.net
こっち使ってみたらどうかな。
ちょっと前にソースを覗いたときはまだ不完全な実装してたから、
透明色周りの処理全部がちゃんとしてるかどうかはわからないけど。
744: 名前は開発中のものです。 [sage] 05/02/14 21:00:13 ID:pz8RlDej(2/2) AAS
>>743
さっそくのご回答ありがとうございます。
警告がばしばし出たうえに、多少手を加えないとコンパイルが通らない
ほどいまだ不完全な実装でしたが、透明色まわりは解決されていたようです。
745(2): 名前は開発中のものです。 [sage] 05/02/15 19:44:14 ID:YKXR9FxL(1/3) AAS
ぐあーBCCで1.2.8肝心のSDL.dllやらがコンパイルできねえ
\Borland\freebcc>make -f SDL.mak
で
..\..\src\video\windib\SDL_dibevents.c:
Error E2342 ..\..\src\video\windib\SDL_dibevents.c 189: Type mismatch in paramet
er 'lpPrevWndFunc' (wanted 'int (__stdcall *)()', got 'long (__stdcall *)(void *
,unsigned int,unsigned int,long)') in function DIB_HandleMessage
*** 1 errors in Compile ***
とかいうエラーが出て止まる……
makeall.bat動かしたらtestディレクトリに色々とデモらしきものが出来てるけど。
フリーBCC使ってる皆さんちゃんと動いてます?
746(1): 名前は開発中のものです。 [] 05/02/15 19:48:01 ID:TwJPXr3V(1) AAS
SDL.dllってコンパイルして作成しないといけなかったのん?
747: 745 [sage] 05/02/15 19:56:12 ID:YKXR9FxL(2/3) AAS
>>746
SDL-1.2.8-win32.zipのSDL.dllをtestディレクトリに入れたらサンプル群がちゃんと動きました。
コンパイルできなくてもなんとかなる、というよりコンパイルする必要が無いからその辺テキトーなのかな…。
ソースに付いてるインストールガイド(Borland.html)ではSDL.dllもコンパイルされるみたいに書かれてるのに。
748: 名前は開発中のものです。 [sage] 05/02/15 20:31:16 ID:+9+lxg8U(1) AAS
>>745
>Error E2342 ..\..\src\video\windib\SDL_dibevents.c 189: Type mismatch in paramet
とりあえずキャストしてみたら?
intとlongの違いなら害は無さそうだし。
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 でしかテストしてないのかね。
750(2): 名前は開発中のものです。 [sage] 05/02/15 20:57:08 ID:YKXR9FxL(3/3) AAS
中身見てみると
return CallWindowProc(userWindowProc, hwnd, msg, wParam, lParam);
てとこのおそらく第一の引数なんだが、関数の型キャストのしかたわからんです (´・ω・`)
でもここをなんとかしても駄目なのか……
>>749
情報ありがと。BCC使ってる人自体がもう少数なのか?
まあdll作れなくても動くみたいだからいいや。他のSDL_image なんかが使えるか心配だが。
751(1): 名前は開発中のものです。 [sage] 05/02/15 22:58:42 ID:+KOUJpD5(1) AAS
>>750
SDL_dibevents.cの189行
SDL_dx5events.cの547行
return CallWindowProc((FARPROC)userWindowProc, hwnd, msg, wParam, lParam);
SDL.makeの
OBJFILES=に..\..\src\cpuinfo\SDL_cpuinfo.objを追加
PATHCPP=に..\..\src\cpuinfoを追加
これで、make出来ると思う。(動くかどうかは(゚听)シラネ)
VC++だとerrorじゃなくてwarningだから、コンパイル通るみたいだね。
>>749
1.2.7も1.2.8もVC++6.0、VC.NET2003両方とも普通にコンパイルできるけど?
752(1): 名前は開発中のものです。 [sage] 05/02/15 23:00:06 ID:V7EcU05u(1) AAS
>>750
BCC使ってるけどDLLをコンパイルし直すということはしないなぁ
753: 749 [sage] 05/02/16 05:37:50 ID:ASwNW9Kw(1) AAS
>>751
ありゃ。俺んちだと次のエラーが出る。
SDL-1.2.8\src\Video\Windx5\SDL_dx5events.c(171) : warning C4013: 関数 'GetAncestor' は定義されていません。int 型の値を返す外部関数と見なします。
SDL-1.2.8\src\Video\Windx5\SDL_dx5events.c(171) : error C2065: 'GA_ROOT' : 定義されていない識別子です。
SDL-1.2.8\src\Video\Windx5\SDL_dx5events.c(171) : warning C4047: '=' : 間接参照のレベルが 'struct HWND__ *' と 'int ' で異なっています。
SDL-1.2.8\src\Video\Windx5\SDL_dx5events.c(655) : warning C4047: '=' : 間接参照のレベルが 'struct HWND__ *' と 'int ' で異なっています。
俺の環境がおかしくなってるだけかも。VC 入れ直してみる。
>>751
やべー、ほんとだ通った。ありがとう!
>>752
stdout.txt が鬱陶しいから直接コンソールに出力して欲しいとか、
パッチ書いたから BCC でもコンパイルできるか試すとか、
大抵そんなんじゃないかな。
754: 名前は開発中のものです。 [sage] 05/02/19 00:06:37 ID:G5VXh4sK(1) AAS
フリーのbcc使ってるから、ちょっとためになった。
imageとmixerしか使ってないけど…。
755: 名前は開発中のものです。 [] 05/02/19 17:54:05 ID:vHiopGBS(1/5) AAS
どうしてもわからないので教えてください。
SDL_CreateRGBSurfaceFrom ないしは、 SDL_CreateRGBSurface を
使用しようと、してるのですがなぜか
Fatal signal: Segmentation Fault (SDL Parachute Deployed)
といわれてしまいます。
少々ながいのですが、sample 乗せますので、どこがわるいのか
識者のかた、見ていただけないでしょうか?
------- cut here ----------------------------------------
#include <SDL.h>
#include <stdlib.h>
#include <string.h>
#define XXX (60)
int main( void )
{
int j;
Uint16 **data;
Uint32 rmask = 0x0000001f;
Uint32 gmask = 0x000007E0;
Uint32 bmask = 0x0000F800;
Uint32 amask = 0x00000000;
SDL_Surface * screen;
if ( 0 < SDL_Init( SDL_INIT_VIDEO|SDL_INIT_TIMER ) ) {
fprintf( stderr, "Colud not initialize: %s\n", SDL_GetError() );
exit(3);
}
atexit( SDL_Quit );
if ( NULL == SDL_SetVideoMode( 800, 600, 16, SDL_ANYFORMAT ) ) {
fprintf( stderr, "Could not set video mode... :%s\n", SDL_GetError() );
exit(4);
}
data = (Uint16 **)malloc(sizeof(Uint16) * XXX);
756: 名前は開発中のものです。 [sage] 05/02/19 17:56:23 ID:vHiopGBS(2/5) AAS
if ( NULL == data )
exit(10);
for (j = 0; j < XXX; ++j) {
data[ j ] = (Uint16 *)malloc(sizeof(Uint16) * 80 * 80 );
if ( NULL == data[ j ] )
exit(10);
memset( data[ j ], 0xff, sizeof(Uint16) * 80 * 80 );
}
screen = SDL_GetVideoSurface();
for ( j = 0; j < XXX; ++j ) {
int z;
SDL_Rect r = { 0, 0, 0, 0 };
printf("sprite index[%d] ...\n", j );
// SDL_Surface * surface = SDL_CreateRGBSurfaceFrom(data[ j ], 80, 80, 16, 80 * sizeof(Uint16),
// rmask, gmask, bmask, amask);
SDL_Surface * surface = SDL_CreateRGBSurface(SDL_SWSURFACE,
80, 80, 16, rmask, gmask, bmask, amask);
if ( SDL_MUSTLOCK( surface ) ) {
if ( 0 < SDL_LockSurface( surface ) ) {
fprintf( stderr, "Could not lock surface.: %s\n", SDL_GetError() );
return 0 ;
}
}
for ( z = 0; z < 80 * 80; ++z)
((Uint16*)(surface->pixels))[ z ] = data[ j ][ z ];
if ( SDL_MUSTLOCK( surface ) ) {
SDL_UnlockSurface( surface );
}
757: 名前は開発中のものです。 [sage] 05/02/19 17:56:54 ID:vHiopGBS(3/5) AAS
SDL_FillRect( screen, NULL, SDL_MapRGB( surface->format, 0x00, 0x00, 0x00) );
if ( NULL == surface ) {
fprintf( stderr, "Could not make surface...:%s\n", SDL_GetError() );
exit(1);
}
if ( j >= 10 ) {
int xx = j % 10;
int yy = j / 10;
r.x = xx * 80;
r.y = yy * 80;
} else {
r.x = j * 80;
r.y = 0;
}
SDL_BlitSurface( surface, NULL, screen, &r );
SDL_UpdateRect(screen, 0, 0, screen->w, screen->h);
SDL_Delay( 100 );
SDL_FreeSurface( surface );
}
return 0;
}
758(1): 名前は開発中のものです。 [sage] 05/02/19 18:07:41 ID:vHiopGBS(4/5) AAS
XXX の値は小さければ 10 以下であれば、問題ないようでした。
環境は、FreeBSD 5.3 STABLE です。
SDL は ports からインストールしました。
バックトレースは以下のようなものでした。
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1 (LWP 100099)]
0x08048b93 in main () at test.c:50
50 ((Uint16*)(surface->pixels))[ z ] = data[ j ][ z ];
上の SDL_CreateRGBSurfaceFrom を使用すると、
今度は、blit 中に落ちてしまいます。
回避方法がわからないので、メモリ中のイメージを 60 個程度q
surface にするにはどうすればいいのでしょうか?
759(1): 名前は開発中のものです。 [sage] 05/02/19 18:17:41 ID:La4+fv3Q(1) AAS
>>758
とりあえず
- data = (Uint16 **)malloc(sizeof(Uint16) * XXX);
+ data = (Uint16 **)malloc(sizeof(Uint16*) * XXX);
他にも何かあるかもしらんが、調べてない。
どうでもいいが、何でループ変数がいきなりjとかzなのか理解に苦しむな。
760: 名前は開発中のものです。 [sage] 05/02/19 18:27:19 ID:vHiopGBS(5/5) AAS
>>759
ビンゴです。ほんとにありがとうございました。
SDL スレ汚してごめんなさい。
>>どうでもいいが、何でループ変数がいきなりjとかzなのか理解に苦しむな。
精進します。。。
761: 名前は開発中のものです。 [sage] 05/02/19 21:48:27 ID:SeeIdQIF(1) AAS
次からはアップローダーにファイル置こうな……
762: 名前は開発中のものです。 [sage] 05/02/21 23:59:34 ID:kaKGM1be(1) AAS
sdl-fan-jpにspam投げてるヤツ、ウゼー!ヽ(`Д´)ノ
上下前次1-新書関写板覧索設栞歴
あと 225 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.025s