zoukankan      html  css  js  c++  java
  • 3D游戏从头编之D3D(4)

    一台摄象机有以上画面中的一些属性:
      1、 观察点:摄象机摆放的位置
      2、 目标点:摄象机对着一个地方
      3、 观察范围:圆锥形状投影范围的夹角大小,单位是弧度。
      4、 可见的最近距离和最远距离:这两个距离中间的观察范围就是可见区域。
      5、 纵横比:显示时候的宽和高比例,一般为1。

      明白了摄象机的原理后,我们来看D3D中是怎么设置它的,有两个矩阵是用来设置摄象机的,一个是观察矩阵,一个是射影矩阵,程序说明一切。
      首先是设置摄象机的观察矩阵:

      m_vEyePt = D3DXVECTOR3( 0.0f, 3.0f,-5.0f ); // 视点坐标
      m_vLookatPt = D3DXVECTOR3( 0.0f, 0.0f, 0.0f ); // 目标点坐标
      m_vUpVec = D3DXVECTOR3( 0.0f, 1.0f, 0.0f ); // 当前世界的向上方向,通常是(0,1,0)

      // 根据上面给出的3个值建立一个基于左手坐标系的观察矩阵
      D3DXMatrixLookAtLH( &m_matView, &m_vEyePt, &m_vLookatPt, &m_vUpVec );

      // 设置该矩阵为D3D的当前观察矩阵
      pd3dDevice->SetTransform( D3DTS_VIEW, &m_matView );

      然后设置摄象机的射影矩阵:

      m_fFOV = D3DX_PI/4; // 观察范围夹角,这里是90度
      m_fAspect = 1.0f; // 纵横比为1
      m_fNearPlane = 1.0f; // 可见的最近距离
      m_fFarPlane = 10000.0f; // 可见的最远距离

      // 建立一个基于左手坐标系的射影矩阵
      D3DXMatrixPerspectiveFovLH( &m_matProj, fFOV, fAspect, fNearPlane, fFarPlane );

      // 设置该矩阵为D3D的当前射影矩阵
      pd3dDevice->SetTransform( D3DTS_PROJECTION, &m_matProj );

  • 相关阅读:
    linux----安装jdk
    docker安装gitlab
    Centos7 安装docker
    容易混淆的字符
    nodejs 简单从淘宝的有好货根据关键词获取列表以及详情
    bash设置终端提示符
    C# NuGet打包和离线安装
    Shell 遍历文件夹中所有文件并进行相关操作
    css中“~”和“>”
    双击编辑表格字段
  • 原文地址:https://www.cnblogs.com/bendanchenzhicheng/p/2175159.html
Copyright © 2011-2022 走看看