強火で進め

このブログではプログラム関連の記事を中心に書いてます。

GLMetaseqをMac環境で使った時にフォルダ内のテクスチャ用ファイルが正しく読み込めない


こちらで配布されている「ねんどろいど風 重音テト」のmqoファイルを自作プログラムで開いた所、テクスチャが上手く読み込まれませんでした。

enamel toy box
http://enamelhp.web.fc2.com/

調査した所、テクスチャがフォルダに入っていたのが原因でした。

以下はmqoファイルの内容を一部切り出したものです。フォルダの区切り文字が \(バックスラッシュ) に成っていました。

	"teto_face" col(1.000 1.000 1.000 1.000) dif(1.000) amb(0.250) emi(0.250) spc(0.000) power(5.00) tex("tex\teto_face.jpg")
	"tetobody" col(1.000 1.000 1.000 1.000) dif(1.000) amb(0.250) emi(0.250) spc(0.000) power(5.00) tex("tex\teto_body.jpg")

こちらに形式に対応する為にmqoファイルの読み込みに使っていたライブラリ「GLMetaseq」に修正を加えました。

具体的にはmqoLoadFile関数の以下の部分に

			if (strstr(M[i].texFile,":")) {
				strcpy(path_tex, M[i].texFile);	// 絶対パスの場合
			} else {
				sprintf(path_tex,"%s%s",path_dir,M[i].texFile);	// 相対パスの場合
			}

\(バックスラッシュ)を/(スラッシュ)に置換する処理を追加し、以下の様に変更しました。これでバッチリ表示される様になりました。

			if (strstr(M[i].texFile,":")) {
				strcpy(path_tex, M[i].texFile);	// 絶対パスの場合
			} else {
				sprintf(path_tex,"%s%s",path_dir,M[i].texFile);	// 相対パスの場合
			}

#ifdef __APPLE__
			for(int i=0; i<path_tex[i]; i++) {
				if (path_tex[i] == '\\') path_tex[i] = '/';
			}
#endif