// Set the projection matrix
FLOAT fAspect = 1;
D3DXMatrixPerspectiveFovLH( &m_matProj, D3DX_PI/4, fAspect, 1.0f, -4.0f );
// Set up the view matrix.
D3DXMatrixLookAtLH( &m_matView, &D3DXVECTOR3( 0.0f, 0.0f, -4.0f ), //from
&D3DXVECTOR3( 0.0f, 0.0f, 0.0f ), //at
&D3DXVECTOR3( 0.0f, 1.0f, 0.0f ));//up
pd3dDevice->SetTransform( D3DTS_VIEW, &m_matView );
pd3dDevice->SetTransform( D3DTS_PROJECTION, &m_matProj );
// fill the vertex buffer with the data for a quad
VERTEX Vertices[] =
{
{ -1.0f,-1.0f, -3.0f, 0.0f, 1.0f, }, // x, y, z, tu, tv
{ 1.0f,-1.0f, -3.0f, 1.0f, 1.0f, },
{ 1.0f, 1.0f, -3.0f, 1.0f, 0.0f, },
{ -1.0f, 1.0f, -3.0f, 0.0f, 0.0f, },
};
这段代码中视点在(0,0,-4),视距d3d固定为1,那么矩形纹理正好应该在视平面上。
设置视角为90°,应该整个纹理正好充满整个窗口,可是现在整个窗口是放大了的中间一小部分,这是为什么啊?
附件是完整代码,很小的。 |