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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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投げてるヤツ、ウゼー!ヽ(`Д´)ノ
763: 名前は開発中のものです。 [] 05/02/22 22:38:49 ID:LwQOxQ0C(1) AAS
SDL-IM: IM(Input Method) support in SDL
外部リンク:sdl-im.csie.net
764
(1): 名前は開発中のものです。 [sage] 05/02/23 23:34:20 ID:w0AHRgcd(1) AAS
sakiwokosaretanokana?
765: 名前は開発中のものです。 [sage] 05/02/24 12:36:00 ID:cj7i1pZk(1) AAS
>>764
SDL-IMは昨年末にできたばかりみたい。
766: 名前は開発中のものです。 [sage] 05/03/10 18:14:33 ID:B6C7//HW(1) AAS
まともな動作実績もないのによくそんな適当なこと載せるよな(プゲラ
767: 名前は開発中のものです。 [] 05/03/11 23:52:57 ID:YMDZazr7(1) AAS
>>740
740(1): 名前は開発中のものです。 [] 05/02/13 00:50:02 ID:phhxXInx(1) AAS
>>735
御意。うちは 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
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 版のインターフェイスを作らないと
受け入れてもらえそうにない。
めんどいなあ。ほとんど関数名置き換えるだけだから簡単なんだけど。
返答ありがとう。なるほど、やっぱり自分と同じようなこと試して知識得てる人って
いるんだな…流石だ。
741さんは更に上を行っているようですね。確かに、FILEポインタを使っているのであれば
SDL_RWopsを使うように変更するだけでいいから、確かに移植は楽だ。
768
(2): 名前は開発中のものです。 [sage] 05/03/13 18:25:40 ID:YSxIy0RP(1) AAS
visual stdioNETでのこれの使い方おしえてください、

「初心者によるの」やり方ではコンパイラが通らないんですよ
なぜなんですか?
769: 名前は開発中のものです。 [sage] 05/03/13 19:02:27 ID:XjtKo/QE(1) AAS
なぜでしょうね。
770
(1): 名前は開発中のものです。 [] 05/03/13 20:04:03 ID:TyhT8D4W(1) AAS
Visual Studio.NETで/MDオプションでビルドするとmsvcr71.dllと依存関係になっちゃうのはなんとかならんもんかね。
/MDじゃなくて/MTにするとリンクエラーが出るし。

このために.NET Frameworkインストールしてくださいって言うのもなんだし。
771
(1): 名前は開発中のものです。 [sage] 05/03/13 22:40:23 ID:idmmnJMg(1) AAS
>>768
コード生成のランタイムライブラリがマルチスレッドデバッグDLLになってなかったらコロヌ
ライブラリへのパスが通ってなかったらなおコロヌ
772: 名前は開発中のものです。 [] 05/03/14 01:42:53 ID:wCuLvh4G(1/2) AAS
>>768
その原因は、SDLに付属のマニュアルに書いてあるよ。
君は.NETでDLLをコンパイルしたのかな?SDL for Beginersの掲示板ではそのことについてもきちんと書かれている。
よく読んでみるといいだろう。

>>770

CランタイムのDLLをはずしたいなら、依存する全てのライブラリを/MTでコンパイルしなおさなきゃいけない。
それと、リンクエラーの意味は読めばわかる。
何が足りないのかは見当が付くけど、それの意味がわからない場合はそもそも力量が足りてない。

それと、MSVCRT*.DLLを入れればいいだけなのに、.NET Frameworkインストールしてくれというのは見当違いだよ。
773: 名前は開発中のものです。 [] 05/03/14 01:44:48 ID:wCuLvh4G(2/2) AAS
依存する->CランタイムライブラリDLLに依存するという意味ね。
774: 名前は開発中のものです。 [sage] 05/03/14 02:19:56 ID:VEcyrTnK(1) AAS
カリングとかどうなの?Java3Dより貧弱ってことはない?
775: 名前は開発中のものです。 [sage] 05/03/15 19:37:17 ID:Z609w/mR(1) AAS
mingwでsdl_ttf,sdl_net,sdl_image,sdl_mixer使うときはいちいち自分でコンパイルするより
vc用のインポートライブラリをreimpする方が楽だと今更気がついたのだった。
ははは
776
(1): 名前は開発中のものです。 [sage] 2005/04/02(土) 07:51:18 ID:mMTwmK/8(1/2) AAS
なんか、VC++6.0でビルドしたやつ起動すると、
コマンドプロンプトも一緒に起動しちゃうんだけど、
これって仕様じゃないよね?

環境は
Windows2000
VC++6.0
SDL1.2.8

外部リンク:tokyo.cool.ne.jp

2.導入から最初のプログラムまで SDLTutorial
に置いてある
SDLTutorialというソースなんだけど
777
(1): 名前は開発中のものです。 [sage] 2005/04/02(土) 08:41:42 ID:6EJmuvmn(1) AAS
>>776
新規作成のウィザードでコンソールアプリケーションじゃなくて
windowsアプリケーションを選べ
778: 名前は開発中のものです。 [sage] 2005/04/02(土) 16:44:19 ID:mMTwmK/8(2/2) AAS
>>777
まじ感謝
1-
あと 209 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.028s