HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0924
FAMHGIMG3を使おうとしても画像が表示されない8解決


FAM

リンク

2009/9/24(Thu) 07:09:23|NO.27939

2DのゲームでDirectXを利用したかったので、当初hspdxでゲームを作っていました。
しかし、アルファチャンネル付きの画像を処理する必要が出てきたため、HGIMG3に乗り換えようとしたところで躓いてしまいました。


ゲーム開発用に使っているパソコンでHGIMG3のサンプルや簡単なスクリプトを実行しても、画像が表示されません。
dxdiagで調べてもDirect3Dのテストは(多少遅いながらも)起動しますし、DirectXのバージョンは9.0Cになっていたので、バージョンがおかしい、ということはないはずです。
HGIMG3が想定どおり働かない理由として、どのようなことが考えられるでしょうか?


また、上記のような理由でHGIMG3に乗り換えようとしているので、「DirectXを利用できる」、「アルファチャンネル付きの画像を処理できる」の2点が解決できる方法なら別のdllでも問題ありません。
これらを満たして2Dのゲーム作成に向いているdllはないでしょうか?



この記事に返信する


FAM

リンク

2009/9/24(Thu) 07:14:04|NO.27940

補足:別用途で使っているパソコンで同じサンプルやスクリプトを実行すると普通に表示されます。
また、今見たらeasy3Dの画像も同様の症状のようです。



f(飲茶中)

リンク

2009/9/24(Thu) 10:03:40|NO.27942

ぶっちゃけ、そのPCがトラブル起こしてるだけだと思うので
ああだこうだと調べていじるよりはOS再インストールした方が早いかも知れんな。

それで直ると補償はしないが。



inovia

リンク

2009/9/24(Thu) 17:20:13|NO.27950

ディスプレイの色数を16bitカラーか32bitカラーに変更すると直るかもしれません。
私のノートの場合24bitカラーにするとhgimg3の命令が全く使えません。



FAM

リンク

2009/9/24(Thu) 18:26:26|NO.27951

>f(飲茶中)さん
仮にそうだったとしても、自分のソフトを買って同様の症状が出た人がいた場合、同じことをその人には言えません。
そうしなきゃいけないなんらかの理由を説明できないとOS再インストールまで強要できないので、その辺りの説明も含めて聞きたいと思い、質問しました。


>inoviaさん
普段32bitカラーで使用しているのですが、試してみたところ、16bitカラーなら無事に表示できました!
なお、24bitカラーでは「Direct3Dデバイスの生成に失敗しました」というエラーメッセージが出てダメでした。

同じような症状が出た人のため、オプションで起動時に16bitカラーにし、終了時に元の設定に戻るようにしたいのですが、どの命令を使えばいいのかわかりません。
よろしければその方法を教えていただけないでしょうか?
当初、chgdispを使えばいいのかな、と思いましたが、これだと16bitカラーにはできないので・・・。
・・・アルファブレンドの問題さえなければhspdxで万事うまくいくのになあ。



FAM

リンク

2009/9/25(Fri) 20:21:58|NO.27974

最初の質問については「解像度の変更で改善される(ことがある)」という結論が出たので、一度解決にしてしまいます。



GENKI

リンク

2009/9/25(Fri) 21:16:31|NO.27975

グラフィックボード等のドライバの更新がないか確認されましたでしょうか。
まれですが最新バージョンに更新することで解決することがあります。



inovia

リンク

2009/9/25(Fri) 23:05:41|NO.27978

調査実験してみました。

・ノートパソコンでのhgimg3の動作状況


× 利用不可(Direct3D非対応のため?)
NeoMagic MagicGraph128ZV (Win98 , 1997)
NeoMagic NM2200 (Win2k , 1999)

△ 色数変更で利用可
Intel 815 チップセット(WinXP , 2001)
Intel 910 チップセット(WinXP , 2004)

○ 利用可
Intel 965 チップセット(WinVista , 2007)
ATI Rage LT Pro (Win2k , 1999)

※OSは グレードアップ のした方を記述、年は購入年



inovia

リンク

2009/9/25(Fri) 23:31:28|NO.27980

解像度変更サンプル
http://blog.goo.ne.jp/hiro239415/e/06ae28612ce2f1dc2e6aff9afadc8ef9
を参考に少し改造してあります。


#uselib "user32.dll" #cfunc EnumDisplaySettings "EnumDisplaySettingsA" int,int,var #cfunc ChangeDisplaySettings "ChangeDisplaySettingsA" var,int #cfunc GetDC "GetDC" int #uselib "gdi32.dll" #cfunc GetDeviceCaps "GetDeviceCaps" int,int #define HORZRES 8 #define VERTRES 10 #define BITSPIXEL 12 #define CDS_UPDATEREGISTRY 0x01 *main dim DevMode,44 sdim DevModeAll,15600 sdim data,1024 //グラフィックモードの情報取得(256個まで) repeat 256 if(EnumDisplaySettings(0,cnt,DevMode)==0) : break data+=""+DevMode(27)+" x "+DevMode(28) data+=" : "+DevMode(26)+"bit\n" memcpy DevModeAll,DevMode,156,cnt*156 loop //ウィンドウと各オブジェクト作成 screen 0,300,320 title "グラフィックモード変更サンプル" pos 0, 0:objsize 300,20 button gosub "変更",*ChangeDisplay pos 0,20:objsize 300,300 listbox l,0,data gosub *NowDisplay stop //グラフィックモードの変更 *ChangeDisplay memcpy DevMode,DevModeAll,156,0,l*156 ret=ChangeDisplaySettings(DevMode,CDS_UPDATEREGISTRY) gosub *NowDisplay return //現在のグラフィックモード *NowDisplay s=""+GetDeviceCaps(GetDC(0),HORZRES)+"x" s+=""+GetDeviceCaps(GetDC(0),VERTRES)+"\n" s+=""+GetDeviceCaps(GetDC(0),BITSPIXEL)+"bit" dialog s,0,"現在のモード" return



ONION software Copyright 1997-2017(c) All rights reserved.