トップページ > 過去ログ > 記事閲覧
読み込んだ画像にテクスチャフィルタリングモードが適応されない
名前:もっち 日時: 2010/12/03 15:36

はじめまして。いつもDXライブラリのおかげで楽しく制作させていただいております。 LoadGraphで読み込んだ画像にMV1SetTextureSampleFilterModeの DX_DRAWMODE_ANISOTROPIC(2)が適応されず、困ってしまい質問させて頂きました。 勝手にDX_DRAWMODE_BILINEAR(1)になってしまうようです。 MV1GetTextureGraphHandleで取得したグラフィックハンドルなら MV1SetTextureGraphHandleでテクスチャを変更してもDX_DRAWMODE_ANISOTROPIC(2)を適応する事ができました。 もし上手く適応する方法があれば教えて頂けると嬉しいです。 ソースを貼らせていただきます。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int ModelHandle0 ; int ModelHandle1 ; int GrHandle ; ChangeWindowMode(true);//ウィンドウモード // DXライブラリの初期化 if( DxLib_Init() < 0 ) { // エラーが発生したら直ちに終了 return -1 ; } // テクスチャ画像の読みこみ GrHandle = LoadGraph( "KabeTex.bmp" ) ; // 3Dモデルの読み込み ModelHandle0 = MV1LoadModel( "Kabe.mqo" ) ; ModelHandle1 = MV1LoadModel( "Kabe.mqo" ) ; // モデルを画面に映る位置に移動 MV1SetPosition( ModelHandle0, VGet(-320.0f, -300.0f, 6000.0f ) ) ; MV1SetPosition( ModelHandle1, VGet( 960.0f, -300.0f, 6000.0f ) ) ; // テクスチャで使用するグラフィックハンドルを変更する MV1SetTextureGraphHandle( ModelHandle1, 0, GrHandle, FALSE ) ; //適応される MV1SetTextureSampleFilterMode( ModelHandle0, 0, DX_DRAWMODE_ANISOTROPIC ) ; //適応されない? MV1SetTextureSampleFilterMode( ModelHandle1, 0, DX_DRAWMODE_ANISOTROPIC ) ; // モデルを描画する MV1DrawFrame( ModelHandle0 , 4 ) ; MV1DrawFrame( ModelHandle1 , 4 ) ; // キー入力待ち WaitKey() ; // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }

Page: 1 |

Re: 読み込んだ画像にテクスチャフィルタリングモードが適応されない ( No.1 )
名前:管理人 日時:2010/12/05 20:25

ご報告していただいた現象の原因はグラフィックハンドルが持っている情報の違いによるものです DX_DRAWMODE_ANISOTROPIC の効果を得るには、グラフィックハンドルが保持している画像に ミップマップがある必要があるのですが、LoadGraph で読み込んだグラフィックハンドルには ミップマップがありません、他にも3Dモデルのテクスチャとして読み込まれる場合は2のn乗の サイズを持たない画像を2のn乗のサイズに自動的に変換するなど、3Dモデルの画像読み込み処理で 作成されるグラフィックハンドルと LoadGraph で作成されるグラフィックハンドルでは幾つか違いがあります 少し考えたのですが、3Dモデルの画像読み込み処理と同じ処理で画像を読み込む関数を追加するのが 一番適当なような気がしたので、そうしました よろしければその関数を追加したこちらのバージョンをお使い下さい m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) 追加した関数は以下の関数です // 3Dモデルに貼り付けるのに向いた画像の読み込み方式で画像を読み込む( 戻り値 -1:エラー 0以上:グラフィックハンドル ) int MV1LoadTexture( char *FilePath ) ; こちらを LoadGraph の代わりにお使いになってみてください 貼り付けて頂いたサンプルプログラムの LoadGraph を使用しているところを MV1LoadTexture に変更するだけで効果を確認できると思います
Re: 読み込んだ画像にテクスチャフィルタリングモードが適応されない ( No.2 )
名前:もっち 日時:2010/12/06 20:05

管理人様、丁寧なお返事感謝致します。 なるほど。DX_DRAWMODE_ANISOTROPICが掛からなかったのには、その様な原因があったのですか。 大変勉強になりました。ありがとうございます。 用意していただいたMV1LoadTextureを使わせてもらった所、 無事にDX_DRAWMODE_ANISOTROPICを適応する事ができました! こんな便利な関数を作っていただけるとは、本当に感謝感激です。 今回は本当にありがとうございました。 これからもDXライブラリのますますのご発展を期待しております。 それでは失礼します。

Page: 1 |