结合dx文档解析 PipesGS 的实现原理。深入理解 GS 及 StreamOut 等dx 基础概念。
1、ID3D10Buffer Interface:
该接口用来存取 buffer resource (都是无结构的内存)。buffer 一般用来存储顶点和索引数据。
主要接口:
GetDesc ,获取buffer描述信息;
Map,获取buffer数据的指针;
Unmap,使得通过Map获取的指针无效;
三种类型的buffer可以被创建,顶点buffer,索引buffer,shader-constant buffer。创建这些buffer资源,需要调用接口
ID3D10Device::CreateBuffer。
一个buffer在被访问之前要绑定到管线上。要绑定到 input-assembler stage 上,通过调用 IASetVertexBuffers 和 IASetIndexBuffer。要绑定到 Stream-Output stage 上,通过调用 SOSetTargets。
buffer 可以被同时绑定到多个管线状态上,供读取。buffer 可以被绑定到一个单独的管线状态上被写入。然而相同的buffer不能同时
读取和写入。
2、ID3D10ShaderResourceView Interface:
该接口指定一个shader在渲染期间可以访问的 subresources。shader resoureces 包括 constant buffer, texture buffer, texture , sampler。
主要接口:
ID3D10ShaderResourceView::GetDesc。
当绑定资源到 shader stage 时就需要创建 shader-resource-view。绑定发生在下面函数调用时:
GSSetShaderResources、VSSetShaderResources、PSSetShaderResources。