Hallo,
erstmal Glückwunsch zu dem gelungenem Buch, habe die zweite Ausgabe seit geraumer Zeit (komme kaum dazu es zu lesen), schönes Buch, jedoch lässt die Seitenqualität einiges zu wünschen übrig, meins fällt nämlich schon langsam auseinander.
Nun ne kurze Vorgeschichte, mein System basiert auf Windows XP SP2, hab eine Radeon x850xt als Grafikkarte, arbeite mit MinGW und umgewandelten Bibliotheken aus dem DirectX SDK.
Ich bin selber im Moment im Kapitel 2.6, das Beispielprogramm mit den vielen Dreiecken mit den tollen Texturen, funktioniert auch "einwandfrei", hat jedoch komische Grafikfehler je mehr Dreiecke ich angebe.
Dazu ein kurzes Screenshot wenn ich 1000 Dreiecke generiere (da sieht man am besten was ich mein
),
KLICK.
Bei einer Anzahl von 180 Dreiecken hab ich fast keinerlei Probleme, je mehr es dann werden umso mehr Fehler in der Art wie da oben tauchen auf, das werden dann immer mehr bis ich selbst die Dreiecke im Hintergrund nicht mehr sehe, so wie auf dem Bild.
Diese Fehler sind von Frame zu Frame unterschiedlich, also ein wirres durcheinander von Dreiecken, Vierecke, Tausendecken in den farbigsten Farben.
Was ich auch noch festgestellt habe ist, das ich diese Fehler ebenfalls habe wenn ich mit der Maus über den Anwendungsbereich fahre, aber das wiederum nicht immer. Oo
Der Quelltext unterscheided sich eigentlich kaum von dem aus dem Beispielprogramm, einzigste Unterschiede sind:
- andere Bezeichnungen, da ich selbst versuche mit Hilfe des Buches eine Engine zu bauen
- eine Funktion die mir für mein Fenster und die DirectX Schnittstelle folgende Standardparameter festlegt:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
tStatus setDefaultParameters(SParameters *pOut){
ZeroMemory(pOut, sizeof(SParameters));
pOut->iAdapter = 0;
pOut->DeviceType = D3DDEVTYPE_HAL;
pOut->bWindowMode = true;
pOut->VideoMode.Format = D3DFMT_X8R8G8B8;
pOut->VideoMode.Width = 800;
pOut->VideoMode.Height = 600;
pOut->VideoMode.RefreshRate = 60;
pOut->BackBufferFormat = D3DFMT_X8R8G8B8;
pOut->BackBufferCount = 1;
pOut->ZStencilBufferFormat = D3DFMT_D24X8;
pOut->MultiSampleType = D3DMULTISAMPLE_NONE;
pOut->dwMultiSampleQuality = D3DMULTISAMPLE_NONE;
pOut->EnableAutoDepthStencil = TRUE;
pOut->dwFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING;
return T_OK;
};
|
SParameter ist dabei die gleiche Struktur wie aus dem Buch, könnte es vielleicht an diesen Parametern liegen (das da vielleicht einige nicht stimmen?)? Denn dabei bin ich mir nicht sooo sicher.
Tja, da ich aber leider nich weiß wodurch dieser Fehler ensteht, hab ich leider keinen Schimmer wo ich mit der Fehlersuche anfangen soll. Liegt es an der Renderfunktion? Vielleicht an der Initialisierung, is ein Fehler in der Matrix? Funktionieren die Zufallsgeneratoren richtig?
Ich weiß es nicht, möchte jetzt auch nicht alles Mögliche an Quelltext hier posten, vielleicht kennt das ja schon einer und kann mir nen Hinweiß geben.
Naja, falls noch Fragen anstehen oder ihr wirklich den gesamten Quelltext haben wollt, poste ich das natürlich auch.