Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Stevan

Frischling

  • »Stevan« ist der Autor dieses Themas

Beiträge: 2

Wohnort: Leipzig

Beruf: Zivi

  • Private Nachricht senden

1

29.12.2006, 21:32

2.6 Texturen, je mehr dreiecke umso mehr fehler

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.
~ Grüße Stevan ~

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

29.12.2006, 21:49

kann es sein, dass du die positionen deiner vertices zumindest teilweise nicht initialisierst?
evtl. irgendwo zweimal y statt y und z getippt oder so!?

zeig sonst mal den codeteil der die positionen der vertices festlegt.

die parameter sind soweit in ordnung, die multisample quality solltest du aber auf 0 setzen (was zwar zufällig gleich wie D3DMULTISAMPLE_NONE ist, aber...) ;)

zum schluss noch ein kleines lob: für den ersten post is das da oben perfekt :)

Stevan

Frischling

  • »Stevan« ist der Autor dieses Themas

Beiträge: 2

Wohnort: Leipzig

Beruf: Zivi

  • Private Nachricht senden

3

30.12.2006, 00:29

Nabend,

hab den Fehler gefunden, bin nu den Quelltext Zeile für Zeile von vorn nach hinten durchgegangen und hab herausgefunden das die Berechnung der Rotationsmatrizen um die drei Achsen falsch verlief und deswegen diese Fehler entstanden. Wenn ich alle drei Achsen mit der Berechnung für die X Achse berechne funktioniert es, also liegt der Fehler wohl bei Y oder Z.
Hab nu auch die Berechnung erstmal mit ner Identitätsmatrix (?) überschrieben und da funktioniert es ohne Probleme (und ohne Rotation ^_^ ), ergo schau mir das Kapitel dadrüber nochmal an. :)

Trotzdem danke für die Hilfe, hatte immerhin durch dich noch einen kleinen Schreibfehler gefunden (die Farben des Dreiecks mit ner Zahlen zwischen 0 und 10 generiert, obwohls ja nur zwischen 0 und 1 liegen sollte). :)
~ Grüße Stevan ~

Werbeanzeige