' FreeBASIC + OpenGL + glbitmap() sample ' ' by mieki256 , License : CC0 / Public Domain ' Last updated: <2024/02/24 09:50:06 +0900> #include once "fbgfx.bi" Using FB #include once "GL/gl.bi" #include once "GL/glu.bi" ' include glbitmap binary data #include "image_32x32.bi" #include "image_lena.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 ' 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 End If ' draw start ' clear screen glClear(GL_COLOR_BUFFER_BIT) glPixelStorei(GL_UNPACK_ALIGNMENT, 1) Dim As GLsizei w, h Dim As GLfloat xorig, yorig, xmove, ymove ' draw arrow bitmap w = IMAGE_32X32_PNG_WIDTH h = IMAGE_32X32_PNG_HEIGHT xorig = 0.0 yorig = 0.0 xmove = 0.0 ymove = 0.0 glColor4f(1, 1, 1, 1) ' set color glRasterPos2f(32, 32 + h) ' set position glBitmap(w, h, xorig, yorig, xmove, ymove, @image_32x32_png(0)) ' draw lena bitmap w = IMAGE_LENA_PNG_WIDTH h = IMAGE_LENA_PNG_HEIGHT xorig = 0.0 yorig = 0.0 xmove = 0.0 ymove = 0.0 glColor4f(1, 1, 1, 1) ' set color glRasterPos2f(100, 32 + h) ' set position glBitmap(w, h, xorig, yorig, xmove, ymove, @image_lena_png(0)) flip ' double buffer flip sleep 10 Wend