Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi OpenGL Text | in Form einbauen (https://www.delphipraxis.net/10031-opengl-text-%7C-form-einbauen.html)

HentaiD 10. Okt 2003 05:33


OpenGL Text | in Form einbauen
 
Hi!
Also angenommen ich würde auch nur einen Hauch von OpenGL kapieren und hätte jetzt also das was ich brauche-wie kann ich das in eine Form einbauen?Weil ich möchte nicht mein bestehendes programm,dass ich extra dafür gebaut habe nochmal in OpenGL bauen,was auch noch andere Probleme mit sich ziehen würde.

Das wäre das eine.Dann habe ich noch das problem mit dem Text.Habe gelesen,dass man den Text tatsächlich,selber zeichnen muss,also das wäre ja ne Riesenmühe und Code.Und ne ordentliche ANimation,wie ich mir das vorstelle-furchtbar.Gibt es da nicht evtl. eine andere Möglichkeit?Ich habe zB die Möglichkeit eine 3D ANimation zu machen,oder einfach etwas in 3D und dann als 3ds speichern.Mein Vater hatte so einen 3ds loader als Programm,das würde mirne riesenarbeit ersparen.Allerdings sollte es am Ende auch nicht riesengroß sein,das programm is schon 300kb gepackt und mit BMPs.Achja,der Modelloader is eineJava Anwendung,also wenns sowas für delphi geben würde,wäre fett ;)

Hoffe ihr könnt mich etwas aufklären

Greetz,D
PS:Wenn hier viele Rechtschreibfehler sind,dann liegts daran,dass das Forum immer etwas braucht damit mein text erscheint :(

Daniel B 10. Okt 2003 12:37

Re: OpenGL Text | in Form einbauen
 
Zitat:

Zitat von HentaiD
PS:Wenn hier viele Rechtschreibfehler sind,dann liegts daran,dass das Forum immer etwas braucht damit mein text erscheint :(

Ist das auch der Grund warum DU nicht in der Lage bist, nach Satz-/Sonderzeichen eine Leerstelle zu machen? Das ist ja fürchterlich zum lesen...

MyRealName 19. Okt 2003 21:12

Re: OpenGL Text | in Form einbauen
 
OpenGL kann wohl keinen Text darstellen, soweit ich weiß. Aber Du kannst Dir für jeden Buchstaben ein Quad erstellen und es mit einer Textur belegen, die den Buchstaben zeigt. Nur schreib dann keine Romane :)

phlux 19. Okt 2003 21:42

Re: OpenGL Text | in Form einbauen
 
Du kannst Buchstaben rendern und so 2dFonts vorrendern und dann auf den Screen projizieren. Such mal bei google nach Bei Google suchenNeHe da findest du nen Bsp.

CalganX 19. Okt 2003 22:20

Re: OpenGL Text | in Form einbauen
 
Hi phlux,
du meinst vermutlich http://nehe.gamedev.net/ . Allerdings sind dort alle Beispiele und Tutorials in C++! Außnahme sind die Beispiele für Delphi. Allerdings geht man da auch von aus, dass du C++ kannst.

Chris

MyRealName 19. Okt 2003 23:19

Re: OpenGL Text | in Form einbauen
 
Es gibt auch die DirectX-Bsp für Delphi übersetzt (Jedi ?). Da benutzt man ne Klasse T3DFont (oder so ähnlich). Die könntest Du als Basis nutzen. Mußt halt mit OpenGL rendern stattdessen ...

Mr_T 20. Okt 2003 12:48

Re: OpenGL Text | in Form einbauen
 
Man kann mit OpenGL auch 3d Fonts erzeugen ... dafür benötigt man eine Displayliste (eine Variable vom Typ tglint wenn man OpenGl 1.2 oder 1.5 verwendet bzw. bei der Standart Delphi-Unit eine Variable vom Typ gluint) .. diese habe ich mal "base" genannt (die Variable)... denn muss man den Font erzeugen:

Delphi-Quellcode:
procedure BuildFont;                         // Build Our Bitmap Font
var font: HFONT;                                  // Windows Font ID
    gmf : array [0..255] of GLYPHMETRICSFLOAT;      // Address Buffer For Font Storage
begin
  base := glGenLists(256);                         // Storage For 96 Characters
  font := CreateFont(12,                   // Height Of Font
           0,                      // Width Of Font
           0,                      // Angle Of Escapement
           0,                      // Orientation Angle
           0,                      // Font Weight
           0,                           // Italic
           0,                           // Underline
           0,                           // Strikeout
           ANSI_CHARSET,              // Character Set Identifier
           OUT_TT_PRECIS,                   // Output Precision
           CLIP_DEFAULT_PRECIS,           // Clipping Precision
           ANTIALIASED_QUALITY,             // Output Quality
           FF_DONTCARE or DEFAULT_PITCH,       // Family And Pitch
           'Arial Black');                // Font Name

  SelectObject(form1.myDC, font);                        // Selects The Font We Want

  wglUseFontOutlines(   form1.myDC,            // Select The Current DC
                        0,            // Starting Character
                        255,            // Number Of Display Lists To Build
                        base,            // Starting Display Lists
                        0.0,            // Deviation From The True Outlines
                        0.2,            // Font Thickness In The Z Direction
                        WGL_FONT_POLYGONS,      // Use Polygons, Not Lines
                        @gmf);            // Address Of Buffer To Recieve Data

end;
So, diesen Code hier führt man am Anfang der Anwendung aus (am ende von Form1.oncreate aufrufen) ... Nun kann man mitdieser Prozedur Text auf den Screen bringen:

Delphi-Quellcode:
procedure glPrint(text : pchar);                   // Custom GL "Print" Routine
begin
  if (text = '') then                   // If There's No Text
          Exit;                       // Do Nothing

  glPushAttrib(GL_LIST_BIT);            // Pushes The Display List Bits
  glListBase(base);               // Sets The Base Character
  glCallLists(length(text), GL_UNSIGNED_BYTE, text);   // Draws The Display List Text
  glPopAttrib();                              // Pops The Display List Bits
end;
Sieht zwar alles sehr schwierig aus, hoffe aber, ich konnte dir helfen (Ist kein einfaches Thema)

MyRealName 28. Okt 2003 21:46

Re: OpenGL Text | in Form einbauen
 
Dummerweise sind die wgl-Funktionen sehr langsam. Bevor die soweit sind, daß sie anfangen, den Font zu malen, hast Du das ganze schon mit Quads ausgegeben ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz