![]() |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Zitat:
|
AW: Easy3DGL - Eine Bibliothek für OpenGL
Kann man auch eine bereits erstellte Form (z.B. Quader) während der Laufzeit löschen?
Erzeugt habe ich eine Bühne im FormCreate mit:
Delphi-Quellcode:
Bühne[1] := GLQuader.Create(-X/2 - 0.25, 4, 0, 0.1, 6, Y-7, 'textures/bg.bmp');
Löschen möchte ich diesen Quader durch einen Button während der Laufzeit:
Delphi-Quellcode:
Bühne[1].Free;
Das funktioniert aber leider nicht... Kann jemand helfen, oder weiß jemand eine Lösung? :) Vielen Dank im Voraus! |
AW: Easy3DGL - Eine Bibliothek für OpenGL
probier doch mal
Code:
Bühne[1].Free;
Bühne.Delete(1); |
AW: Easy3DGL - Eine Bibliothek für OpenGL
E2018 Record, Objekt oder Klassentyp erforderlich...
Hab's dann mal probiert mit
Delphi-Quellcode:
Bühne[1].Delete(1);
aber das geht leider nicht... (E2003 Undeklarierter Bezeichner: 'Delete') :( Ich suche mal weiter nach Lösungen :D Notlösung wäre alles neu zu zeichnen aber wenn viele Objekte gezeichnet werden, kann das ja auch gerne mal länger dauern... |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Guck Dir noch mal meinen Code genau an und vergleich mal Zeichen für Zeichen!
Du mußt das Ding auch vor dem Delete befreien mit Free, da sonst ein Speicherleck bleibt. |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Leider stürzt das Programm bei Bühne[1].Free ab.
Heißt: Systemfehler Code 8. Und mit Bühne.Delete(1) lässt sich das Projekt nicht kompilieren... |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Lösung gefunden:
Hinzufügen:
Delphi-Quellcode:
Löschen:
begin
Bühne[1] := GLQuader.Create(-X/2 - 0.25, 4, 0, 0.1, 6, Y-7, 'textures/bg.bmp'); AddSolid(Bühne[1]); end;
Delphi-Quellcode:
var CItem: GLObject;
begin CItem := SolidList[0]; FreeAndNil(CItem); SolidList.Delete(0); end; |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Da anscheinend noch Interesse an dieser Unit besteht, setze ich mich mal hin und schreibe sie soweit um, dass sie wirklich sauber zu benutzen ist.
Diese Unit ist ursprünglich in Java geschrieben worden, und zwar zusammen mit meinem Informatik-Lehrer, und als ich sie nach Delphi übersetzt hatte war ich noch ziemlicher OpenGL Neuling. Ich werd jetzt mal einiges an Techniken einbauen, die ich seitdem gelernt habe (Mutlisampling, Blinn-Phong-Lighting, etc.) und das Object-Handling verbessern. Vielleicht füge ich auch meine (sehr simple) Partikelengine ein. Desweiteren werde ich die glBMP durch die glBitMap ersetzen, sodass auch .tga und .png-Files unterstüzt werden, und außerdem weniger Fehler beim Laden von Texturen entstehen. Also warte am besten 2-3 Tage, dann dürfte die Unit in einem Zustand sein dass sie Fehlerfreier arbeitet. |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Wow das ist klasse :)
Genial wären auch noch andere Formen, aber ich möchte hier nicht zu viel verlangen. Vielleicht kann ich ja (darf ich ja) auch noch eigene Formen in diese Unit einbinden. :-D |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Zitat:
Mit ein wenig Arbeit könnte man auch die gl3ds einbauen, eine Unitsammlung zum Laden von 3ds/x/obj Files...mal schauen, mal schauen ^^ Ich freue mich über Verbesserungen der Unit, sie ist sowieso eher als simple Inspiration gedacht, als als irgendwas auch nur annähernd ausgewachsenes ^^ |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Ich habe vorher nie mit OpenGL gearbeitet und habe durch diese Unit einfach Lust bekommen mich Schritt für Schritt einzuarbeiten.
Diesen ersten Schritt konnte ich aber nur durch Easy3DGL machen und wagen, anders wäre ich gar nicht in Versuchung geraten. Jetzt bahnen sich völlig neue Möglichkeiten für mich an ;) Ich bin halt gerade dabei das alles zu verstehen was da abläuft und dann fange ich an selbst mal dadran rumzuschrauben, denn wenn etwas bei mir laufen soll, dann sollte es zu 100% perfekt laufen. |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Zitat:
![]() Hab gerade eine Version hochgeladen, wo die Objekte eine 'Active'-Eigenschaft haben, die bestimmt, ob Objekte gerendert werden oder nicht. Außerdem ist Multisampling nun aktiviert (kann bei der Init-Methode abgeschaltet werden), und ich hab ein bisschen im Quelltext aufgeräumt. |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Der Einstieg ist ja mal genial! :thumb:
Um die Unit muss ich mich morgen kümmern aber das hört sich doch sehr vielversprechend an :) |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Jo, auf der Seite gibts alles Richtung OpenGL, und 95% davon sind Delphi ;) Das Forum davon ist auch sehr gut was Fragen Richtung OpenGL angeht, hier in der DP ist das immer Glückssache ob grad jemand on ist der sich da auskennt, da drüben gibts genügend OGL pros :D
|
AW: Easy3DGL - Eine Bibliothek für OpenGL
Erstmal ein dickes Lob! Da ist wirklich einiges besser geworden! :)
Aber: Die neue Prozedur
Delphi-Quellcode:
gibt bei mir beim Beenden immer eine Ungültige Zeigeroperation zurück...
FreeGL(Handle: HWND)
Das könnte zusätzlich auch noch hierdran liegen:
Delphi-Quellcode:
finalization
if AppHandle > 0 then FreeGL(AppHandle); end. |
AW: Easy3DGL - Eine Bibliothek für OpenGL
Zitat:
|
AW: Easy3DGL - Eine Bibliothek für OpenGL
Ach das war damit gemeint ;)
Danke! :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz