000
18.08.2005, 18:41 Uhr
~AlinghiFan
Gast
|
Hallo zusammen. Ich programmiere in letzter Zeit zum Spass ein bischen mit C und C++ rum. Nun habe ich noch ein wenig in Direct3D9 hereingeschnuppert und es funktioniert auch wirklich gut. Da ist blos ein Codeabschnitt, den ich nicht ganz verstehen kann.
C++: |
CUSTOMVERTEX vertices[] = { { -1.0f,-1.0f, 0.0f, 0xffff0000, }, { 1.0f,-1.0f, 0.0f, 0xff0000ff, }, { 0.0f, 1.0f, 0.0f, 0xffffffff, }, };
void* pVertices; g_pVB->Lock( 0, sizeof( vertices ), (void**)&pVertices, 0 ); memcpy( pVertices, vertices, sizeof( vertices ) ); g_pVB->Unlock();
|
Also das Ziel ist es ja, das CUSTOMVERTEX Array in den "g_pVB" VertexBuffer zu kopieren. Die Lock Funktion wird wohl Speicher für pVertices zur verfügung stellen. Doch warum muss man der Lock Funktion einen void** Zeiger übergeben? Würde ein void* Zeiger nicht auch reichen?
C++: |
void *ptr = malloc( sizeof( vertices ) );
memcpy( ptr, original, sizeof( vertices ) );
|
Eventuell sind Kenntnisse von D3D9 von nöten. Aber ich hoffe, jemand kann mich aufklären. |