- 6 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 11:50:05 ]
- >>4
ポリゴンの位置座標をワールド空間で扱うなら、サイズもワールド空間に変換しないとだめね。 (スクリーン上での幅が、ワールドではいくつになるか計算。) 元々のポリゴンの幅が2.0(-1.0〜1.0)だから、(ワールド幅 / 2.0)倍ね。 D3DXMATRIXA16 matMod; D3DXVECTOR3 p1, p2; CalcScreenToWorld(&p1, 0, 0, 0, 640, 480, &matView, &matProj); CalcScreenToWorld(&p2, 256, 256, 0, 640, 480, &matView, &matProj); float worldWidth = p2.x - p1.x; float worldHeight = -(p2.y - p1.y); D3DXMatrixScaling(&matMod, worldWidth / 2.0f, worldHeight / 2.0f, 1.0f); matScale = matMod * matScale; 単に等倍表示しただけなら、正射影にすれば、CalcScreenToWorld とかいらなくなるわよ。 D3DXMatrixOrthoOffCenterLH( &matProj, 0, vp.Width, vp.Height, 0, 5.0f, 100.0f ); D3DFVF_XYZRHW でもできるけど、SetTransform とか使えないモードだから注意ね。
|

|