![]() |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Zitat:
Bernhard ADD: Gibt es eigentlich eine Version, die aktueller ist, als die momentan verfügbare zum Download? |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Ich hab grade eine neue Version hochgeladen, wo ich beim Starten eines Programms die Fehlerbehandlung verbessert habe und eine andere Prozedur zum V-Sync aktivieren benutze, ich weiß aber nicht ob das den Fehler fixxt...
Zu deiner Liste rollstuhlfahrer: a) noch nicht erledigt, mach ich aber noch b) geht leider nicht, da bei TWinControl die Events OnMouseDown etc protected sind c) den Texturloader habe ich nicht selbst geschrieben, werd mich mal umschauen ob es einen Loader dafür gibt d) Hinzugefügt e) gefixxt f) War in beiden Versionen ein Fehler und ist gefixxt. Das mit der virtuellen Methode hatte ich auch versucht, allerdings wurde die Prozedur dann trotz override nicht korrekt aufgerufen... g) Den Fehler finde ich einfach nicht. Die AV kommt erst bei CItem.Free, und ich frage ja vorher extra ab ob da auch was ist was man befreien kann...ich versteh es bisher absolut nicht. h) Ist verbessert, kommt jetzt eine Fehlermeldung Zweiter Post: Es kann sein dass der das TGA nicht annimmt, weil es keine Farbtiefe von 32-bit hat. Der Texturloader den ich im Moment benutze unterstützt anscheinend aber nur 32-bittige-tga's a) liegt auch am Loader, schau ich mir mal an b) Hab ich verändert. @mleyen: Habs dann auch relativ schnell nach dem ich den Post oben geschrieben habe gesehen ^^ lag dran dass das Beispiel noch mit einer älteren Version geschrieben wurde, wo das nicht automatisch erledigt wurde. Ist gefixxt. Vielen Dank fürs Feedback ;) |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Zitat:
Aber schau Dir mal die Schleife an... meine da war Schleifenvariable x und Zugriff über y (oder umgekehrt) |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Zitat:
|
AW: Easy3DGL - Eine Bibliothek für OpenGL
Sehe ich anders...
Delphi-Quellcode:
Das auf SolidList geprüft wird statt TransparentList[], war zudem wohl der C&P Fehler
// FreeGL
for y := 0 to TransparentList.Count - 1 do begin if Assigned(SolidList[x]) then begin CItem := TransparentList[x]; CItem.Free; end; end; |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Mmh...bei mir steht da:
Delphi-Quellcode:
kann sein dass ich das schon gefixxt habe, und nur noch nicht hochgeladen, schau ich gleich mal
try
for x := SolidList.Count - 1 downto 0 do begin if Assigned(SolidList[x]) then begin CItem := SolidList[x]; SolidList.Remove(CItem); CItem.Destroy; end; end; for x := TransparentList.Count - 1 downto 0 do begin if Assigned(TransparentList[x]) then begin CItem := TransparentList[x]; TransparentList.Remove(CItem); CItem.Destroy; end; end; except end; |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Also ist bei mir natürlich noch die ungefixte Version, aber dachte darauf bezog sich die Liste von rollstuhlfahrer. Wenn es gefixt ist, ist ja gut.
|
AW: Easy3DGL - Eine Bibliothek für OpenGL
Sagen wir die CopyPaste Fehler sind gefixxt... die AV kommt noch immer... ^^
|
AW: Easy3DGL - Eine Bibliothek für OpenGL
Hab mir die neue Version noch nicht angeschaut, aber statt .Destroy sollte man lieber FreeAndNil() verwenden.
Und ein private-Sichtbarkeitsabschnitt wäre für Sachen wie FreeGL von Vorteil. |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab die AV gefunden: In der TransparentList ist an Position 1 (bei mir) ein schon aus dem Speicher genommenes Objekt, welches fälschlicherweise von Assigned als existent erachtet wird. Jetzt nur noch schauen, wo das Objekt gelöscht wird.
Bernhard ADD: AV entgültig gefunden: Bei mir wurde ein GLLicht erstellt. Dieses wurde zu der genannten Liste hinzugefügt. Leider wurde dieses Licht vorher bei den Lichtern aus dem Speicher genommen und ist somit nicht mehr da. Dann soll es allerdings wieder aus dem Speicher genommen werden und dann knallt der nächste Zugriff (das war bei mir die Abfrage nach dem Klassenname). ADD2: Was mir noch auffällt: Meine Objekte sind alle DOPPELT in der Liste, sie werden also auch 2x gezeichnet. Was machen die da doppelt drin? ADD3: Warum die alle doppelt drin sind? - Das liegt an den Konstuktoren: In GLQuader (Beispiel) wird das Material gesetzt. Dann wird über inherited der Konstruktor von GLObject aufgerufen und dort gleich nochmal das Material gesetzt. -> macht 2 Listeneinträge, von denen einer zu viel ist. ADD4: Ich habe mal eine geänderte Version hochgeladen (für Delphi ohne Umlaute). Alles, was ich geändert habe, habe ich mit "Änderung" versehen. Teilweise stehen auch die Gründe direkt dabei. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz