トップページ > 過去ログ > 記事閲覧
DrawPolygon3Dのずれ
名前:Euris 日時: 2008/01/06 12:17

SetGraphMode(X,Y,ColorBit)でYに480以外の数をいれたときDrawPolygon3Dを使うと、 VERTEX_3Dで設定した頂点データよりややずれてテクスチャが描画されます。 仕様でしょうか?

Page: 1 |

Re: DrawPolygon3Dのずれ ( No.1 )
名前:管理人 日時:2008/01/14 13:42

どの程度ずれてしまうのでしょうか? 因みに3Dカメラを調整して無理やり0〜640、0〜480の空間を画面上に嵌る ようにしているだけですので、1〜2ドットのズレは発生するかもしれません。
Re: DrawPolygon3Dのずれ ( No.2 )
名前:Euris 日時:2008/01/14 16:28

貼り付ける画像のサイズはx128*y128、VECTORを以下に設定し、解像度だけを変えて表示させてみた結果です。 float Z=0.0F Vertex[0].pos.x=0.0F; Vertex[0].pos.y=129.0F; Vertex[0].pos.z=Z; Vertex[1].pos.x=128.0F; Vertex[1].pos.y=129.0F; Vertex[1].pos.z=Z; Vertex[2].pos.x=0.0F; Vertex[2].pos.y=1.0F; Vertex[2].pos.z=Z; Vertex[3].pos.x=128.0F; Vertex[3].pos.y=1.0F; Vertex[3].pos.z=Z; Vertex[4].pos.x=0.0F; Vertex[4].pos.y=1.0F; Vertex[4].pos.z=Z; Vertex[5].pos.x=128.0F; Vertex[5].pos.y=129.0F; Vertex[5].pos.z=Z; <1a>解像度が640*480 画像は画面左下に128*128の大きさで正しく表示される。 <1b>解像度が800*480 画像は画面左下に128*128の大きさで正しく表示される。 <1c>解像度が1280*480 画像は画面左下に128*128の大きさで正しく表示される。 <2a>解像度が640*600 画像と画面の端にx7ドット,y6ドットの隙間ができ、サイズ125*126の画像が表示される。 <2b>解像度が800*600 画像と画面の端にx8ドット,y6ドットの隙間ができ、サイズ126*126の画像が表示される。 <2c>解像度が1280*600 画像と画面の端にx13ドット,y6ドットの隙間ができ、サイズ125*126の画像が表示される。 <3a>解像度が640*720 画像と画面の端にx11ドット,y12ドットの隙間ができ、サイズ124*124の画像が表示される。 <3b>解像度が800*720 画像と画面の端にx14ドット,y12ドットの隙間ができ、サイズ123*124の画像が表示される。 <3c>解像度が1280*720 画像と画面の端にx21ドット,y12ドットの隙間ができ、サイズ124*124の画像が表示される。 <4a>解像度が640*360 画像の一部が画面の外に出てしまい、121*127だけが表示される。 <4b>解像度が800*360 画像の一部が画面の外に出てしまい、119*127だけが表示される。 <4c>解像度が1280*720 画像の一部が画面の外に出てしまい、110*127だけが表示される。 <5a>解像度が640*240 画像の一部が画面の外に出ているが、106*130(!)が表示される。 <5b>解像度が800*240 画像の一部が画面の外に出ているが、97*130(!)が表示される。 <5c>解像度が1280*240 画像の一部が画面の外に出ているが、69*130(!)が表示される。 <6(大きいずれ)>解像度が1920*1200 画像と画面の端にx56ドット(!),y35ドット(!)の隙間ができ、121*121の画像が表示される。 ---どうやら解像度のy値を変えるとVECTORのZ値を調整する必要があるのではないかと思い、 解像度のyの変更量におおよそ比例して、VECTORのZ値を以下のように調整するとうまく表示されました。 <2a+>解像度が640*600、VECTORのZを"-12.0F"に 画像は画面左下に128*128の大きさで正しく表示される。 <2c+>解像度が1280*600、VECTORのZを"-12.0F"に 画像は画面左下に127*128の大きさでほぼ正しく表示される。 <3a+>解像度が640*720、VECTORのZを"-24.0F"に 画像は画面左下に128*127の大きさでほぼ正しく表示される。 <4a+>解像度が640*360、VECTORのZを"+10.0F"に 画像は画面左下に128*128の大きさで正しく表示される。 <5a+>解像度が640*240、VECTORのZを"+21.0F"に 画像は画面左下に128*129の大きさでほぼ正しく表示される。 <6+>解像度が1920*1200、VECTORのZを"-64.0F"に 画像は画面左下に128*128の大きさで正しく表示される。 Windowモード、全画面モードのどちらでも同じ結果になりました。 環境は Windows Vista, VisualC++2008, DXライブラリ2.24aです。 解決法はわかったのですが、DXライブラリからこの問題に対処してくださると助かります。
Re: DrawPolygon3Dのずれ ( No.3 )
名前:管理人 日時:2008/01/15 00:39

詳細な情報ありがとうございます。 計算式を見直してみたところ、式で使われていた定数に誤りがありました。orz 修正版をアップしましたので、お手数ですがこちらをお使いになってみて下さい。m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) なお、VC版は今回のバージョンからプロジェクトで使用するランタイムライブラリを   デバッグビルド時は マルチスレッド デバッグ(/MTd) を   リリースビルド時は マルチスレッド(/MT) を 使用するように設定する必要がありますので、お手数ですがご変更の程お願い致します。
Re: DrawPolygon3Dのずれ ( No.4 )
名前:Euris 日時:2008/01/15 20:11

微細な誤差を含め、きれいに解決しました。 早い対応をしていただき、ありがとうございました。

Page: 1 |