DirectX使っていて、これほどまでに差異があるのかとびっくりしました。
NVIDIAのグラフィックボード(Geforce)を搭載しているときにはポリゴンが表示されるのに、
ATIのグラフィックボード(RADEON)を搭載しているときにはポリゴンが表示されないという結果が出ました。今までもATIで、絵がおかしいということはありましたが、
ポリゴン丸ごとでない系は初めてです。
NVIDIAのグラフィックボード(Geforce)を搭載しているときにはポリゴンが表示されるのに、
ATIのグラフィックボード(RADEON)を搭載しているときにはポリゴンが表示されないという結果が出ました。今までもATIで、絵がおかしいということはありましたが、
ポリゴン丸ごとでない系は初めてです。
今回同一プログラムを実行しての結果です。
■環境
どちらの環境もWindows7 64bitです。
*NVIDIA
- Geforce9800GT
- 196.21
*ATI(AMD)
- RADEON HD 5450
- Catalyst 10.7
■現状わかっている問題点
プロジェクション空間の扱いが挙動不審です。
シェーダー有無の関係なくおかしい挙動でした。
プロジェクション空間0~1の間でz値が収まるようにしてあるのに、
きっちり0じゃないとATI側ではポリゴンが描画されませんでした。
ワールド・ビューこれらが単位行列がセットされているとき、
プロジェクション空間が単位行列時であっても、頂点座標のz値が0でないと描画されないのは不正のような感じがします。
■調査結果・まとめ
自分のミスであることが発覚。
最小サンプル作成時に発覚したのは、切り出しもとのサンプルが
Zバッファを消去していないこと。これによって問題が生じていた。
この結果を見て、グラフィックボードの差異だ!と判断していた。
作っていたサンプルでは、これを修正した後、0-1.0のZ値でポリゴンが出るようになった。
動作の差異を生む原因になったのは、デプスの値での棄却判定によるものだと思われます。
使用するアプリケーションプログラムをきちんと作っていれば、
問題なく動作するはずなので、今回の一件は確実に自分のミスでした。
ご迷惑をおかけしたところ、すみませんでした。