テクスチャの位置が

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ヒューガ

テクスチャの位置が

#1

投稿記事 by ヒューガ » 13年前

コード:

void load(){
	my.model=MV1LoadModel("./dat/models/001/001.pmd");
	my.tex=LoadGraph("./dat/models/001/tex1.png");
	MV1SetTextureGraphHandle(my.model,1,my.tex,FALSE);
} 
上のようなコードでテクスチャの張替えを行おうとしたのですがテクスチャの位置?がずれてしまいます。
tex1.pngは001.pmdのもともとのテクスチャで、MV1SetTextureGraphHandleでmy.texの代わりに-1を入れると同じ画像がちゃんと貼られます。
なぜこうなるのでしょうか?

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: テクスチャの位置が

#2

投稿記事 by ISLe » 13年前

DXライブラリはビデオメモリの消費量を減らすために内部で画像を分割する場合があるそうです。
そのため3D関係の関数では画像の一部だけが対象となり特にUV座標はズレてしまいます。

DxLib_Init() の呼び出し前に
SetUseDivGraphFlag(FALSE); // 画像分割を無効化
を追加して直れば上記の理由です。

直らなかったらすみません。

ヒューガ

Re: テクスチャの位置が

#3

投稿記事 by ヒューガ » 13年前

治りませんでした・・・

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: テクスチャの位置が

#4

投稿記事 by ISLe » 13年前

ヒューガ さんが書きました:治りませんでした・・・
そうですか。
提示されたコードだけではこれ以上は分かりませんね。

PMDはテクスチャ内包しているのでしたっけ。
内包しているとしたら何らかのサイズ変換が掛かっているかもしれないのでそのせいかもしれません。
要するにデータの中身を見ないと分からないということです。

ヒューガ

Re: テクスチャの位置が

#5

投稿記事 by ヒューガ » 13年前

http://www1.axfc.net/uploader/O/so/218278
一応あげときます。000.pmdだけはなぜか正常に動きます。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: テクスチャの位置が

#6

投稿記事 by ISLe » 13年前

000で使っているテクスチャのサイズは2048x2048で、001は800x600ですね。

少なくともMV1SetTextureGraphHandle関数の公式リファレンスには『グラフィックハンドルの画像の幅や高さは 2 の n乗( 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 ... ) である必要があり、~』と書かれています。

テクスチャは2の累乗のサイズ(且つ正方形)にしておくと環境依存になりにくいです。

ヒューガ

Re: テクスチャの位置が

#7

投稿記事 by ヒューガ » 13年前

画像サイズ変更してみたらできました!ありがとうございました!

閉鎖

“C言語何でも質問掲示板” へ戻る