DrawPrimitiveUP und der Stack
-
also ich bin gerade am rumtesten und wollte ein:
m_D3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST,8,VertexXYZArrayAufDemStack,sizeof(VertexXYZ));
ausführen. aber das ergibt nur sinnloses zeug (die dreicke flackern nur rum...). ich bin mir sicher das alles korrekt ist. wenn ich nämlich das "VertexXYZArrayAufDemStack" durch ein "VertexXYZArrayAufDemHeap" ersetze, dann funktioniert es.
in der directx 9 sdk doku steht aber:
**
"The vertex data passed to IDirect3DDevice9::DrawPrimitiveUP does not need to persist after the call. MicrosoftDirect3D
completes its access to that data prior to returning from the call."
**vestehe ich das jetzt falsch oder wie? damit ist doch gemeint, dass die daten nach dem aufruf nicht weiter existieren müssen, weil directx erst wieder zurückkehrt, wenn es mit den zugriffen fertig ist.
weiß jemand ob man den stack als vertbuffer prinzipiell benutzen kann?
-
Ich weiß nicht, warum es bei Dir nicht geht. Bei mir geht es aber auf alle Fälle, ich benutze den Stack um so Sachen wie das Frustum oder Portals zu rendern und es funktioniert einwandfrei.
Vielleicht hast Du doch irgendwo was falsch gemacht ?! Vielleicht einen Zeiger falsch konvertiert?
-
vielleicht habe ich ja noch was vergessen zu initialisieren. was muss man denn alles machen damit man DrawPrimitiveUP benutzen kann? muss man die aktuelle streamsource vielleicht irgendwie verändern? oder irgendwelche renderstates setzen?
-
ich habe den fehler gefunden.
ich dummkopf.
in meiner engine habe ich für die vortranformierten vertexe die z und RHW werte im konstruktor standardmäßig auf 0 und 1 gesetzt, so das ich diese beim zeichnen nicht immer setzen muss. da ich aber für die DrawPrimitiveUP-test-version den code zum zeichnen woanders einfach nur mit copy und paste eingefügt habe, sind diese werte, da der puffer ja auf dem stack liegt, NICHT initialisiert worden. LOL. das führte dann dazu, das der rhw wert "zufällige" werte hat und die dreiecke flackern.
manchmal steht man einfach auf dem schlauch und sieht die einfachsten dinge nicht!