D3DXMATRIX view_matrix; D3DXVECTOR3 pos(0.0f, 3.0f, 0.0f);
D3DXVECTOR3 target(0.0f, 0.0f, 0.0f);
D3DXVECTOR3 up(0.0f, 1.0f, 0.0f); D3DXMatrixLookAtLH(&view_matrix, &pos, &target, &up);灯光  D3DLIGHT9 dir_light;
ZeroMemory(&dir_light, sizeof(dir_light)); dir_light.Type = D3DLIGHT_DIRECTIONAL;
dir_light.Diffuse = WHITE;
dir_light.Specular  = WHITE * 0.3f;
dir_light.Ambient   = WHITE * 0.3f;
dir_light.Direction = D3DXVECTOR3(0.0f, 1.0f, 0.0f); //1 和 -1 都看不见为什么设置 视矩阵时 为什么 如果摄像机 放在 y轴上 什么也看不见呢

解决方案 »

  1.   

    D3DXMatrixLookAtLH 实际就是zaxis = normal(At - Eye)
    xaxis = normal(cross(Up, zaxis))
    yaxis = cross(zaxis, xaxis)
        
     xaxis.x           yaxis.x           zaxis.x          0
     xaxis.y           yaxis.y           zaxis.y          0
     xaxis.z           yaxis.z           zaxis.z          0
    -dot(xaxis, eye)  -dot(yaxis, eye)  -dot(zaxis, eye)  l
    pos 与 up 同一方向,其实就是一个。D3DXMatrixLookAtLH 要求三个向量正交.
      

  2.   

    zaxis = normal(At - Eye)
    xaxis = normal(cross(Up, zaxis))运算后,xaxis ={0,0,0} yaxis  ={0,0,0} ,矩阵非法
      

  3.   

    camera的位置与方向,不能是同一个点.
      

  4.   

    或许楼主把D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);改成D3DXVECTOR3 up(0.0f, 0.0f, -1.0f);就能看见了,猜的~~~