- UID
- 1432
- 精华
- 积分
- 76
- 威望
- 点
- 宅币
- 个
- 贡献
- 次
- 宅之契约
- 份
- 最后登录
- 1970-1-1
- 在线时间
- 小时
|
以下是老外的换算代码。
理解为用3个矩阵坐标换算出屏幕坐标
UINT OffsetInBytes,Stride;
VOID* pIndex,*pData;
D3DXVECTOR3 Vector2D;
pDevice->GetVertexShaderConstantF(0,ViewProjectionMatrix,4); 这里取顶点矩阵坐标?(三个参数表什么呢,为何 是 0,4 230,4 9,3 msdn 也没找到)
pDevice->GetVertexShaderConstantF(230,LocalToWorld,4);
pDevice->GetVertexShaderConstantF(9,WorldToLocal,3);
pDevice->GetIndices(&pIndexData);
pDevice->GetViewport(&Viewport);
pDevice->GetStreamSource(0, &pStreamData, &OffsetInBytes, &Stride);
D3DXMatrixIdentity(&WorldToLocal);
D3DXVECTOR3 VectorMiddle(0,0,0),ScreenMiddle(Viewport.Width/2,Viewport.Height/2,0);
D3DXVec3Unproject(&VectorMiddle,&ScreenMiddle,&Viewport,&ViewProjectionMatrix,&LocalToWorld,&WorldToLocal);
D3DXVec3Project(&Vector2D,&Vector3D, &Viewport, &ViewProjectionMatrix,&LocalToWorld,&WorldToLocal);
{
DrawRectangle(Vector2D.x,Vector2D.y,30,30);
}
|
|