>>299
D3DLOCK_DISCARDですね。
m_buffer->Lock(0, sizeof(D3DVERTEX) * 4 * m_smokes.size(), (void**)&vertex, D3DLOCK_DISCARD);
この行が、動的バッファのロックです。

LockとUnlockの間に「ここで頂点情報を書き込んでいます」とか書くべきでした。すいません

>>300
え、初心者サイトのサンプルをほぼそのまま使ったのですが、妙でしょうか?

xyzの更新は、Lockの前に行っています。
m_smokesというのが、ビルボードの中心座標の配列vector<D3DXVECTOR3>です。