Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

windowsschriften (ttf) im opengl-fenster

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
atari
gesperrt


Anmeldungsdatum: 26.08.2007
Beiträge: 144

BeitragVerfasst am: 26.08.2007, 12:02    Titel: windowsschriften (ttf) im opengl-fenster Antworten mit Zitat

hallo, mit diesem programm aus dem engl. forum kann man windows-ttf-schriften im opengl-fenster darstellen. ohne die komplizierten bmp-textmuster, die immer wieder durch bestimmte programme angefertigt werden mussten. läuft mit freebasic 0.18...

Code:

#include "GL/gl.bi"
   #include "GL/glu.bi"
   #include "windows.bi"

   DECLARE SUB InitGL()
   DECLARE SUB Build_Font( Groesse AS SINGLE, Dicke AS SINGLE )
   DECLARE SUB glPrint( text AS STRING, TextX AS SINGLE, TextY AS SINGLE, ColorR AS SINGLE, ColorG AS SINGLE, ColorB AS SINGLE )

   DIM SHARED AS UINTEGER Fbase,w
   DIM SHARED AS HFONT font   
   DIM SHARED AS HFONT  oldfont     
   DIM SHARED AS HDC hDC 
   DIM SHARED AS HWND hWnd
   hDC = GetDC( hWnd )
   
   SCREEN 18,16,,2
   
   InitGL()
   Build_Font( 20 , 10 )

   DO
      glClear(GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT)
      glLoadIdentity()                     
      glTranslatef(0.0,0.0,-3.0)         
      glPrint(str(100),-1.2,0,1,0,0)
      glPrint("es geht !",-1.2,-0.1,0,1,0) 
      FLIP
   LOOP UNTIL MULTIKEY( &h1 ) OR INKEY$ = CHR$(255)+"k"   
   
   SUB glPrint( Text AS STRING, TextX AS SINGLE, TextY AS SINGLE, ColorR AS SINGLE, ColorG AS SINGLE, ColorB AS SINGLE )
      glColor3f(ColorR,ColorG,ColorB)
      glRasterPos2f(TextX, TextY)
      glPushAttrib(GL_LIST_BIT)
      glListBase( Fbase-32 )
      glCallLists( LEN(text), GL_BYTE , STRPTR(text) )
      glPopAttrib()
      glColor3f(1.0,1.0,1.0)
   END SUB
   
   
   SUB InitGL()
      glViewport 0, 0, 640, 480
      glMatrixMode GL_PROJECTION
      gluPerspective 45, 640 / 480, 0.1, 100
      glMatrixMode GL_MODELVIEW
      glLoadIdentity

      glShadeModel GL_SMOOTH
      glClearColor 0.0, 0.0, 0.0, 1.0
      glClearDepth 1.0
      glEnable GL_DEPTH_TEST
      glDepthFunc GL_LEQUAL
      glHint GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST
   END SUB
   
   
   SUB Build_Font( Groesse AS SINGLE, Dicke AS SINGLE )
      Fbase = glGenLists(96)                       

      font = CreateFont(-Groesse,_                   'Größe
                     0,_                       
                     0,_                       
                     0,_                       
                     Dicke,_                         'Dicke Wert zwischen 0 und 1000
                     false,_                         'Kursiv                 
                     FALSE,_                         'Unterstrichen
                     FALSE,_                         'Durchgestrichen
                     ANSI_CHARSET,_               
                     OUT_TT_PRECIS,_               
                     CLIP_DEFAULT_PRECIS,_         
                     ANTIALIASED_QUALITY,_          'Ausgabequalität         
                     FF_DONTCARE OR DEFAULT_PITCH,_     
                     "Times New Roman")                         
 
      oldfont = SelectObject(hDC, font)       
      wglUseFontBitmaps(hDC, 32, 96, Fbase)               
      SelectObject(hDC, oldfont)                           
      DeleteObject(font)
   END SUB   
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz