2012-03-31 15 views
2

こんにちは。私はdirectX10とC++を使って小さなゲームを持っています。しかし、私はmeshloaderfromOBJ10直接Xサンプルを使用して作成し始めました。しかし、私のオブジェクトはすべて、彼らは色を持っているにもかかわらず、まったく無地の黒いだけです。DirectX Lighting

私はこれが原因で光のですけど、一見光で行うためのコードのいずれかを変更すると、このサンプルから何もしません。誰もが簡単な(ISH)法にちょうど光のすべてを知っている場合

私はメイクどこでも、それは明るいのように、思っていました。私は影や反射など気にしません。私がやっていることは必要ではありませんが、ただのシルエットではなく、私のオブジェクトを見るのが良いでしょう。

乾杯。

+0

私は通常、HLSLシェーダ内のRGB形式(範囲 '0.f ... 1.f')で出力色を指定できると思います。 「シルエット」はどういう意味ですか?ワイヤーフレーム? – phimuemue

答えて

1

しかし、私のオブジェクトはすべて、彼らが色を持っている単なる黒althoughtを探しています。

シェーダはテクスチャが設定されることを想定し、そのテクスチャから材料情報を読み出し、そしてあなたは(それがDX10で呼び出されるどのサンプラー又は)テクスチャステージに対応するヌルテクスチャを設定した場合、シェーダはそのヌルテクスチャから黒色を読み取り。スペキュラ/エミッシブまたは反射マッピングのないブラック素材は、使用するライトの数に関係なく、常に黒く見えます。

使用テクスチャのない材料/オブジェクト(シェーダを仮定すると、材料の色を理解し、テクスチャの色でそれを乗算)の白いテクスチャ。または、DX9に切り替えて、不足しているテクスチャを白として扱う固定機能のパイプラインを使用します。または、テクスチャなしでマテリアルをサポートするようにシェーダを変更します。

ちょうど光のすべての方法、メイクのように、それは明るいどこでも

D3D10が固定されていていないので、あなたがあなたのシェーダに追加する必要があります「グローバル」の周囲を(、使用することができます関数パイプライン)。私はあなたが実際に影がまだそれを知らない気に影

気にしないでください

しかし、あなたは本当にそれを望んでいません。グローバルな周囲の値は、すべての材料をグラデーションなしで均等に着色します。これは、未編成の複雑なメッシュを使用している場合、あなたが見ているものを理解することができず、テクスチャ化されたものはすべて醜いと見えることを意味します。また、黒い材料はまだ黒のままです。ですから、「どこでも明るくする」ためには、「太陽」の指向性光源や非常に大きなポイントライトが必要です。