Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Das geht nicht. Zu mindest nicht so einfach wie du dir das vorstellst. Eine Displayliste kann so ziemlich alles mögliche beinhalten.
Das einzige was du machen könntest wäre ein Format zu erzeugen mit welchen die einzelnen Befehle in einen Stream packen kannst und wieder einlesen kannst. Aber beim Laden müssten die DLs sowieso neu erzeugt werden.
Aber bevor ich zu weit aushole. Was hast du denn bitte genau vor? Evtl biste ja auf dem Holzweg oder es gibt was wesentlich einfacheres.
ich schreibe gerade an einem kleinem 3D-Programm zur Konstruktion und Berechnung von Modellflugzeugen .
Für die Ausgabe von Texten (Berechnungsergebnisse , Bemaßungen usw.) benutze ich Fontdisplaylisten , die ich mir beim Programmstart mit CreateFont erzeuge .
Das funktioniert eigendlich prima , nur das Erstellen der Fontlisten (wenn man dann auch noch mehrere Fonts braucht ) dauert ne halbe Ewigkeit .
Ich dachte mir , ist doch eigendlich Blödsinn diese Listen jedesmal neu zu erstellen , juste mal nen vorgefertigtes Fontpacket beim Start einlesen ginge schneller .
Wenn ich an die Vektordaten der erzeugten Fonts herannkäme wäre mit ja auch schon geholfen ,dann würde ich diese halt wegspeichern und bei bedarf laden , ich habe nur keinen blassen Schimmer , wie man darankommt .
Mit Texturen möchte ich die Beschriftung nicht machen , eine 3D-Ausgabe ist mir da schon wichtig.
Wenn es ne andere Art gibt mein Ziel zu ereichen , immer her damit .
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Aha. Du benutzt als Polygonfonts. Ich kenne dein Problem. Das kann man leider nicht abspeichern. Du kannst aber bei den Fonts irgendwo einen Qualität angeben. Wenn du die runter drehst gehts ein wenig schneller. Aber die Fonts sehen dann auch nicht mehr so gut aus. Wobei ich persönlich dir sowieso raten würde nicht zu viele Schriftarten zu mischen. Das sieht dann auch nicht mehr wirklich gut aus.
Was auch häufiger gemacht wird sind 2D Schriften die dann an der Stelle positioniert werden an der normal die 3D Schrift zu sehen wäre. Also ich meine jetzt richtigen Schriften wie die Elemente eines HUDs.
Ich glaube es gibt doch eine Möglichkeit. Zwar kann man die Displaylisten nicht direkt speichern, da diese treiberabhängige Optimierungen enthalten, aber es gibt doch diesen Feedback Mode. Der war so weit ich weiß ursprünglich für Plotter gedacht, um an die transformierten Polygone zu kommen. Wenn du also in die Projektions und Betrachtungsmatrizen die Einheitsmatrix lädst, müsstest du über die Feedback-Arrays an das Mesh des Fonts kommen. Speichern musst du das dann selber, aber das dürfte ja kein Prob sein.
_________________ [18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay
hi, i'm a signature viruz, plz set me as your signature and help me spread
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ja okay. Das wäre evtl noch ne Möglichkeit da ran zu kommen. Aber du müsstest die Daten dennoch wieder Laden und neue Liste generieren. Der Rechenaufwand zum berechnen der Polygone würde dann wegfallen aber ob das den Aufwand rechtfertig würde ich mal stark bezweifeln.
Das Laden der Daten und die Generierung der DL dürfte relativ schnell gehen. Je nach Graka und Polyanzahl vielleicht ne halbe Sec pro Font.
Aufwand: Naja, wo bleibt denn dann der Spaß, wenn man immer das einfachste macht?
_________________ [18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay
hi, i'm a signature viruz, plz set me as your signature and help me spread
ich benutze Opengl als Mittel zum Zweck für meine eigendliche Aufgabe , Berechnung von Modellflugzeugen .
Ich steck da also nicht so tief drinn wie ihr .
Habt ihr eventuell eine wenig Quellcode ?
Die Idee mit dem Laden von Displaylisten könnte man doch bestimmt auch für andere Projekte einsetzen.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also das mit dem Feedbackbuffer ist sicherlich eine schöne Sache um es zu erlernen. Allerdings können so ziemlich alle OpenGL Methoden da drinne vorkommen und die müssten später auch wieder auswerten können. Sprich beim Einlesen müsstest du alle Methoden auch wieder auswerten können. Abgesehen davon sind DLs fix. Du kannst zwar eine Displayliste generieren und evtl diese über umwege abspeichern. Aber klientseitig abgefragte Extensions oder sonstige Ereignisse können dann nicht mehr berücksichigt werden. Somit wäre das Ergebnis wie in Stein gemeiselt.
Zu Testzwecken mag das vielleicht noch interessant sein aber ich glaube nicht, dass es wirklich sinn machen würde solch einen extremen Aufwand zu betrieben nur weil es gerade 1 Mal 3-10 Sekunden länger dauert.
Ich weiß jetzt nicht wie deine Anwendung aufgebaut ist. Aber wenn du einen Dialog anzeigst mit dem Hinweis, dass die Fonts generiert werden, dann werden sich die Leute damit abfinden. Wenn du das OpenGL Fenster häufig öffnest und wieder schließt wäre es evtl sogar sinnvoll einen zweiten RC zu erstellen und zu begin deiner Anwednung in diesem RC deine Fonts zu generieren und diese dann lediglich mit wglShareLists dem anderen ständig neu erstellten RC zur verfügung zu stellen. So müsstest du nur 1 Mal zu Anwendungsbegin die Fonts generieren. Das Problem wäre zwar immer noch da aber der Nervigkeitsfaktor wäre minimiert.
Verrenn dich da jetzt bitte nicht in Sachen die du im Endeffekt eh irgendwann in die Tonne klopen wirst, da diese deine Fähigkeiten bei weitem übersteigen werden. Außerdem bin ich allen ernstes der Meinung, dass der Nutzen in keinem Verhältnis zum Aufwand steht. Wenn du das tatsächlich machen willst, dann sei gewiss, dass es sehr sehr viel Zeit in Anspruch nehmen würde. Alle anderen Lösungen wären nur Hacks zugeschnitten auf eine einzige Lösung.
Was mir auch gerade noch einfällt. Generierst du eigentlich die vollen 255 Zeichen als Polygonfonts? Wenn ja solltest du das schon mal auf die einschränken die du wirklich brauchst. Damit kannst du auch mal eben so knapp 50% an Zeit einsparen.
ich möchte da jetzt nicht nen halbes Jahr mit den Fonts verbringen .
Also beschränke ich mich auf die Zeichen , die ich wirklich brauche , mit einer Auflösung die noch erträglich ist und gebe eventuell am Programmstart ne Info aus , damit der User bescheid weiss , das es dann gleich weiter geht .
Schließen wir dieses Thema , mit geht nicht so einfach ,ab .
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wenn du uns etwas mehr über den Aufbau deiner Applikation erzählst finden wir vielleicht noch was. Den Vorschlag von Lossy mittels ShareLists die Fonts zu teilen ist gar keine Schlechte Idee. Kann natürlich sein, dass dein Programm gänzlich anders strukturiert ist.
Wieviele verschiedene Schriften erstellst du? Wie lange dauert bei dir der Start?
Ich habe ein Spiel geschrieben bei dem ich am Anfang des Spiels alle Texturen geladen habe. Folge waren Startzeiten von ca. 20Sek. Ich hab die wegbekommen indem ich einen selber geschriebenen Manager verwende. Das kannst du auch machen. Also die Fonts erst dann laden wenn du sie brauchst, und in einer Liste mitloggen welche du unter welchem Namen schon geladen hast. Meistens wirst du eh nicht alle Schriften benötigen (schätz ich)
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Mitglieder in diesem Forum: 0 Mitglieder und 11 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.