atari gesperrt
 
  Anmeldungsdatum: 26.08.2007 Beiträge: 144
 
  | 
		
			
				 Verfasst am: 26.08.2007, 11:02    Titel: windowsschriften (ttf) im opengl-fenster | 
				     | 
			 
			
				
  | 
			 
			
				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    
 
 | 	 
  | 
			 
		  |