Direct3D 11 学习笔记(一)

Direct3D 11 学习笔记(一)


Setting Up The Direct3D 11 Device

  第一步,创建三个对象:a device, an immediate context, a swap chain
  第二步,创建 render target view
  第三部,初始化 viewport

device context

  device context分为Immediate Context和Deferred Context两种。Immediate context的命令都会立刻得到执行,deferred context则是把命令存在列表里,等他被提交的时候才开始执行。

DXGI简介

  DXGI(DirectX Graphics Infrastructure,DirectX 图形基础架构) 提供了对图形硬件进行底层管理的功能。这些功能不涉及显卡的高级特性(比如不需要区别D3D9级别显卡和D3D11级别显卡),因此是与D3D的图形功能是分开的。 DXGI是提供了一个底层的通用框架来支持未来的硬件。

3D Transformation

  D3D提供了极为简单的变化矩阵构造接口:XMMatrixRotationX, XMMatrixRotationY, XMMatrixRotationZ 三个函数都只接收一个参数,该参数表示需要旋转的弧度;XMMatrixTranslation 接收三个浮点数,分别表示在 x, y, z 轴上的移动;XMMatrixScaling 接收三个浮点数,分别表示在 x, y, z 方向上的缩放。这些函数都会直接返回一个 4x4 矩阵。
  在计算中,我们得到的是物体在 object space 下的坐标,在现实到屏幕上之前,需要进过下列三步:1、从 object space 转换到 world space;2、从 world space 转换到 view space;3、从 view space 转换到 projection space。
  我们可以使用 XMMatrixLookAtLH( Eye, At, Up ) 接口得到 world space 到 view space 的变换矩阵,使用 XMMatrixPerspectiveFovLH( FOVy, Aspect, Zn, Zf ) 得到 view space 到 projection space 的变换矩阵,第一自然段中的接口可以得到 object space 到 world space 的变换矩阵。在将这些变换矩阵输入到 vertex shader 中之前,我们需要求的它们的转置,可以使用 XMMatrixTranspose( Matirx ) 得到矩阵的转置矩阵
  为什么需要求转置呢?因为在D3D中的矩阵是行主序的,而在 vertex shader 中的矩阵确实列主序的,所以传输到vertex shader 之前需要进行转置。其实,OpenGL 和 OGRE 引擎也都采用的是列主序。

你可能感兴趣的:(C/C++)