DirectX11 渲染——输入装配、绑定着色器、绘制

DirectX11 渲染——输入装配、绑定着色器、绘制

1.输入装配有哪些工作要做?

  1. 每次渲染我们都要考虑使用哪个输入布局来渲染几何图形。所以我们使用Direct3D环境对象的IASetInputLayout函数用于绑定我们所创建的顶点布局,该函数只有一个单一的类型为 ID3D11InputLayout 的对象。
  2. 此外,IASetVertexBuffers函数用来设置一个或多个顶点缓存:
    第一个参数是绑定缓存的开始槽,就是你传递过去的创建好的顶点缓存数组中的第一个你要使用的缓存序号。
    第二个参数是传进去的顶点缓存数量。
    第三个参数是一个或多个缓存数组。
    第四个参数是步长,它表示每个顶点的字节数。
    第五个参数是从缓存的开始位置到顶点的第一个元素的开始位置的字节偏移量。
  3. 函数 IASetPrimitiveTopology 用于告诉 Direct3D 我们所渲染的几何图形的类型。例如渲染一个三角形列表我们将使用标识 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST 作为函数的参数,或者我们想渲染三角形带将使用标识
    D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP。这些标识总共有 42 个值,它们大多数处理更加高级的几何体的顶点控制,该列表见于 DirectX 的文档。

2. 如何绑定着色器?

通过调用 Direct3D 设备环境的 VSSetShader 函数来设置顶点着色器,调用 PSSetShader 来设置像素着色器。这两个函数都采用着色器作为参数,一个类型实例数组指针,和该数组的大小。我们将在第七章讨论类型实例接口。

3. 设置好一切工作后如何渲染绘制?

Direct3D 设备环境对象的Draw函数采用如下参数:
第一个参数,顶点数组中的顶点数量。
第二个参数,顶点的开始位置(它实际上是你所希望开始绘制的顶点缓存的偏移量)。

4. 渲染几何图形的例子

float clearColor[4] = { 0.0f, 0.0f, 0.25f, 1.0f };
d3dContext_->ClearRenderTargetView( backBufferTarget, clearColor );

unsigned int stride = sizeof( VertexPos );
unsigned int offset = 0;

d3dContext_->IASetInputLayout( inputLayout );
d3dContext_->IASetVertexBuffers( 0, 1, &vertexBuffer_, &stride, &offset );
d3dContext_->IASetPrimitiveTopology( D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST );

d3dContext_->VSSetShader( solidColorVS, 0, 0 );
d3dContext_->PSSetShader( solidColorPS, 0, 0 );
d3dContext_->Draw( 3, 0 );

swapChain_->Present( 0, 0 );

你可能感兴趣的:(环境,着色器,渲染,输入装配,绑定着色器)