|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 07.01.2008, 00:34 Titel: Mesh mit DrawIndexedPrimitive() rendern |
|
|
<edit TLoP>Bitte in Zukunft für C++ Code NUR noch cpp-Tags verwenden. </edit TLoP>
Ich möchte die Vertices eines Meshes, das mit der Funktion D3DXLoadMeshFromX() erstellt wurde extrahieren, um bestimmte Operationen durchzuführen.
Nun habe ich beim Rendern ein Problem. Ein Zugriffsfehler wird bei der Funktion DrawIndexedPrimitive() verursacht. Was könnte hier falsch sein?
Deklaration
CPP: | // Zeiger auf den Mesh
LPD3DXMESH m_lpMesh;
// der Vertexbuffer enthaelt die Vertices
LPDIRECT3DVERTEXBUFFER9 temp_lpVB;
// der Indexbuffer beschreibt die Dreiecke
LPDIRECT3DINDEXBUFFER9 temp_lpIB; |
Block in Renderfunktion
CPP: | m_lpMesh->GetVertexBuffer(&temp_lpVB);
m_lpMesh->GetIndexBuffer(&temp_lpIB);
// Vertex-Format setzen
m_lpD3DDevice->SetFVF(m_lpMesh->GetFVF());
// Vertex Buffer angeben
m_lpD3DDevice->SetStreamSource(0, temp_lpVB, 0,sizeof(m_lpMesh->GetNumBytesPerVertex()));
// Index Buffer angeben
m_lpD3DDevice->SetIndices(temp_lpIB);
//Landschaft rendern
m_lpD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,
0, 0,
m_lpMesh->GetNumVertices(),
0,
m_lpMesh->GetNumFaces()); |
Das 3D-Mesh (m_lpMesh) wurde auch zuvor ordnungsgemäß angelegt. Daran liegts schonmal nicht _________________ Kein Rückzug! Kein Aufgeben! |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 07.01.2008, 15:57 Titel: |
|
|
Zugriffsfehler hat wohl was mit den Pointern zu tun. Also ALLE DX Funktionen checken, ob sie keinen Fehler verursachen. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 07.01.2008, 21:36 Titel: |
|
|
Also alle Funktionen sind ungleich NULL. Hab ich gecheckt und sollte auch so sein, weil ich ja mit "DrawSubset()" den Mesh ja problemlos rendern könnte. _________________ Kein Rückzug! Kein Aufgeben! |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 08.01.2008, 14:51 Titel: Re: Mesh mit DrawIndexedPrimitive() rendern |
|
|
LeeDiGer hat Folgendes geschrieben: | CPP: | // Vertex Buffer angeben
m_lpD3DDevice->SetStreamSource(0, temp_lpVB, 0,sizeof(m_lpMesh->GetNumBytesPerVertex())); |
|
Also entweder als letzten Parameter(Größe eines Vertex) "sizeof(deine_vertex_struktur)" oder nur "m_lpMesh->GetNumBytesPerVertex()" angeben. Die Speichergröße des Rückgabewerts von GetNumBytesPerVertex() macht da keinen Sinn.
Ansonsten - hast du mal kontrolliert, was die ganzen Mesh-Funktionen zurückgeben? _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 08.01.2008, 16:39 Titel: |
|
|
Ah, stimmt. Wenn ich dieses "sizeof" weglasse dann gehts. Dann hab ich die Funktion leicht falsch interpretiert. Danke für die Hilfe _________________ Kein Rückzug! Kein Aufgeben! |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|