' FreeBASIC + OpenGL + glbitmap() font sample. ' ' Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit ' by mieki256, License: CC0 / Public Domain ' Last updated: <2024/02/25 03:54:45 +0900> #include once "fbgfx.bi" Using FB #include once "GL/gl.bi" #include once "GL/glu.bi" #include "glbitmapfont.bi" ChDir ExePath() Const SCRW = 480 Const SCRH = 270 ScreenRes SCRW, SCRH, 32, ,GFX_OPENGL ' get window size Dim shared As Integer scr_w, scr_h, sdepth ScreenInfo scr_w, scr_h, sdepth ' OpenGL Config glViewport 0, 0, scr_w, scr_h glMatrixMode(GL_PROJECTION) glLoadIdentity() glOrtho(0, scr_w, scr_h, 0, 5.0, -5.0) ' gluPerspective 45.0, w/h, 0.1, 100.0 glMatrixMode(GL_MODELVIEW) glLoadIdentity() glClearColor(0, 0, 0, 1) glShadeModel(GL_SMOOTH) glDisable(GL_DEPTH_TEST) ' glDepthFunc(GL_LEQUAL) glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST) Dim As Boolean running = True Dim fontlist(GLBITMAPFONT_MAX - 1) As Integer => { _ GLBITMAPFONT_COURR18, _ GLBITMAPFONT_PET2015, _ GLBITMAPFONT_PROFONT, _ GLBITMAPFONT_SHNM8X16R, _ GLBITMAPFONT_SHNM8X16RX2, _ GLBITMAPFONT_TER_U24B _ } Dim As Integer fontkind = 0 Dim As Integer fontmax = UBound(fontlist) + 1 ' main loop While running ' ESC or Q key to exit Dim As String k = inkey$ If k = Chr$(27) Or k = "q" Or k = Chr$(255) + "k" Then running = False ElseIf k = Chr$(255) + "H" Then ' up key fontkind = (fontkind + 1) Mod fontmax ElseIf k = Chr$(255) + "P" Then ' down key fontkind = (fontkind + fontmax - 1) Mod fontmax End If ' clear screen glClear(GL_COLOR_BUFFER_BIT) ' draw text glColor4f(1, 1, 1, 1) ' set color glRasterPos2f(32, 64) ' set position glDrawBitmapText("Hello World", fontlist(fontkind)) flip ' double buffer flip sleep 10 Wend