トップページ > 過去ログ > 記事閲覧
DrawPolygon3Dで扱う画像サイズ
名前:kou 日時: 2009/04/24 02:45

こんばんは、初めまして リファレンスにあるサンプルプログラムで色々なサイズの画像で実行していたのですが 縦横1024を超えた画像を表示させようとすると期待通りに表示してくれません 例えるならDerivationGraphなどをを使って1024までの画像を切り取り それを使って表示した感じになってしまいます DrawPolygon3Dでは画像サイズの上限があるのでしょうか? 環境はVC++2005です 原因がわかる方が居りましたら教えてください よろしくお願いします

Page: 1 |

Re: DrawPolygon3Dで扱う画像サイズ ( No.1 )
名前:管理人 日時:2009/04/24 18:41

恐らく画像を読み込む前に以下の記述を追加すれば、 ハードウエアの限界のサイズまで読み込み可能になると思います SetUseDivGraphFlag( FALSE ) ; DXライブラリは標準では大きいテクスチャや2のn乗ではないサイズを持つ テクスチャを分割するようにしています  例えば 257x257 サイズのテクスチャを読み込もうとした場合、分割しないと 512x512 サイズのテクスチャが必要になり、画像の元のサイズのほぼ4倍の 面積が必要になってしまって勿体無いので 256x256 32x128 128x32 32x32 の4枚の テクスチャに分けます( DXライブラリで使用する最小サイズは 32x32 )  また、ハードウエア的に対応しているテクスチャサイズが 2048x2048 の 環境で 4096x4096 サイズの画像を読み込んだ場合は、2048x2048 サイズの テクスチャ4枚に分割します  そして、大きいテクスチャを分割する処理にはもう一つルールがあり、 ハードウエア的に高解像度のテクスチャに対応しているという情報が返ってきても、 ある程度の大きさ以上の画像は分割する、ということをしています  この「ある程度の大きさ」以上かどうかの判定は「画面をすっぽり収める テクスチャの最低サイズより大きいかどうか」で判定しています DXライブラリの画面サイズはデフォルトの設定では 640x480 ですので、 縦横の大きいほうを取って 640x640 のサイズがすっぽり収まるテクスチャの サイズ( 1024 )が分割するかどうかの判断基準となります  なぜこのような処理をしているのかといいますと、以前ハードウエア的には 4096x4096 のサイズまで対応しているという情報が返ってくるハードウエアで、 実際に 4096x4096 のテクスチャを使用したら正常に表示されないことがあったからです  長くなりましたが、SetUseDivGraphFlag 関数は、上記の分割処理をするかしないかを 設定するための関数で、TRUE を渡すと分割処理をして、FALSE を渡すと分割処理を しないようになります  ただ、最近のグラフィックチップは 8192x8192 辺りのサイズまで対応するように なりましたが、まだ 2048x2048 くらいが限界のグラフィックチップもありますのでご注意ください
Re: DrawPolygon3Dで扱う画像サイズ ( No.2 )
名前:kou 日時:2009/04/24 20:02

管理人様 ご回答ありがとうございます 早速試したところ期待通りの結果を得ることが出来ました 詳しい解説もしていただき、とても参考になりました ありがとうございました

Page: 1 |