SetStreamSource的解惑
HRESULT SetStreamSource(
[in] UINT StreamNumber,
[in] IDirect3DVertexBuffer9 *pStreamData,
[in] UINT OffsetInBytes,
[in] UINT Stride
);
这个是DirectX中SetStreamSource函数的原型声明,文档上说的很简单,就是把顶点缓存和设备数据流绑定,剩下的就不大清楚了。
1 参数解释
StreamNumber:这个是设备数据流的序号,一般程序是用的都是单流,此时设置参数为0。如果想试用多个数据流,就得使用顶点声明,其实FVF最终也会在内部转换为顶点声明。
pStreamData:这个是顶点缓存。
OffsetInBytes:这个偏移量是相对顶点缓存的偏移量,绘制函数才绘制的时候也是从相对于顶点缓存的此偏移量开始计算的。所以它并不是顶点缓存的起始位置相对于数据流起始位置的偏移量。后面的程序可以解释。
Stride:这个跨度自然就是单个顶点的大小了,绘图函数也是根据这个跨度进行取点的。
2 示例代码
bool InitObject()
{
intnVertexNum = 6;
HRESULT hRe = NULL;
hRe = g_pDevice->CreateVertexBuffer(nVertexNum*sizeof(D3DVertex),0,