- 729 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:37:45 ]
- >>725
CPU→VertexShader→FragmentShaderという流れでは ・VertexShaderのPosition値は基本的にCPUで設定した頂点バッファの頂点そのままの値です ・VertexShaderからFragmentShaderに送るPosition値は射影空間の値を入れます。 具体的には(-1,-1,0)-(1,1,1)です ・スクリーンへは射影空間(-1,-1)-(1,1)が引き伸ばされて (0,0)-(ViewportSize.X,ViewportSize.Y)に表示されると思ってください 以上を踏まえて >pos : POSITION >としたときのposは具体的にどんな値が入っているのか。 そのまま(0,0,0) (-10,0,0) (10,0,0)が入ってきます >そしてfragmentシェーダに >OUT.HPosition = mul( float4(IN.Pos.xyz , 1.0) , matWVP); >たとえばこうして送ったときには、fragmentシェーダで扱っているHPositionは >スクリーン上のどの値なのか 頂点がカメラのフラスタムの中に入っていれば、 射影空間(-1,-1,0)-(1,1,1)の中に頂点が変換されます その先のスクリーン座標への変換はDirectXが勝手にやります 射影空間とはなんぞやって話なら SDKの「射影変換とは」って項目でも読んでください
|

|