Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich habe diesen Thread ins Leben gerufen, um Programmier die vieleicht eine gute alternative zu Delphi suchen oder FPClern die einfach sich nun mit OpenGL beschäftigen wollen, ein Ort zu schaffen wo sie Support finden.
Die Idee ist nicht nur die dglopengl.pas in Sachen FPC aktuell zu halten, sondern auch Demos, Tutorials und Code Snippets bereit zu stellen.
In den nächsten Tagen werde ich mich bemühen alle meine Codes so zu preparieren, dass sie auch nützlich sind und meine Unit sammlung mit dem Namen X-Dream hier verfügbar zu machen.
Ich hoffe es werden sich noch ander Progger finden die ebendfals Unterstützung geben werden und vieleicht ihre Erfahrung in allen nur erdenklichen Formen presentieren.
MfG TAK2004
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Also hier hab ich mein Lager aufgeschlagen, ein schneller Server der rund um die Uhr Online ist und in kürze werde ich auch noch ne bessere domain aus den Hut zaubern .
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ich bitte darum die dglOpenGL.pas nicht irgendwo anders zu mirrorn, denn wenn der Download zentral über uns läuft erhalten die Nutzer immer die aktuellste Version. Wäre von daher also besser wenn du auf den Download der DGL verlinken würdest.
Ich denke ohnehin, dass die FPCler auch auf DelphiGL gut aufgehoben sind - mit Win32 API unterscheidet sich die OpenGL Programmierung in Free Pascal und auch Virtual Pascal praktisch überhaupt nicht, wenn man den Delphikompatibilitätsmodus einschaltet, bei Kylix ist es sicher ebenso, wobei mir hier weitergehende Erfahrungen fehlen, da ich noch nicht viel mehr gemacht habe, außer halt auszuprobieren, ob ich mit Kylix und/oder Freepascal ein Programm zum Laufen bekomme. Sowohl Free Pascal als auch Virtual Pascal haben übrigens ebenfalls aktive Communities.
Deine Intentionen in allen Ehren, ich halte es aber für produktiver, wenn es eine zentrale Anlaufstelle gibt, zumal gerade kleine Communities oft von Lust und Laune eines einzigen Betreibers abhängig sind, solange die Dynamik keine "kritische Masse" erreicht (auch wäre so etwas wie das dglWiki niemals aus einer Menge von kleinen, zerfaserten Delphi & OpenGL Seiten gewachsen - ich bin beeindruckt wieviel hier in kurzer Zeit entstanden ist).
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hab nun wieder ein Update gemacht nun ist eine Kamerademo sowie eine passende unit die die Kamera sowie Frustum mit bringt.
@Sascha Willems
Ich werde die dglopengl wieder runter nehmen, hab die mit hoch geladen das die leute nicht erst suchen müssen aber der einwand ist sehr einleuchtend.
Wie würde es mit einem link zur file aussehen ?
@Mars
Ich glaub Mars wir verstehen uns miss, ich lade nur meine files auf den server dort kommen nur meine libs und demos hin der rest soll schon schön hier bleiben.
Ich bin auch für eine gemischte aber dafür starke Comunity als für eine kleine und zersplitterte und wie du sagst fpc und delphi sind sich sehr ähnlich.
Ich betonen noch mals die oben genannte Adresse ist nur für meine Files gedacht.
Wenn es tatsächlich mal ein Tut zu FPC und OGL geben wird, was ich mir nicht wirklich vorstellen kann, dann sollte es schon hier auf delphigl liegen.
MfG TAK2004
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Hi Leute.
Ich arbeite zur Zeit an ein eigenen Levelformat was für Innen und Aussenlandschaten gedacht ist.
Das Format heisst XDL und als Mapeditor hällt Blender her.
Die maps werden mit Hilfe eines Pythonscripts von mir in XDL exportiert und mit einer passenden selbständigen Unit in OGL eingelesen.
Momentaner Stand:
-Verticedaten werden als Liste übergeben
-Normaldaten werden als Liste übergeben
-Texturdaten werden als Liste übergeben
-Facedaten werden als Liste übergeben
-Objektdaten werden als Liste übergeben
-Entity(Licht und Dummyentity) werden in eine Liste festgehalten mit ihren daten
-Laderoutine holt sich die Listen und speichert sie in ein Objekt namens XDL welches die Laderoutine und zeichenroutine enthält
-gerendert wird momentan noch alles in ein zug über ein VBO
(Ich hab die Daten einlagerung dem BSP Format von ID ähnlich aufgebaut)
Geplante Neuerungen:
-Octree einbettung ins Dateiformat für Statische Objekte
-Entity Liste ausbauen (aktionsscript,selber festlegbare daten(Blender bietet Propertys womit ein Objekt variablen zugewiesen werden können und sehr leicht abzufragen sind),..)
-Multitexturekoordinaten
-Texturpfad mit Texturnamen Liste
-Boundingbox für dynamische Objekte übernehmen(für frustumculling)
-Frustumculling per Boundingbox für nicht Statische Objekte
-Lightmaps(Blender bestitz leider keine solsche Funktion ich hoffe über das Radiosity(Vertice bezogene) von Blender es geregelt zu bekommen)
-alternatives Kollisionsmodel(kurz und knapp, wer Physik nutzt und nicht gerade ne Kollision auf ne Statue mit 12k Polys machen will baut sich ne easy version von mesh und pflegt diese in die Physik Engine ein z.B. Newton )
-Mesh Objekte für z.B. Bäume,Statuen oder andere Objekte die änderungen unterliegen sollen wie z.B. LOD
Wer verbesserungsvorschläge oder zusätzliche Ideen hat kann sich melden.
Das Dateiformat mit script wird frei nutzbar sein, ich werde meine momentane Version heute online stellen und ein Beispiellevel hinzulegen.
Es kann aber vieleicht für Delphi User kleine probs geben hab die unit nur unter FPC zu laufen aber im Delphi mode von daher nur "vieleicht".
Ich habe auch schon mit meiner Unit Newton Experimente gemacht und bin begeistert.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hab da heute so eine nette Idee bekommen bezüglich meines Levelformates XDL was in der Entwicklungsphase steht.
Mir ist aufgefallen in zuge der Erstellung der Testmap das ich bei 6MB angelangt bin eine stolze grösse für eine kleine Map(zur verteidigung die ist schon teilweise Highpoly Polys~160.000 Polys).Momentan werden 12Byte Vertexkoordinaten,12Byte Normals,24Byte Texturkoordinaten zusätzlich werden Facelisten mit 8Byte an start und verticeanzahl geführt auch eine Objektliste die 8Byte start und faceanzahl sowie 12Byte Positiondaten enthält,der header selber ist ca 100B und zum schluss noch ne Entitieliste in der z.B. Licht und Glows enthalten sind diese enthalten ledeglich ein typbezeicher 4Byte und die 12Byte Positiondaten. Das sollte erstmal ein einblick in die grösse geben. Da Octree noch nicht implementiert ist fehlt da noch ein paar Byte für dieses.
Nun meine neue Idee die folgende dinge vorraus setzt eine nach Polygonen sortierte Verticeliste,ein Octree welches eigene Verticelisten zulässt und einen array von facepointern hat. Beim erstellen der Map werden komplexere Meshes die mehrmals in der Map vorkommen nicht einfach kopiert und transformiert,rotiert oder skaliert, sondern kopiert,transformiert,rotiert,skaliert^^ und dann mit hilfe von Propertys ein tag gesetzt das es ein Clon ist und ein 2 Tag der den Namen des Orginals enthält. Bringt 2 vorteile 1 Man sieht die Map von sachen Mesh immer noch vollständig und 2 man spart sich pro Kopie die Vertice und Facedaten hat aber sage und schreibe 12Byte Pos,12Byte Angle und 12Byte Scale daten mehr(naja ich habe meshes die sind knapp 400KB fett die so locker 6-8mal so vor kommen da machen bei ~2MB ersparnis die 36Byte mehr nichts aus ^^). Also mein Blender script baut die Verticelist,Facelist,... auf dann wird ein Octree netz drüber gespannt. Jedes Node bekommt eine liste mit facepointer also adressen in der orginalen Faceliste. Wenn nun ein Objekt in der datenerstellung auftaucht mit der Tag Nummer für Clon, dann wird das das Orginal Mesh genommen mit Matrix passen der skalierung,rotierung,transformierung angepasst und dann werden in die Leafs die Facepointer des orginals gepappt. Nun muss beim laden aber noch was gemacht werden sonnst stehen rein logisch ja in den besagten Leafs nicht die faces, sondern an der stelle des Orginals. Deswegen muss in der laderoutine dann eine passende Verticeliste für jedes leaf erstellt werden die mit hilfe einer passenden pointerliste für jedes face zu den Clon objekt transformationsdaten führen. Also haben wir nun ledeglich die Matrix,erkennungstag,orginal Objekt pointer,facepointerliste und eine liste mit dem pointer zur Matrix für das Clonobjekt gepeichert.
Okey bei einen Cube mit 12Polys und dadurch 36Vertice wäre es nicht so prikelnder unterschied aber bei Meshes wie den oben besagten Dekor oder sogar bei Maps wie in meiner ,wo man einfach ne ganze etage mit meheren 10.000Polys einfach mal duplizieren kann ist der unterschied gewaltig. Der zusätzliche Rechenaufwand ist zwar nicht klein aber der grösste Teil ist ja nur beim Exportiern der Map, beim laden muss ja ledeglich eine Matrix auf ein Vertice angewand werden und sonnst ist nur verticelisten in speicher kopieren. Weitere vorteile sind das man dann VBO nutzen kann und für ältere PC DL und man hat ne komplette Verticeliste und Faceliste der scene(praktisch für Newton z.B. ^^).
Wer jetzt durch meine schnelle wiederlegung meiner Idee gestiegen ist, kann ja mal sagen was er davon hält.
Für die die nicht draus schlau geworden sind, kann ich versichern das ich das bald genauer erläutern werde so mit Bildmaterial(Sitzt momentan auf Arbeit und der gedankenblitzt kam erst in mein Traum letzte Nacht.Man sieht mich beschäftig sowas 24h an tag ^^).
Die Technick werde ich so schnell wie möglich verwirklichen steht auf der liste an Platz 3 gleich nach Octree und GLPerfmon. Dann kann ich mal Praxis zahlen nennen und waynes interresiert 4 ist Texturen und dann ist es sogar schon für einfache dinge Praxistauglich.
PS:Weiss einer ob es die Technik schon gibt und ob sie ein Namen hat sonnst würde ich mir ein dafür ausdenken so aller GCO Ghost Clone Object.
MfG TAK2004
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Hi wie in voriegen Post am ende erwähnt will ich ein GLPerfmon basteln.
Ist eigentlich ne recht simple angelegenheit so in Orthomodus ne fps kurve zu zeichnen und ein paar weitere werte wie Polys,resolution,speicherbelastung. Doch soll noch ne funktion rein die erlaubt eigene Werte visuell dar zustellen und per tasten oder maus(steht noch nicht fest) die werte in graphen darstellen zu lassen alles im allen eine light version vom Nvidia Tool Perfmon was aber für DX ist (leider ). Spiele aber je nach vorrankommen noch eventuell routinen für benching ein zu bauen. Visuell ist dann so das man nen kleines rechteckiges kästchen hat wo alles drin ist diese kästchen ist an 4 positionen zu packen und je nach inhalt an der grösse änderbar.
MfG TAK2004
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
^^ Einfacher als gedacht war gestern mit dem Perfmon fertig so weit ich ihn für mich brauchte und heute werde ich ein Benchmark einbauen und es für persönliche erweiterungen passend machen.
Da ich wie ich vor wenigen minuten erfahren habe aber die nächsten wochen in Krankenhaus und zuhause im Bett liegen werde aufgrund einer Operation ist schwer möglich source frei zu geben wenn ich es bis heut abend nicht packe. Screeni folgt noch muss noch Farbentechnisch was ändern und will ihn in meine Newton<->XDL Demo testen und als Beispielcode frei geben.
MfG TAK2004
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Hi hier die ersten 2 screenis von mein Performancetool+Benchmark.
Man sieht auch schon ein Level mit ~60k Polys was ich zum testen in Blender gebastelt habe und mit hilfe meines Levelformats exportiere und in der demo lade.
Ich werde nun noch ein paar Indikatoren in GLPerfmon reinbauen und ein bischen kommentieren.
Dann noch Newton rein und die Testdemo ist fertig.
GLPerfmon kommt mit ein Laufzeit Graphen der einfach nur viesuell Maximale und aktuelle Werte wiedergibt.
Es gibt mehere modis:
Benchmarkmodus:
Es wird eine laufzeit festgelegt(in ms) und wenn diese rum ist wird die funktion stop des indikators aufgerufen.
Im fall des FPS Indikators werden z.B. alle werte zusammen addiert und durch werteanzahl dividiert um eine durschnitswerte zu erhalten.
Laufzeitmodus:
Es wird die angegebenen werteliste immer wieder überschrieben.
Beide Modis können grafisch mit hilfe des graphen dargestellt werden oder per Text (graph zeichenroutine wird nicht aufgerufen).
Jeder Indikator hat eine Start,Update,Idle und Stop procedure die persönlich angepasst werden kann.
Technisch funktioniert es auch schon das mehere Indikatoren nebeneinander laufen können aber noch nicht viesuel.
Z.B. kann man ein FPS und Info Indikator laufen lassen und mit einer Taste zwischen beiden grafischen Darstellungen wechseln.
Es sind 2 Units einmal X_Dream_Perfmon.pas und X_Dream_Perfindicator.pas.
Die erste ist das Herzstück die das Handling übernimmt und die zweite ist die Unit wo man dann eigene oder vorgegebene Indikatoren findet.
Beide Units benötigen folgende externe Units: Windows,dglopengl
Ich halt mich ran das ich morgen oder spätestens übermorgen den Source On habe.
MfG TAK2004
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
ich benutz als Ersatz für Opengl12.pas unter Freepascal den OpenGL header von PowerGL: http://fpc.wz.cz/html/index.php (ich muss Opengl12 benutzen, da ich SDL beuntze und ich noch keine möglichkeit gefunden hab dglopengl mit SDL zu nutzen (ich habs auch längere Zeit nicht mehr versucht))
Von der Perfomrance her hab ich jetzt keine unterscheid gemerkt... Aber mein fps counter ist auch nicht so genau und bei 300-unendlich fps sind messungen sowieso nicht so genau
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Hab mich gerade mit SDL beschäftigt da wir nun eine multiplatform Engine wollen also unter Linux,Windows und Mac OS.
SDL und FPC sind ein dreamteam muss ich sagen sitzt hier gute 3h und hab auch gebacken bekommen eine demo mit sdl und der dglopengl.pas zu fummeln. Wenn interesse besteht werde ich sie online stellen. Ich werde jetzt nur noch testen ob die demo auch wirklich unter linux,windows und mac os x läuft und das der fall ist gehts los momentanen code umzuschreiben.
MfG TAK2k4
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
uups hab rausgefunden warum mein Programm mit dglOpenGL nicht lief... ich hab einfach erwartet, das man da einfach nur wie in Opengl12.pas InitOpenGL aufruft und damit alles gemacht hat..
hier muss man ja noch
Code:
ReadExtensions;
ReadImplementationProperties;
aufrufen.....
Jetzt läuft mein Programm auch mit dglOpenGL und kompiliert Problemlos unter Freepascal und Delphi
Ich hab das noch nicht auf Linux gettestet aber ich vermut mal das sollte Problemlos gehen... Unter MacOS X werd ich probleme mit dem byte order haben aber da ich ja sowieso noch keinen Mac habe....
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Habs auch unter Linux probiert und dort gehts auch einmandfrei.
Mache gerade meine units alle SDL sicher ^^.
Was ich toll finde ist das SDL_Image Module was man nachträglich installieren kann.
Ich habe eine funktion für das laden von so vielen Grafikformaten nun die unter allen 3 systemen funktionieren .
Momentan mache ich mein Levelformat noch fertig wird wohl ein bischen dauern bis das ferig ist.
Hab mich mit Newton Support in Contact gesetzt und hab erfahren das ein Mac OS X port schon gemacht wird in Januar gehts weiter, da deren Website vom wurm gefressen wurde. Also kann ich warscheinlich sogar mit Newton arbeiten und muss nicht erst wieder in ODE einfummeln.
Ich freue mich auf den Tag wenn ich mein Projekt compiliere und es auf Windows,Linux und Mac OS X läuft dank FPC,SDL und OpenGL
MfG TAK2k4
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Do Dez 30, 2004 14:49 Beiträge: 71 Wohnort: STADT Kirchen
Mal ne ganz andere Frage.
Ich bin dabei meine ganzen alten Delphi OGL Proggs auf FPC umzuschreiben. Weil das eigentlich schnell passieren soll und ich aus privaten Gründen keine Zeit habe selbst alles nachzusuchen wollte ich folgende Konvertierungssachen nachfragen.
Ich brauche das FPC-Pendant zur Unit "messages"
Kann ich die OpenGL 1.5 Dateien einfach so einbinden? Also einfach ins Units Verzeichnis kopieren und dann klappts?
Muss ich irgendwelche anderen Dinge (z.B. bei der Initialisierung) beachten?
MfG
Das AKW
_________________ Rock is a message.
Hear the message an you will rock!
Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.