'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