'http://nehe.gamedev.net/tutorial/bitmap_fonts/17002/ nomainwin struct PFD, Size as word, Version as word, Flags as long,_ PixelType as char[1], ColorBits as char[1], RedBits as char[1],_ RedShift as char[1], GreenBits as char[1], GreenShift as char[1],_ BlueBits as char[1], BlueShift as char[1], AlphaBits as char[1],_ AlphaShift as char[1],AccumBits as char[1], AccumRedBits as char[1],_ AccumGreenBits as char[1], AccumBlueBits as char[1], AccumAlphaBits as char[1],_ DepthBits as char[1], StencilBits as char[1], AuxBuffers as char[1],_ LayerType as char[1], Reserved as char[1], LayerMask as long,_ VisibleMask as long, DamageMask as long PFD.Version.struct=1:PFD.ColorBits.struct=24 PFD.DepthBits.struct=16:PFD.Size.struct=len(PFD.struct) PFD.Flags.struct=37:GlColorBufferBit=16384 open "opengl32.dll" for dll as #gl open "glu32.dll" for dll as #glu open "oleaut32.dll" for dll as #oleaut32 WindowWidth=500:WindowHeight=500 UpperLeftX=1:UpperLeftY=1 open "Triangle" for window_nf as #main print #main,"trapclose [quit]" MainH=hwnd(#main) calldll #user32,"GetDC", MainH as ulong, MainDC as ulong calldll #gdi32,"ChoosePixelFormat", MainDC as ulong, PFD as struct, ret as long calldll #gdi32, "SetPixelFormat", MainDC as ulong, ret as long, PFD as struct, t as long calldll #gl,"wglCreateContext", MainDC as ulong, GLContext as ulong calldll #gl,"wglMakeCurrent", MainDC as ulong, GLContext as ulong, ret as long calldll #gl,"glClear", GlColorBufferBit as long, ret as long 'calldll #gl,"glRotated", 0 as double, 0 as double, 0 as double, 0 as double, ret as long calldll #gl,"glBegin", 4 as long, ret as long calldll #gl,"glColor3d", 0 as double, 0 as double, 255 as double, ret as long calldll #gl,"glVertex3i", -1 as long, -1 as long, 0 as long, ret as long calldll #gl,"glColor3d", 255 as double, 0 as double, 0 as double, ret as long calldll #gl,"glVertex3i", 0 as long, 1 as long, 0 as long, ret as long calldll #gl,"glColor3d", 0 as double, 255 as double, 0 as double, ret as long calldll #gl,"glVertex3i", 1 as long, -1 as long, 0 as long, ret as long calldll #gl,"glEnd", ret as void base=glGenLists(96) fontH=CreateFont(-22,"Times New Roman") calldll #gdi32,"SelectObject",_ MainDC as ulong,_ 'handle of dc fontH as ulong,_ 'handle of brush oldfont as ulong calldll #gl,"wglUseFontBitmapsA",_ MainDC as ulong,_ 32 as ulong,_ 96 as ulong,_ base as ulong,_ ret as long calldll #gdi32,"DeleteObject",fontH as ulong,r as ulong calldll #gl,"glColor3d", 0 as double, 0 as double, 0 as double, ret as long x=R4(-.35) y=R4(-.25) calldll #gl,"glRasterPos2f",_ x as ulong,_ y as ulong,_ ret as long GL.LIST.BIT = 131072 calldll #gl,"glPushAttrib",_ GL.LIST.BIT as long,_ ret as long gllistbase=base - 32 calldll #gl,"glListBase",_ gllistbase as long,_ ret as long text$="My spaces are missing :(" length=len(text$) GL.UNSIGNED.BYTE = 5121 calldll #gl,"glCallLists",_ length as long,_ GL.UNSIGNED.BYTE as long,_ text$ as ptr,_ ret as long calldll #gl,"glPopAttrib", ret as long calldll #gdi32,"SwapBuffers", MainDC as ulong, ret as long wait [quit] calldll #gl,"wglMakeCurrent", 0 as ulong, 0 as ulong, ret as long calldll #gl,"wglDeleteContext", GLContext as ulong, ret as long calldll #user32, "ReleaseDC", MainH as ulong, MainDC as ulong,ret as long close #main close #glu close #gl close #oleaut32 end function glGenLists(num) CALLDLL #gl , "glGenLists" ,_ num AS long ,_ glGenLists AS void END function function CreateFont(fontheight,facename$) calldll #gdi32, "CreateFontA",_ fontheight as long, fontwidth as long,_ escapement as long, orientation as long,_ _FW_NORMAL as long, italic as long,_ underline as long, strikeout as long,_ CharSet as long, OutputPrecision as long,_ ClipPrecision as long, Quality as long,_ PitchAndFamily as long,facename$ as PTR,_ CreateFont as ulong 'returns handle to font end function FUNCTION R4( R8 ) STRUCT local1 ,_ R4 AS ULong CALLDLL #oleaut32 , "VarR4FromR8" ,_ R8 AS Double ,_ local1 AS STRUCT ,_ ret AS Long R4 = local1.R4.struct END FUNCTION
|
nomainwin struct PFD, Size as word, Version as word, Flags as long,_ PixelType as char[1], ColorBits as char[1], RedBits as char[1],_ RedShift as char[1], GreenBits as char[1], GreenShift as char[1],_ BlueBits as char[1], BlueShift as char[1], AlphaBits as char[1],_ AlphaShift as char[1],AccumBits as char[1], AccumRedBits as char[1],_ AccumGreenBits as char[1], AccumBlueBits as char[1], AccumAlphaBits as char[1],_ DepthBits as char[1], StencilBits as char[1], AuxBuffers as char[1],_ LayerType as char[1], Reserved as char[1], LayerMask as long,_ VisibleMask as long, DamageMask as long PFD.Version.struct=1:PFD.ColorBits.struct=24 PFD.DepthBits.struct=16:PFD.Size.struct=len(PFD.struct) PFD.Flags.struct=37:GlColorBufferBit=16384 open "opengl32.dll" for dll as #gl open "glu32.dll" for dll as #glu open "oleaut32.dll" for dll as #oleaut32 WindowWidth=500:WindowHeight=500 UpperLeftX=1:UpperLeftY=1 open "Triangle" for window_nf as #main print #main,"trapclose [quit]" MainH=hwnd(#main) calldll #user32,"GetDC", MainH as ulong, MainDC as ulong calldll #gdi32,"ChoosePixelFormat", MainDC as ulong, PFD as struct, ret as long calldll #gdi32, "SetPixelFormat", MainDC as ulong, ret as long, PFD as struct, t as long calldll #gl,"wglCreateContext", MainDC as ulong, GLContext as ulong calldll #gl,"wglMakeCurrent", MainDC as ulong, GLContext as ulong, ret as long calldll #gl,"glClear", GlColorBufferBit as long, ret as long 'calldll #gl,"glRotated", 0 as double, 0 as double, 0 as double, 0 as double, ret as long calldll #gl,"glBegin", 4 as long, ret as long calldll #gl,"glColor3d", 0 as double, 0 as double, 255 as double, ret as long calldll #gl,"glVertex3i", -1 as long, -1 as long, 0 as long, ret as long calldll #gl,"glColor3d", 255 as double, 0 as double, 0 as double, ret as long calldll #gl,"glVertex3i", 0 as long, 1 as long, 0 as long, ret as long calldll #gl,"glColor3d", 0 as double, 255 as double, 0 as double, ret as long calldll #gl,"glVertex3i", 1 as long, -1 as long, 0 as long, ret as long calldll #gl,"glEnd", ret as void base=glGenLists(255) fontH=CreateFont(-22,"Times New Roman") calldll #gdi32,"SelectObject",_ MainDC as ulong,_ 'handle of dc fontH as ulong,_ 'handle of brush oldfont as ulong calldll #gl,"wglUseFontBitmapsA",_ MainDC as ulong,_ 0 as ulong,_ 255 as ulong,_ base as ulong,_ ret as long calldll #gdi32,"DeleteObject",fontH as ulong,r as ulong calldll #gl,"glColor3d", 0 as double, 0 as double, 0 as double, ret as long x=R4(-.50) y=R4(-.25) calldll #gl,"glRasterPos2f",_ x as ulong,_ y as ulong,_ ret as long GL.LIST.BIT = 131072 calldll #gl,"glPushAttrib",_ GL.LIST.BIT as long,_ ret as long calldll #gl,"glListBase",_ base as long,_ ret as long text$="My spaces are not missing :)" length=len(text$) GL.UNSIGNED.BYTE = 5121 calldll #gl,"glCallLists",_ length as long,_ GL.UNSIGNED.BYTE as long,_ text$ as ptr,_ ret as long calldll #gl,"glPopAttrib", ret as long calldll #gdi32,"SwapBuffers", MainDC as ulong, ret as long wait [quit] calldll #gl,"wglMakeCurrent", 0 as ulong, 0 as ulong, ret as long calldll #gl,"wglDeleteContext", GLContext as ulong, ret as long calldll #user32, "ReleaseDC", MainH as ulong, MainDC as ulong,ret as long close #main close #glu close #gl close #oleaut32 end function glGenLists(num) CALLDLL #gl , "glGenLists" ,_ num AS long ,_ glGenLists AS void END function function CreateFont(fontheight,facename$) calldll #gdi32, "CreateFontA",_ fontheight as long, fontwidth as long,_ escapement as long, orientation as long,_ _FW_NORMAL as long, italic as long,_ underline as long, strikeout as long,_ CharSet as long, OutputPrecision as long,_ ClipPrecision as long, Quality as long,_ PitchAndFamily as long,facename$ as PTR,_ CreateFont as ulong 'returns handle to font end function FUNCTION R4( R8 ) STRUCT local1 ,_ R4 AS ULong CALLDLL #oleaut32 , "VarR4FromR8" ,_ R8 AS Double ,_ local1 AS STRUCT ,_ ret AS Long R4 = local1.R4.struct END FUNCTION