PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DirectX9 CreateVertexBuffer Problem.


Gast
2011-06-02, 14:02:18
Hallo ich bin dabei ein Weltraumspiel zu programmieren und habe ein Problem mit dem Sternenhimmel.
Hier maldie entsprechenden Codezeilen.

class Space
{
public:
Stars *Raum1;
DWORD FVF_Stars;
PDIRECT3DVERTEXBUFFER9 StarsRaum1VertexBuffer;

};

...

GameClass->FVF_Stars=D3DFVF_XYZ|D3DFVF_DIFFUSE;
GameClass->Raum1=new Stars[300]; // 300 Sterne im Raum verteillen.

...

MainCl->pD3DDev->CreateVertexBuffer(300*sizeof(Stars),
D3DUSAGE_POINTS,
GameClass->FVF_Stars,
D3DPOOL_DEFAULT,
&GameClass->StarsRaum1VertexBuffer,
NULL);

if(GameClass->StarsRaum1VertexBuffer!=D3D_OK)
{
_3DOT_LogWr("Vertexbuffer für die Sterne konnte nicht erstellt werden.",1);
return NULL;
}
else
_3DOT_LogWr("Vertexbuffer erfolgreich erstellt.",1);


Ich bekomme in mein Logbuch immer "Vertexbuffer für die Sterne konnte nicht erstellt werden."

kann mir jemand sagen, was ich falsch mache.

Danke !

Krishty
2011-06-03, 16:14:12
Debug Runtime einschalten:

Vor dem ersten #include <d3d9.h> ein
#if defined(_DEBUG)
# define D3D_DEBUG_INFO
#endif
einsetzen

Dann Start -> Alle Programme -> Microsoft DirectX SDK -> DirectX Utilities (die x64-Version, falls du dein Programm für x64 kompilierst) -> DirectX Control Panel -> Direct3D 9:
Use Debug Version of Direct3D 9
Debug Output Level auf More
Maximum Validation

Dein Programm im Debugger starten und im Ausgabefenster gucken, welche Fehlermeldung Direct3D ausspuckt. D3DUSAGE_POINTS benötigt z.B. Software Vertex Processing falls die Hardware keine Point Sprites unterstützt; dann darf der Buffer nicht in D3DPOOL_DEFAULT landen und du musst auf Systemspeicher umstellen.

Vergiss nicht, wieder auf die Retail Runtime umzuschalten, wenn du fertig bist. Viele Spiele und z.B. auch Visual Studio 2010 stürzen ab, wenn man sie mit der Debug Runtime startet.

Wenn es irgendwann mal klappt und du Erfahrung mit Direct3D hast, findest du in meinem Artikel (http://zfx.info/viewtopic.php?f=11&t=8#p19) Informationen über Sternenlisten, Berechnung der Helligkeiten, das Abtasttheorem, Motion Blur usw. Ist aber schon was für Fortgeschrittene und Perfektionisten ;)

Coda
2011-06-04, 22:57:28
Ööh, völlig Off-Topic, aber gibt es einen guten Grund für dich noch DirectX 9 zu verwenden?