DrawIndexedPrimitive + TRIANGLEFAN + Fenstermodus = Müll
-
Hi,
Ich lasse in meinem Programm mein Terrain ganz klassisch rendern, also mittels eines Vertexbuffers und eines Indexbuffers. Zum zeichnen führe ich dazu folgendes aus:
d3dDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE); d3dDevice->SetRenderState(D3DRS_FILLMODE,FillMode); for(UINT i=0,iStartIndex=0;i<vPrimitives.size();i++) { SAFERUN(d3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLEFAN,0,0,vPrimitives[i]+2,iStartIndex,vPrimitives[i]),L"Terrain: Rendern fehlgeschlagen!"); iStartIndex+=vPrimitives[i]+2; } d3dDevice->SetRenderState(D3DRS_FILLMODE,D3DFILL_SOLID); d3dDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_CCW);
vPrimitives ist dabei ein std::vector. Diese Variante funktioniert bei meinem System wunderbar (Geforce 5600), jedoch bei allen anderen getesteten System (zufällig alles ATI Karten, keine Ahnung ob Zusammenhang besteht) wird nur wirres Zeug oder gar nichts gezeichnet. Es wird ebenfalls nur Müll gezeichnet wenn ich das Programm bei meinem System im Fenstermodus ausführe.
Wenn jemand schonmal mit einem ähnlichen Problem konfrontiert war, wäre ich für jeden Tipp sehr dankbar,
MfG
creon
-
Das Problem ist ein Fehler in deinem Programm. f'`8k
Bye, TGGC (\-/ returns)
-
Eine ähnliche Diagnose kam mir auch schon in den Sinn
Kannst du dir eventuell vorstellen an welcher Stelle im Programm der Fehler sein könnte? Also bei der Definition der Vertices/Indizes, oder beim FVF(=(D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1)), oder beim Rendern selbst (Funktionsaufruf falsch oder ungünstig bzw falsche Renderstates die ich setzen sollte?).
Ich poste auch gerne noch jede mögliche andere Stelle des Quelltextes, wenn mir jemand sagen könnte wo denn vermutlicherweise der Fehler sein könnte...
Aber dennoch danke,
creon
-
Was sagen denn die Ausgaben der DX Debug Runtimes? f'`8k
Bye, TGGC (\-/ returns)