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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0426
cdhgimg3のNo Texture無視5解決


cd

リンク

2009/4/26(Sun) 00:08:04|NO.24825

hgimg3のaddxfile命令ですが、読みこむXファイルのテクスチャが見つからないと
「No Texture 〜テクスチャ名〜」と出ます。

そのNo Texture〜エラーを無視(表示しない)ことは出来ますか?

Xファイルのビュアーによっては、エラーが表示されないツールもあるので
DirectX上では設定か何かが出来ると思うのですが。



この記事に返信する


KIMU

リンク

2009/4/26(Sun) 03:38:47|NO.24832

hgimg3が出してるエラーだからonerrorでも捕まえられないし
エラーを無視する設定もないのでエラーを止める方法は分かりませんが
エラーが出ないように読み込んだファイルを編集してaddxfileする事は可能

テキストのxファイルならnoteload読み込んで
TextureFilename {
"ファイル名";
}
を見つけてexistでテクチャファイルがあるか確かめて無かったら
この部分を削除

処理が終わったらmemfileに読み込んだバッファ割り当ててaddxfile

サンプル

#include "hgimg3.as" hgini setpos HGOBJ_CAMERA, 0, -50, 50 screen 1,200,150:width ,,0,0 notesel xfil noteload dir_exe+"\\sample\\hgimg3\\sb_bg1.x" txidx1=0 repeat txidx = instr(xfil,txidx1,"TextureFilename") if txidx<0 {break} txidx1+txidx temp=instr(xfil,txidx1,">") //テクスチャファイル名とは違うTextureFilename を回避 if temp<0{ fnidx = instr(xfil,txidx1,"\"")+txidx1+1 fnsiz = instr(xfil,fnidx,"\"") exist strmid(xfil,fnidx,fnsiz) //ファイル検索 mes strmid(xfil,fnidx,fnsiz)+" "+strsize if strsize<0 or 1 {//テストだから or 1 でテクスチャファイルが見つかってもファイル指定部分削除 txidx2 = instr(xfil,txidx1,"}")+txidx1+1 //「extureFilename{〜}」のサイズ memcpy xfil,xfil,strlen(xfil)-txidx2+1,txidx1,txidx2 //上のサイズ+1(文字列終端0の分) } txidx1=txidx2 }else{ txidx1+temp } await 0 ;ちょっとエラーチェックを省いてるので無限ループになった時の為に一応 loop gsel 0,1 memfile xfil addxfile m_xmodel,"MEM:a.x" regobj b_obj, m_xmodel *main stick key,$3ff hgdraw hgsync 15 if key&128 : goto *owari if key&2 : addpos HGOBJ_CAMERA,,,-1 if key&8 : addpos HGOBJ_CAMERA,,,1 if key&4 : addpos HGOBJ_CAMERA, 1 if key&1 : addpos HGOBJ_CAMERA, -1 goto *main *owari hgbye end

後、DirectX自体には、命令一つでxモデルを読み込む
addxfileみたいなのは無いと思ったので、ビュワー側が
テクスチャファイル無かったら無視してるだけでしょう



cd

リンク

2009/4/26(Sun) 11:49:24|NO.24836

すいません。
言い忘れていましたが、Xファイルには手を加えられません。

テキストファイル、バイナリファイル、圧縮テキストファイル、圧縮バイナリファイルと
色々な形式のXファイルを扱うので。



窓口

リンク

2009/5/1(Fri) 06:16:02|NO.24904

こんなのはどうですか?
存在する場合にのみロードする方針で。


filnem = "readme.txt" ;存在の有無を調べるファイル名 val = dirinfo(1) ;本体のexeファイルが有る場所(ディレクトリ)を返す chdir val ;そのディレクトリに移動 dirlist p1,"*.txt",0 ;そのディレクトリの中に有るファイル名の一覧を if instr(p1,0,filnem) ! -1 : dialog "存在します" : else : dialog "存在しません" mes dir_cur + " /カレントディレクトリ名を表示" mes p1 ;カレントディレクトリの内容を表示



KIMU

リンク

2009/5/2(Sat) 17:30:33|NO.24927

>テキストファイル、バイナリファイル、圧縮テキストファイル、圧縮バイナリファイルと
NO.24832の方法が使えない理由になってないんですが・・・
バイナリファイルでも圧縮ファイルでもメモリに展開出来れば
テクスチャファイル名は探せるだろうし

他にはhgimg3側に対応しもらうぐらいしか・・・



cd

リンク

2009/5/6(Wed) 16:42:02|NO.25002

>窓口さん
ちょっとサンプルの意味が理解できませんが、Xファイル自体は存在しています。
問題はそのXファイルが指定するテクスチャが無い場合に出るエラーを止めたいのです。

>KIMUさん
ロード前にテクスチャの存在を確認して、エラーを未然に防ぐしかないようですね。
hgimg3側に対応してもらうのも時間が掛かりそうなので他の方法を探してみます。

皆さんありがとうございました。



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