Vertexbuffer? beim Rendern nur flackern
-
Hi
Also ich bin ziemlicher Anfänger im Bereich Spieleprogrammierung!
Habe vor ein so zum testen und üben ein primitiv bibliothek zu basteln
wo ich dann dreieck,kreise, rechteck und so was halt alles einfach erstellen kann !!! Vielleich gibs die ja schon aber so zu üben dachte und sich mit der Materie auseinander zu setzen dachte ich mir nicht schlecht
Die Dreicke und so sollen dann in eine einfachen Liste gespeichert werden !Das Problem ist ich beim rendern falckert rot/grün
Also die Speicherallokierung für den VertexBuffer läuft ohne Problem.
Auch das TVertex3[3] Array ist gefüllt!!
Ich weiss woran es liegt - habe es vorher im main Programm genau so gehabt !!
Bitte um Hilfe!!! Hier der Code:Ich habe hier mal die Header
#ifndef primitiv_n #define primitiv_n #include <d3dx8.h> struct TVertex3 { D3DXVECTOR3 vecPos; DWORD col; }; class dreieck { struct drListe { TVertex3 Objekt[3]; drListe *nxt; }; private: ; drListe *drKopf; LPDIRECT3DDEVICE8 pDev; LPDIRECT3DVERTEXBUFFER8 D3D_VertexBuffer; public: dreieck(); dreieck(TVertex3 Obj[3], LPDIRECT3DDEVICE8 pDevin); void add(D3DXVECTOR3 vecPos, DWORD colPun, LPDIRECT3DDEVICE8 pDevin); void render(); int set(TVertex3 Obj[3], LPDIRECT3DDEVICE8 pDevin); }; #endif
Und hier Teil der cpp datei
# include "primitiv.h" # include <d3dx8.h> #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE) dreieck::dreieck() { D3D_VertexBuffer = NULL; drKopf = NULL; pDev = NULL; } dreieck::dreieck(TVertex3 Obj[3], LPDIRECT3DDEVICE8 pDevin) { D3D_VertexBuffer = NULL; drKopf = (drListe *)malloc(sizeof(drKopf)); pDev = pDevin; drKopf->nxt = NULL; drKopf->Objekt[0]=Obj[0]; drKopf->Objekt[1]=Obj[1]; drKopf->Objekt[2]=Obj[2]; pDev->CreateVertexBuffer( sizeof(drKopf->Objekt), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &D3D_VertexBuffer); VOID* pVertex; D3D_VertexBuffer->Lock( 0, sizeof(drKopf->Objekt), (BYTE**)&pVertex, 0 ); memcpy( pVertex, drKopf->Objekt, sizeof(drKopf->Objekt) ); D3D_VertexBuffer->Unlock(); } void dreieck::render() { pDev->SetStreamSource( 0, D3D_VertexBuffer, sizeof(drKopf->Objekt) ) pDev->SetVertexShader( D3DFVF_CUSTOMVERTEX ); pDev->DrawPrimitive ( D3DPT_TRIANGLELIST , 0, 1 ); }
-
Original erstellt von Soulfly2111:
pDev->SetStreamSource( 0, D3D_VertexBuffer, sizeof(drKopf->Objekt) )[/code]Der letzte Paramter ist falsch. Da gibt man nämlich nur die Größe eines einzelnen Vertex an. Du gibst aber dort die Größe des Arrays an, was also drei Vertizes groß sein müsste.
-
Jip 1000 Dank hat gefuntzt!!!!
Gruß Soufly