std::vector<MyVertex>
whereはMyVertex
構造体です。このデータを Direct3D 9 の頂点バッファーにプッシュする必要があり、私が見た例ではmemcpy
. 残念ながら、memcpy
アプリケーションがクラッシュするので、間違いなく何か間違ったことをしています。
std::vector<MyVertex> m_VertsBuff0;
void* vbPtr;
vertexbuffer->Lock (0, 0, &vbPtr, D3DLOCK_DISCARD);
memcpy (vbPtr, &m_VertsBuff0[0], sizeof(m_VertsBuff0)); // also tried sizeof(MyVertex)*m_VertsBuff0.size()
// std::copy(m_VertsBuff0.begin(), m_VertsBuff0.end(), vbPtr); // gives a compiler error void* unknown size
vertexbuffer->Unlock ();
device->SetStreamSource (0, vertexbuffer, 0, sizeof(m_VertsBuff0[0]));
更新:の代わりに を
使用したとき、これは以前は機能していました。例は問題なく動作していたので、最初から を初期化する必要はなかったようです。それから私はそれをaに変更しましたが、うまくいきませんでした。突然初期化する必要があるのに、そうするとアプリケーションがクラッシュするのはなぜですか。array
vector
void*
vector
void*
memcpy (vbPtr, m_VertsBuff0.data(), sizeof(MyVertex) * m_VertsBuff0.size());