07/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の「射影変換とは」って項目でも読んでください