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

Aktuelle Zeit: So Jul 06, 2025 19:32

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 30 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: TTF Textausgabe für Java (JOGL)
BeitragVerfasst: Mo Mai 15, 2006 14:10 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Gibt es für Java Libs die (ähnlich SDL_ttf) es erlauben Texture-Fonts darzustellen?

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 15, 2006 14:36 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Es gibt für SDL Javaheader, sodass du SDL_TTF verwenden könntest.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 15, 2006 23:01 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Naja... aber die ist doch bestimmt nicht einzeln zu haben. Da benötigt man doch sicher auch die anderen SDL libs oder?

Eigentlich ist es mir egal wie ich Texturefonts zustande bekomme. Hauptsache die Zahl der benötigten libs hält sich in Grenzen.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 16, 2006 17:39 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hab gerade nochmal recherchiert. Es gibt anscheinend keine fertige Javaklasse die benutzt werden kann um unter JOGL text auszugeben.

Ich hatte beim PBall-Manager immer Probleme mit dem Text. Der sah nie besonders gut aus.

Habt ihr zufällig eine Klasse rumliegen welche anhand von TTF Files text unter JOGL rendern kann?
Theoretisch ist alles da um sowas zu implementieren. Ich hab nur keine Ahnung wie ich die Daten von Java aus in ne OpenGL Textur bekomme. Aber wie gesagt, vielleicht hat ja einer von Euch sowas schonmal geschrieben.

Die Klassen die man dazu benötigt sind glaub ich

Graphics2d
Font
FontMetrics
FontRenderContext


Mars hatte ja schonmal soetwas geschrieben. Nur wie bereits geschrieben gabs irgendwie immer Probleme mit der Darstellung der Fonts. (Siehe PBall Manager2) Eventuell lag es an Rundungsfehlern bei den Texturcoordinaten. Keine Ahnung.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 16, 2006 18:38 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Zufällig ja :lol:
http://svn.delphigl.com/websvn/filedetails.php?repname=dglsdk_linux&path=%2Ftrunk%2Fheader%2FeasySDLFont.pas&rev=0&sc=0


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 17, 2006 20:42 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo Flash,

ich habe es leider selbst noch nicht ausprobiert, aber hier eine theoretische Vorgehensweise :

1. a) Einlesen einer Textur mit ImageIO.read
(new File("DATEINAME_DER_TEXTUR")) (auf die du den Font schreiben willst). Als Rückgabe bekommst du ein BufferedImage-Objekt
oder
b) Erzeugen eines leeren BufferedImage-Objektes mit einer selbst definierten Höhe, Breite und einem Pixelformat

2. Holen des Graphics2D-Kontextes des BufferedImage-Objektes über die Methode getGraphics()

3. Erzeugung eines neues Font-Objektes :
Code:
  1. try {
  2.     InputStream is = new FileInputStream("PFADNAME_DES_FONT");
  3.     font = Font.createFont(Font.TRUETYPE_FONT, is);
  4.     is.close();
  5. } catch (FileNotFoundException e) {
  6.    ...
  7. } catch (FontFormatException e) {
  8.    ...
  9. } catch (IOException e) {
  10.    ...
  11. }


4. Setzen des Fonts im Graphics2D-Objekt mit setFont()

4. b)
Kleiner Tip : Im Graphics2D-Objekt kannst du noch verschiedenen "Hints" setzen, die das Rendern deines Fonts verbessern :
Code:
  1. setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  2. setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
  3. setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);


5. Schreiben des Textes in das Graphics2D-Objekt (und damit auch in das BufferedImage) mit drawString()

6. Erzeugung einer Textur über TextureIO.newTexture (die Variante mit dem BufferedImage-Parameter)


Ich weis leider nicht ob es wirklich funktioniert, aber Ausprobieren kannst du es ja mal ;)

Viele Grüße
dj3hut1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 18, 2006 17:11 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
@IONIS: Unter JOGL? ;)

@dj3hut1: So oder so ähnlich hatte ichs mir vorgestellt. :)
Man muss dann nur noch die größe jedes Geschrieben Buchstaben abfragen und zwischen speichern (wie bei Mars's Lösung) um die Abstände zwischen den Buchstaben zu behalten.

ICh denk ich werd so ne lib schreiben, und die dann offen zur Verfügung stellen. Mal sehn... sollte eigentlich recht schnell zu machen sein. *hoff*

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 22, 2006 22:16 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich bin sehr gut vorangekommen. Momentan besteht das JOGL_TTF_Loader Packet aus 5 Klassen:

- TTF_Font : Das ist das Ding was wir am Ende für die Ausgabe brauchen

- IF_TTF_Loader: Das interface welches alle TTF_Loader implementieren. Momentan gibts nur einen.

- TTF_Loader: Diese Klasse kann *.ttf-Files Laden und daraus ein TTF_Font bauen.

- TTF_Loader_Factory: Diese Klassen wird benutzt um einen TTF_Loader zu erzeugen.

- TTF_Loader_Tester: Eine kleine Beispielanwendung welche die Funktionen testet.

Und natürlich alles Dokumentiert mit JavaDoc Komentaren. Werd ein entsprechendes JavaDoc generieren wenns fertig ist.

---------------------------------------------------------------

Soweit so gut. Ich habe momentan aber ein Problem. Und zwar erstelle ich im Construktor des TTF_Loader_Tester alle Klassen. Unter anderen auch den TTF_Font den ich zum testen benutzen will. Dieser wird ja durch einen TTF_Loader erstellt. Das problem ist nun aber, dass ich eine GLException bekomme, weil der TTF_Loader die Methode
Code:
  1. TextureIO.newTexture(canvas, false); //canvas ist ein BufferdImage

aufruft.

In der TextureIO JavaDoc steht zu dieser Funktion expliziet, dass keine OpenGL Sachen geamcht werden ("[...] Does no OpenGL work. [...]")

Hier mal der StackTrace:
Code:
  1. javax.media.opengl.GLException: No OpenGL context current on this thread
  2.     at javax.media.opengl.glu.GLU.getCurrentGL(GLU.java:234)
  3.     at com.sun.opengl.util.texture.Texture.<init>(Texture.java:85)
  4.     at com.sun.opengl.util.texture.TextureIO.newTexture(TextureIO.java:423)
  5.     at com.sun.opengl.util.texture.TextureIO.newTexture(TextureIO.java:517)
  6.     at TTF_Loader.loadFont(TTF_Loader.java:89)
  7.     at TTF_Loader_Tester.<init>(TTF_Loader_Tester.java:66)
  8.     at TTF_Loader_Tester.main(TTF_Loader_Tester.java:218)
  9.  


Wie krieg ich das gerade gebogen?

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 23, 2006 00:23 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Eventuell könnte der "TextureUpdateStateManager" mir weiterhelfen. Allerdings habe ich keine Ahnung wie ich diese Klasse einsetzen soll und wie sich diese auf mein TextureIO auswirkt.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 23, 2006 20:09 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich häng immer noch an dem Problem. Falls also jemand eine Idee hat, dann bitte sagen.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 24, 2006 14:41 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
So... hab das Problem gelöst. Ich hab die Texturen jetzt in der init() Function geladen. Diese wird direkt nachdem der Context erstellt wurde aufgerufen. Somit klappt das erstmal.


Allerdings hab ich jetzt ein konzeptionelles Problem. (siehe hier)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 12, 2006 09:49 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
So... Ich seh meine Fonts, und eigentlich könnte alles toll sein.
ABER
leider sind die Buchstaben nicht korrekt horizontal ausgerichtet. Ich hab keine Idee wie ich die richten soll. Die Bounds die man von den Buchstaben abfragen kann, enthalten ja nur sinnvolle Werte für höhe und breite. x, y sind irgendwie unlogisch. ("h" hätte einen kleineren y Wert als "g", obwohl doch "g" tiefer unten beginnt.)

Um mein Problem mal zu verdeutlichen hab ich ein Bildchen angefügt.

Wenn mir jemand helfen kann, wär das toll.

Achja... falls jemand wissen will wie ich die Bounds bisher geholt habe:

Code:
  1. layout = new TextLayout(""+(char)i, font, fontRC);
  2. layout.getBounds();


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 12, 2006 10:57 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo Flash,

schau dir mal die Methode createGlyphVector des Font-Objektes an.

Über das GlyphVector-Objekt müsstest du eigentlich alle benötigten Informationen bekommen, die du brauchst.

Viele Grüße
dj3hut1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 12, 2006 11:40 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Hier noch eine gute Resource zu dem Thema. Ist in den Java OGL Foren auch schon diverse Mal gefragt worden ;)

http://www.javagaming.org/forums/index. ... ic=11221.0

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 12, 2006 16:51 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
@dj3hut1: Werds mir mal angucken. Danke für den Tip.

@Evil-devil: Öhm...hmmm...damit kann ich jetzt nix anfangen. Das Ziel dort war ja anscheinend den Text zu Triangulieren. Öhm... oder hab ich da was falsch verstanden.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 30 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

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.

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