Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 05, 2025 19:54

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Schrift in die Grafik einbauen
BeitragVerfasst: Mi Sep 17, 2008 14:36 
Offline
DGL Member

Registriert: Do Sep 11, 2008 17:54
Beiträge: 41
Hi, ich bin es schon wieder... Sry, aber ich hab da mal ne Frage zu eingebauten Schriftzügen.
Mein Plan ist es, in einer rotierenden durchsichtigen Kugel, ein Schriftzug stehen zu habe.
Klappt auch alles soweit ganz gut, nur das die Schrift halt vor der Grafik und nicht "in" der Grafik ist. :shock:
Ich hoffe ich kann das so in etwa stehen lassen...
Tja, wie bekomme ich die Schrift jetzt also in die Kugel?

Hier mal noch ein Auszug meines Quelltextes wo ich die Schrift erscheinen lasse:

Code:
  1.    glListBase(FontLists);
  2.    glCallLists(Length(pText), GL_UNSIGNED_BYTE, Pointer(pText));


Erst danach baue ich den Rest auf.

mfg Cre@or


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 17, 2008 14:59 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
HI,

was meinst du mit vor der Grafik? Vor der Kugel?
Wenn du die Schrift auf die Kugel rendern willst, dann render die Schrift vorher in ne Textur und pap die dann auf die Kugel rauf...
Oder hab ich dich jetzt falsch verstanden?!

MfG Bergmann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 17, 2008 15:39 
Offline
DGL Member

Registriert: Do Sep 11, 2008 17:54
Beiträge: 41
Nee, hast mich da missverstanden.
Also, mit Grafik meinte ich eigentlich das ganze andere Zeugs... z.B. die angesprochene Kugel, keine Bilder.
Sry, da hab ich wohl so ein paar Begriffe durch die Luft gewirbelt.
Nein, die Schrift, die ich mir Anzeigen lassen will, soll in der Kugel sein, derzeit ist sie aber vor der Kugel.
Und meine Frage ist, wie ich die Schrift in die Kugel bekomme.
Auf der Z-Achse scheine ich die Schrift scheinbar jedenfalls nicht verschieben zu können.
Meine Einstellung dafür ist: glTranslatef(-0.2, -0.5, -8);
Das selbe gilt für die Kugel.
Ich hatte das ganze auch schon mit GL_POLYGON probiert. Da ging das ganze ja, aber mein Zeichen das ich mir da zusammengeschraubt hatte sah, naja... ziehmlich schlecht aus *hust. :mrgreen:
Oder hat jemand ein GL_POLYGON-Fragezeichen fertig vorliegen?
Würdet mir da verdammt weiterhelfen!
Ansonsten muss ich ma schauen wie ich weiterkomme...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 17, 2008 16:32 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also für Polygonschriften gibt es die Funktion wglUseFontOutlines. In dem Wikiartikel gibt es auch ein passendes Beispiel. Die Schrift sollte meines Wissens nach auch eine Höhe von 1 haben. Das ist wichtig um sie passend zu positionieren und in der Größe anpassen zu können.

Zu dem Zeichnen mit Transparenzen ist noch anzumerken, dass OpenGL sehr viel Wert auf die Reihenfolge legt. Bei normalen Objekten ist es mitunter ideal von vorne nach hinten zu zeichnen. Da durch den Tiefentest verdeckte Fragmente (Pixel eines Objektes) schneller verworfen werden können. Bei Transparenten Objekten ist es aber so, dass diese mit dem bereits gezeichneten Hintergrund verrechnet werden MÜSSEN. Also alles hinter einem transparenten Objekt ist muss vorher gezeichnet werden.

Ja ich weiß. Du fragst dich jetzt. Was nun? Dein Objekt ist ja mittendrinn. In deinem Falle sogar noch einfach. Dort wo sich deine Schrift befindet wird ja der Hintergrund verdeckt. Also ist der sowieso nicht sichtbar. Entsprechend musst du zu erst deine Schrift zeichnen und anschließend deine transparente Kugel.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 18, 2008 09:08 
Offline
DGL Member

Registriert: Do Sep 11, 2008 17:54
Beiträge: 41
Yo, hat funktioniert! THX! :D

Edit: Jetzt funktioniert das zwar genau so wie ich das haben will, aber wieso verschieben sich dann die Koordinaten der anderen Objekte?
Die musste ich dann wieder neu ausrichten...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 18, 2008 09:53 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
OpenGL ist eine StateMaschine. Also wenn du zum Beispiel etwas anmachst, dann bleibt es so lange aktiviert bis es wieder expliziet ausgemacht wird. Genau so verhält sich das mit den Weltkoordinaten. Irgendjemand verschiebt sie und alles nachfolgende wird dadurch beeinflusst.

Bei der Textausgabe gibt man normal nicht nur ein Zeichen sondern ganze Wörter oder Sätze aus. Und wenn du einen Buchstaben ausgegeben hast, dann wäre es schön, wenn du direkt im Anschluss einen zweiten Buchstaben ausgeben könntest und der passend positioniert wird. Dadurch muss die Ausgabe der Buchstaben die Weltkoordinaten verändern. Sonst würden alle Buchstaben an der selben Position landen. Das wäre nicht so praktisch.

Du müsstest jetzt nach dem Zeichnen deine Matrix wieder zurücksetzen. Entweder kannst du glLoadIdentity machen oder aber du benutzt so etwas wie glPushMatrix und glPopMatrix. Durch glPushMatrix wird die aktuelle Matrix (Weltkoordinaten, Skalierung, Rotation) auf einem Stack gespeichert und durch glPopMatrix wird die letzte Matrix wieder hergestellt. Also kannst du damit einen Zustand sichern und diesen wieder herstellen.

Code:
  1. glPushMatrix
  2. // Text/Zeichen ausgeben
  3. glPopMatrix
  4.  
  5. // Kugel zeichnen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 18, 2008 10:36 
Offline
DGL Member

Registriert: Do Sep 11, 2008 17:54
Beiträge: 41
Ach so, jetzt kapier ich es!

Edit: Zumindest hoffe ich das... lol...

Re Edit: Ja, habs ausprobiert... ich habs kapiert! :idea: [Jubel, breites Grins*, Laptop umarm]... :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 9 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.011s | 16 Queries | GZIP : On ]