Synchro ? Bug ? Probleme de clignotement

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Enfer, j'avais l'exemple suivant en opengl (GLFlameClassic), mais ça ne marche plus sur la version 4... Il faut faire une recherche sur display lists pour trouver des trucs intéressants. :x

Code : Tout sélectionner

;- Program Includes

XIncludeFile "OpenGL.pbi"

;- Program Constants

#Clear_Red=0.0
#Clear_Green=0.0
#Clear_Blue=0.0
#Clear_Alpha=1.0
#NearClip=-1
#FarClip=1

; Some Window's Constants that were not defined
#DM_BITSPERPEL=$40000
#DM_PELSWIDTH=$80000
#DM_PELSHEIGHT=$100000
#CDS_FULLSCREEN=4
#DISP_CHANGE_SUCCESSFUL=0
#SC_MONITORPOWER=$F170

;- Program Globals

Global hwnd.l
Global hdc.l
Global hrc.l
Global hInstance.l


Dim Keys.b(256)
Global Active.b
Global Fullscreen.b

;defaults
Active=#True
Fullscreen=#True

;- Program Procedures

Procedure ResizeScreen(Width, Height) ;returns nothing
  glViewport_(0, 0, Width, Height)
  glMatrixMode_(#GL_PROJECTION)
	glLoadIdentity_()
	glOrtho__(0, Width, Height, 0, #NearClip, #FarClip)
  glMatrixMode_(#GL_MODELVIEW)
	glLoadIdentity_()
EndProcedure

Procedure RendererInit() ;returns a nothing
  glShadeModel_(#GL_SMOOTH)
  glClearColor_(#Clear_Red, #Clear_Green, #Clear_Blue, #Clear_Alpha)
  glClearDepth__(1.0)
  glDepthFunc_(#GL_LEQUAL)
  glHint_(#GL_POINT_SMOOTH_HINT, #GL_NICEST)
  ProcedureReturn #True
EndProcedure

Procedure.b DrawScene() ;returns a bool
  SwapBuffers_(hdc)
  glClear_(#GL_COLOR_BUFFER_BIT|#GL_DEPTH_BUFFER_BIT)
EndProcedure

Procedure.b DestroyScreen() ;returns a nothing
  If Fullscreen
    ChangeDisplaySettings_(#Null,0)
    ShowCursor_(#True)
  EndIf
  If hrc
    If wglMakeCurrent_(#Null,#Null)
    Else
      MessageRequester("Error","The Release of DC and RC Failed!",#MB_OK|#MB_ICONINFORMATION)
    EndIf
    If wglDeleteContext_(hrc)
    Else
      MessageRequester("Error","The Release of the Rendering Context Failed!",#MB_OK|#MB_ICONINFORMATION)
    EndIf
    hrc=#Null
  EndIf
  If hdc And ReleaseDC_(hwnd,hdc)
  Else
    MessageRequester("Error","The Release of the Device Context Failed!",#MB_OK|#MB_ICONINFORMATION)
    hdc=#Null
  EndIf
  If hwnd And DestroyWindow_(hwnd)
  Else
    MessageRequester("Error","Could Not Release hwnd",#MB_OK|#MB_ICONINFORMATION)
    hwnd=#Null
  EndIf
  If UnregisterClass_("OpenGL",hInstance)
  Else
    MessageRequester("Error","Could Not Unregister Class!",#MB_OK|#MB_ICONINFORMATION)
    hInstance=#Null
  EndIf
EndProcedure

Procedure.l WindowCallback(phwnd.l,uMsg.l,wParam.l,lParam.l) ;returns a Long
  Select uMsg
    Case #WM_ACTIVATE
      If ~wParam>>8
        Active=#True
      Else
        Active=#False
      EndIf
      ProcedureReturn 0
    Case #WM_SYSCOMMAND
      Select wParam
        Case #SC_SCREENSAVE
          ProcedureReturn 0
        Case #SC_MONITORPOWER
          ProcedureReturn 0
      EndSelect
    Case #WM_CLOSE
      PostQuitMessage_(0)
      ProcedureReturn 0
    Case #WM_KEYDOWN
      Keys(wParam)=#True
      ProcedureReturn 0
    Case #WM_KEYUP
      Keys(wParam)=#False
      ProcedureReturn 0
    Case #WM_SIZE
      ResizeScreen(wParam&$00FF,Value>>8)
      ProcedureReturn 0
    Default
      ProcedureReturn DefWindowProc_(phwnd,uMsg,wParam,lParam)
  EndSelect
EndProcedure

Procedure.b CreateScreen(Title.s,Width.l,Height.l,Bits.l,FullscreenFlag.b) ;returns a Bool
  PixelFormat.l
  WC.WNDCLASS
  ExStyle.l
  style.l
  WindowRect.RECT
  
  WindowRect\left=0
  WindowRect\right=Width
  WindowRect\top=0
  WindowRect\bottom=Height
  
  Fullscreen=FullscreenFlag
  hInstance=GetModuleHandle_(#Null)
  
  WC\style=#CS_HREDRAW|#CS_VREDRAW|#CS_OWNDC
  WC\lpfnWndProc=@WindowCallback()
  WC\cbClsExtra=0
  WC\cbWndExtra=0
  WC\hInstance=hInstance
  WC\hIcon=LoadIcon_(#Null, #IDI_WINLOGO)
  WC\hCursor=LoadCursor_(#Null, #IDC_ARROW)
  WC\hbrBackground=#Null
  WC\lpszMenuName=#Null
  WC\lpszClassName=@"OpenGL"
  
  If RegisterClass_(WC)
  Else
    MessageRequester("Error", "Failed To Register The Window Class!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  If Fullscreen
    DMScreenSettings.DEVMODE
    DMScreenSettings\dmSize=SizeOf(DEVMODE)
    DMScreenSettings\dmPelsWidth=Width
    DMScreenSettings\dmPelsHeight=Height
    DMScreenSettings\dmBitsPerPel=Bits
    DMScreenSettings\dmFields=#DM_BITSPERPEL|#DM_PELSWIDTH|#DM_PELSHEIGHT
    If ChangeDisplaySettings_(DMScreenSettings,#CDS_FULLSCREEN)<>#DISP_CHANGE_SUCCESSFUL
      If MessageRequester("Error","The Requested Fullscreen Mode Is Not Supported By "+Chr(10)+"Your Video Card. Use Windowed Mode Instead?",#MB_YESNO|#MB_ICONEXCLAMATION)=#IDYES
        Fullscreen=#False
      Else
        MessageRequester("Error","Could Not Open Full Screen!",#MB_OK|#MB_ICONSTOP)
      EndIf
      ProcedureReturn #False
    EndIf
  EndIf
  
  If Fullscreen
    ExStyle=#WS_EX_APPWINDOW|#WS_EX_WINDOWEDGE
    style=#WS_POPUP
    ShowCursor_(#False)
  Else
    ExStyle=#WS_EX_APPWINDOW|#WS_EX_WINDOWEDGE
    style=#WS_OVERLAPPEDWINDOW
  EndIf
  
  AdjustWindowRectEx_(WindowRect,style,#False,ExStyle)
  hwnd=CreateWindowEx_(dwExStyle,"OpenGL",Title,dwStyle|WS_CLIPSIBLINGS|WS_CLIPCHILDREN,0,0,WindowRect\right-WindowRect\left,WindowRect\bottom-WindowRect\top,#Null,#Null,hInstance,#Null)
  
  If hwnd
  Else
    DestroyScreen()
    MessageRequester("Error","Cannot Create Window!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  pfd.PIXELFORMATDESCRIPTOR
  pfd\nSize=SizeOf(PIXELFORMATDESCRIPTOR)
  pfd\nVersion=1
  pfd\dwFlags=#PFD_DRAW_TO_WINDOW|#PFD_SUPPORT_OPENGL|#PFD_DOUBLEBUFFER
  pfd\iPixelType=#PFD_TYPE_RGBA
  pfd\cColorBits=Bits
  pfd\cRedBits=0
  pfd\cRedShift=0
  pfd\cGreenBits=0
  pfd\cGreenShift=0
  pfd\cBlueBits=0
  pfd\cBlueShift=0
  pfd\cAlphaBits=0
  pfd\cAlphaShift=0
  pfd\cAccumBits=0
  pfd\cAccumRedBits=0
  pfd\cAccumGreenBits=0
  pfd\cAccumBlueBits=0
  pfd\cAccumAlphaBits=0
  pfd\cDepthBits=16
  pfd\cStencilBits=0
  pfd\cAuxBuffers=0
  pfd\iLayerType=#PFD_MAIN_PLANE
  pfd\bReserved=0
  pfd\dwLayerMask=0
  pfd\dwVisibleMask=0
  pfd\dwDamageMask=0
  
  hdc=GetDC_(hwnd)
  
  If hdc
  Else
    DestroyScreen()
    MessageRequester("Error","Can't Create a GL Device Context!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  
  PixelFormat=ChoosePixelFormat_(hdc,pfd)
  
  If PixelFormat
  Else
    DestroyScreen()
    MessageRequester("Error","Cannot Find a Suitable PixelFormat!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  
  If SetPixelFormat_(hdc,PixelFormat,pfd)
  Else
    DestroyScreen()
    MessageRequester("Error","Cannot Set The PixelFormat!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  
  hrc=wglCreateContext_(hdc)
  
  If hrc
  Else
    DestroyScreen()
    MessageRequester("Error","Cannot Create a GL Rendering Context!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  
  If wglMakeCurrent_(hdc,hrc)
  Else
    DestroyScreen()
    MessageRequester("Error","Cannot Activate The GL Rendering Context!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  
  ShowWindow_(hwnd,#SW_SHOW)
  SetForegroundWindow_(hwnd)
  SetFocus_(hwnd)
  ResizeScreen(Width,Height)
  
  If RendererInit()
  Else
    DestroyScreen()
    MessageRequester("Error","Cannot Initialize OpenGL!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  
  ProcedureReturn #True
EndProcedure

Procedure ScreenEvent()
  msg.MSG
  PeekMessage_(msg,#Null,0,0,#PM_REMOVE)
  WindowCallback(hwnd,msg\message,msg\wParam,msg\lParam)
  If msg
    If msg\message=#WM_QUIT
      DestroyScreen()
      End
    EndIf
  Else
    TranslateMessage_(msg)
    DispatchMessage_(msg)
  EndIf
  ProcedureReturn msg\message
EndProcedure

Procedure StartRendering()
  glBegin_(#GL_POINTS)
EndProcedure

Procedure StopRendering()
  glEnd_()
EndProcedure

Procedure FlipAndClear()
  SwapBuffers_(hdc)
  glClear_(#GL_COLOR_BUFFER_BIT|#GL_DEPTH_BUFFER_BIT)
EndProcedure

;- Program Entry Point

;********************************
;*Name: Fire                    *
;*By: Dreglor                   *
;*last updated: 8-31-05 6:11pm  *
;********************************

y.w=0
x.w=0
screen_width.w=1024
screen_height.w=768
Dim cool.w(screen_width,screen_height)
Dim buf.w(screen_width,screen_height)
yy.w=0
xx.w=0
For y=1 To screen_height-1
  For x=1 To screen_width-1
    cool(x,y)=Random(3)
    buf(x,y)=0
  Next x
Next y
Dim color(255)
For i=0 To 84
  color(i)=Int(255/84*i)+0<<8+0<<16
  color(i+85)=255+Int(255/84*i)<<8+0<<16
  color(i+85+85)=255+255<<8+Int(255/84*i)<<16
Next i

If MessageRequester("Start FullScreen?","Would You Like To Run In Fullscreen Mode?",#MB_YESNO|#MB_ICONQUESTION)=#IDNO
  Fullscreen=#False
EndIf

If CreateScreen("PB With OpenGL!",screen_width,screen_height,32,Fullscreen)
Else
  End
EndIf

While done<>#True
  msg=ScreenEvent()
  If Active
    If Keys(#VK_ESCAPE)
      done=#True
    Else
      glBegin_(#GL_POINTS)
      For y=1 To screen_height-1
        For x=1 To screen_width-1
          If buf(x,y) > 0
            If buf(x,y) < 0
              buf(x,y)=0
            Else
              buf(x,y)=((buf(x+1,y)+buf(x-1,y)+buf(x,y+1)+buf(x,y-1))/4-cool(x,y))
            EndIf       
            buf(x,y-1)=buf(x,y)
            cool(x,y-1)=cool(x,y)
            cool(x,y)=Random(3)
            If buf(x,y) > 0
              ;Plot(x,y,color(buf(x,y)))
              muiltplier.f=1
              red.f=Red(color(buf(x,y)))/255
              green.f=Green(color(buf(x,y)))/255
              blue.f=Blue(color(buf(x,y)))/255
              glColor4f_(red,green,blue,1.0)
              glVertex2i_(x,y)
            EndIf
          EndIf
          buf(x,screen_height-2)=255
        Next x
      Next y
      glEnd_()
      FlipAndClear()
      
    EndIf
    If Keys(#VK_F1)
      Keys(#VK_F1)=#False
      DestroyScreen()
      Fullscreen=~Fullscreen
      If CreateScreen("PB With OpenGL!",screen_width,screen_height,32,Fullscreen)
      Else
        End
      EndIf
    EndIf
  EndIf
Wend
DestroyScreen()
End
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Bon j'ai corrigé le code en fonction de ce qui est dit sur le forum anglais (merci remi et les autres ;))
D'abord un fichier d'include (je l'ai appelé "opengl.pb")

Code : Tout sélectionner

#DM_PELSWIDTH = $00080000
#DM_PELSHEIGHT = $00100000
#DM_BITSPERPEL = $00040000

#CDS_FULLSCREEN = $00000004
#DISP_CHANGE_FAILED = -1


; Constants
#GL_VERSION_1_1 = 1
#GL_ACCUM = $0100
#GL_LOAD = $0101
#GL_RETURN = $0102
#GL_MULT = $0103
#GL_ADD = $0104
#GL_NEVER = $0200
#GL_LESS = $0201
#GL_EQUAL = $0202
#GL_LEQUAL = $0203
#GL_GREATER = $0204
#GL_NOTEQUAL = $0205
#GL_GEQUAL = $0206
#GL_ALWAYS = $0207
#GL_CURRENT_BIT = $00000001
#GL_POINT_BIT = $00000002
#GL_LINE_BIT = $00000004
#GL_POLYGON_BIT = $00000008
#GL_POLYGON_STIPPLE_BIT = $00000010
#GL_PIXEL_MODE_BIT = $00000020
#GL_LIGHTING_BIT = $00000040
#GL_FOG_BIT = $00000080
#GL_DEPTH_BUFFER_BIT = $00000100
#GL_ACCUM_BUFFER_BIT = $00000200
#GL_STENCIL_BUFFER_BIT = $00000400
#GL_VIEWPORT_BIT = $00000800
#GL_TRANSFORM_BIT = $00001000
#GL_ENABLE_BIT = $00002000
#GL_COLOR_BUFFER_BIT = $00004000
#GL_HINT_BIT = $00008000
#GL_EVAL_BIT = $00010000
#GL_LIST_BIT = $00020000
#GL_TEXTURE_BIT = $00040000
#GL_SCISSOR_BIT = $00080000
#GL_ALL_ATTRIB_BITS = $000fffff
#GL_POINTS = $0000
#GL_LINES = $0001
#GL_LINE_LOOP = $0002
#GL_LINE_STRIP = $0003
#GL_TRIANGLES = $0004
#GL_TRIANGLE_STRIP = $0005
#GL_TRIANGLE_FAN = $0006
#GL_QUADS = $0007
#GL_QUAD_STRIP = $0008
#GL_POLYGON = $0009
#GL_ZERO = 0
#GL_ONE = 1
#GL_SRC_COLOR = $0300
#GL_ONE_MINUS_SRC_COLOR = $0301
#GL_SRC_ALPHA = $0302
#GL_ONE_MINUS_SRC_ALPHA = $0303
#GL_DST_ALPHA = $0304
#GL_ONE_MINUS_DST_ALPHA = $0305
#GL_DST_COLOR = $0306
#GL_ONE_MINUS_DST_COLOR = $0307
#GL_SRC_ALPHA_SATURATE = $0308
#GL_TRUE = 1
#GL_FALSE = 0
#GL_CLIP_PLANE0 = $3000
#GL_CLIP_PLANE1 = $3001
#GL_CLIP_PLANE2 = $3002
#GL_CLIP_PLANE3 = $3003
#GL_CLIP_PLANE4 = $3004
#GL_CLIP_PLANE5 = $3005
#GL_BYTE = $1400
#GL_UNSIGNED_BYTE = $1401
#GL_SHORT = $1402
#GL_UNSIGNED_SHORT = $1403
#GL_INT = $1404
#GL_UNSIGNED_INT = $1405
#GL_FLOAT = $1406
#GL_2_BYTES = $1407
#GL_3_BYTES = $1408
#GL_4_BYTES = $1409
#GL_DOUBLE = $140A
#GL_NONE = 0
#GL_FRONT_LEFT = $0400
#GL_FRONT_RIGHT = $0401
#GL_BACK_LEFT = $0402
#GL_BACK_RIGHT = $0403
#GL_FRONT = $0404
#GL_BACK = $0405
#GL_LEFT = $0406
#GL_RIGHT = $0407
#GL_FRONT_AND_BACK = $0408
#GL_AUX0 = $0409
#GL_AUX1 = $040A
#GL_AUX2 = $040B
#GL_AUX3 = $040C
#GL_NO_ERROR = 0
#GL_INVALID_ENUM = $0500
#GL_INVALID_VALUE = $0501
#GL_INVALID_OPERATION = $0502
#GL_STACK_OVERFLOW = $0503
#GL_STACK_UNDERFLOW = $0504
#GL_OUT_OF_MEMORY = $0505
#GL_2D = $0600
#GL_3D = $0601
#GL_3D_COLOR = $0602
#GL_3D_COLOR_TEXTURE = $0603
#GL_4D_COLOR_TEXTURE = $0604
#GL_PASS_THROUGH_TOKEN = $0700
#GL_POINT_TOKEN = $0701
#GL_LINE_TOKEN = $0702
#GL_POLYGON_TOKEN = $0703
#GL_BITMAP_TOKEN = $0704
#GL_DRAW_PIXEL_TOKEN = $0705
#GL_COPY_PIXEL_TOKEN = $0706
#GL_LINE_RESET_TOKEN = $0707
#GL_EXP = $0800
#GL_EXP2 = $0801
#GL_CW = $0900
#GL_CCW = $0901
#GL_COEFF = $0A00
#GL_ORDER = $0A01
#GL_DOMAIN = $0A02
#GL_CURRENT_COLOR = $0B00
#GL_CURRENT_INDEX = $0B01
#GL_CURRENT_NORMAL = $0B02
#GL_CURRENT_TEXTURE_COORDS = $0B03
#GL_CURRENT_RASTER_COLOR = $0B04
#GL_CURRENT_RASTER_INDEX = $0B05
#GL_CURRENT_RASTER_TEXTURE_COORDS = $0B06
#GL_CURRENT_RASTER_POSITION = $0B07
#GL_CURRENT_RASTER_POSITION_VALID = $0B08
#GL_CURRENT_RASTER_DISTANCE = $0B09
#GL_POINT_SMOOTH = $0B10
#GL_POINT_SIZE = $0B11
#GL_POINT_SIZE_RANGE = $0B12
#GL_POINT_SIZE_GRANULARITY = $0B13
#GL_LINE_SMOOTH = $0B20
#GL_LINE_WIDTH = $0B21
#GL_LINE_WIDTH_RANGE = $0B22
#GL_LINE_WIDTH_GRANULARITY = $0B23
#GL_LINE_STIPPLE = $0B24
#GL_LINE_STIPPLE_PATTERN = $0B25
#GL_LINE_STIPPLE_REPEAT = $0B26
#GL_LIST_MODE = $0B30
#GL_MAX_LIST_NESTING = $0B31
#GL_LIST_BASE = $0B32
#GL_LIST_INDEX = $0B33
#GL_POLYGON_MODE = $0B40
#GL_POLYGON_SMOOTH = $0B41
#GL_POLYGON_STIPPLE = $0B42
#GL_EDGE_FLAG = $0B43
#GL_CULL_FACE = $0B44
#GL_CULL_FACE_MODE = $0B45
#GL_FRONT_FACE = $0B46
#GL_LIGHTING = $0B50
#GL_LIGHT_MODEL_LOCAL_VIEWER = $0B51
#GL_LIGHT_MODEL_TWO_SIDE = $0B52
#GL_LIGHT_MODEL_AMBIENT = $0B53
#GL_SHADE_MODEL = $0B54
#GL_COLOR_MATERIAL_FACE = $0B55
#GL_COLOR_MATERIAL_PARAMETER = $0B56
#GL_COLOR_MATERIAL = $0B57
#GL_FOG = $0B60
#GL_FOG_INDEX = $0B61
#GL_FOG_DENSITY = $0B62
#GL_FOG_START = $0B63
#GL_FOG_END = $0B64
#GL_FOG_MODE = $0B65
#GL_FOG_COLOR = $0B66
#GL_DEPTH_RANGE = $0B70
#GL_DEPTH_TEST = $0B71
#GL_DEPTH_WRITEMASK = $0B72
#GL_DEPTH_CLEAR_VALUE = $0B73
#GL_DEPTH_FUNC = $0B74
#GL_ACCUM_CLEAR_VALUE = $0B80
#GL_STENCIL_TEST = $0B90
#GL_STENCIL_CLEAR_VALUE = $0B91
#GL_STENCIL_FUNC = $0B92
#GL_STENCIL_VALUE_MASK = $0B93
#GL_STENCIL_FAIL = $0B94
#GL_STENCIL_PASS_DEPTH_FAIL = $0B95
#GL_STENCIL_PASS_DEPTH_PASS = $0B96
#GL_STENCIL_REF = $0B97
#GL_STENCIL_WRITEMASK = $0B98
#GL_MATRIX_MODE = $0BA0
#GL_NORMALIZE = $0BA1
#GL_VIEWPORT = $0BA2
#GL_MODELVIEW_STACK_DEPTH = $0BA3
#GL_PROJECTION_STACK_DEPTH = $0BA4
#GL_TEXTURE_STACK_DEPTH = $0BA5
#GL_MODELVIEW_MATRIX = $0BA6
#GL_PROJECTION_MATRIX = $0BA7
#GL_TEXTURE_MATRIX = $0BA8
#GL_ATTRIB_STACK_DEPTH = $0BB0
#GL_CLIENT_ATTRIB_STACK_DEPTH = $0BB1
#GL_ALPHA_TEST = $0BC0
#GL_ALPHA_TEST_FUNC = $0BC1
#GL_ALPHA_TEST_REF = $0BC2
#GL_DITHER = $0BD0
#GL_BLEND_DST = $0BE0
#GL_BLEND_SRC = $0BE1
#GL_BLEND = $0BE2
#GL_LOGIC_OP_MODE = $0BF0
#GL_INDEX_LOGIC_OP = $0BF1
#GL_COLOR_LOGIC_OP = $0BF2
#GL_AUX_BUFFERS = $0C00
#GL_DRAW_BUFFER = $0C01
#GL_READ_BUFFER = $0C02
#GL_SCISSOR_BOX = $0C10
#GL_SCISSOR_TEST = $0C11
#GL_INDEX_CLEAR_VALUE = $0C20
#GL_INDEX_WRITEMASK = $0C21
#GL_COLOR_CLEAR_VALUE = $0C22
#GL_COLOR_WRITEMASK = $0C23
#GL_INDEX_MODE = $0C30
#GL_RGBA_MODE = $0C31
#GL_DOUBLEBUFFER = $0C32
#GL_STEREO = $0C33
#GL_RENDER_MODE = $0C40
#GL_PERSPECTIVE_CORRECTION_HINT = $0C50
#GL_POINT_SMOOTH_HINT = $0C51
#GL_LINE_SMOOTH_HINT = $0C52
#GL_POLYGON_SMOOTH_HINT = $0C53
#GL_FOG_HINT = $0C54
#GL_TEXTURE_GEN_S = $0C60
#GL_TEXTURE_GEN_T = $0C61
#GL_TEXTURE_GEN_R = $0C62
#GL_TEXTURE_GEN_Q = $0C63
#GL_PIXEL_MAP_I_TO_I = $0C70
#GL_PIXEL_MAP_S_TO_S = $0C71
#GL_PIXEL_MAP_I_TO_R = $0C72
#GL_PIXEL_MAP_I_TO_G = $0C73
#GL_PIXEL_MAP_I_TO_B = $0C74
#GL_PIXEL_MAP_I_TO_A = $0C75
#GL_PIXEL_MAP_R_TO_R = $0C76
#GL_PIXEL_MAP_G_TO_G = $0C77
#GL_PIXEL_MAP_B_TO_B = $0C78
#GL_PIXEL_MAP_A_TO_A = $0C79
#GL_PIXEL_MAP_I_TO_I_SIZE = $0CB0
#GL_PIXEL_MAP_S_TO_S_SIZE = $0CB1
#GL_PIXEL_MAP_I_TO_R_SIZE = $0CB2
#GL_PIXEL_MAP_I_TO_G_SIZE = $0CB3
#GL_PIXEL_MAP_I_TO_B_SIZE = $0CB4
#GL_PIXEL_MAP_I_TO_A_SIZE = $0CB5
#GL_PIXEL_MAP_R_TO_R_SIZE = $0CB6
#GL_PIXEL_MAP_G_TO_G_SIZE = $0CB7
#GL_PIXEL_MAP_B_TO_B_SIZE = $0CB8
#GL_PIXEL_MAP_A_TO_A_SIZE = $0CB9
#GL_UNPACK_SWAP_BYTES = $0CF0
#GL_UNPACK_LSB_FIRST = $0CF1
#GL_UNPACK_ROW_LENGTH = $0CF2
#GL_UNPACK_SKIP_ROWS = $0CF3
#GL_UNPACK_SKIP_PIXELS = $0CF4
#GL_UNPACK_ALIGNMENT = $0CF5
#GL_PACK_SWAP_BYTES = $0D00
#GL_PACK_LSB_FIRST = $0D01
#GL_PACK_ROW_LENGTH = $0D02
#GL_PACK_SKIP_ROWS = $0D03
#GL_PACK_SKIP_PIXELS = $0D04
#GL_PACK_ALIGNMENT = $0D05
#GL_MAP_COLOR = $0D10
#GL_MAP_STENCIL = $0D11
#GL_INDEX_SHIFT = $0D12
#GL_INDEX_OFFSET = $0D13
#GL_RED_SCALE = $0D14
#GL_RED_BIAS = $0D15
#GL_ZOOM_X = $0D16
#GL_ZOOM_Y = $0D17
#GL_GREEN_SCALE = $0D18
#GL_GREEN_BIAS = $0D19
#GL_BLUE_SCALE = $0D1A
#GL_BLUE_BIAS = $0D1B
#GL_ALPHA_SCALE = $0D1C
#GL_ALPHA_BIAS = $0D1D
#GL_DEPTH_SCALE = $0D1E
#GL_DEPTH_BIAS = $0D1F
#GL_MAX_EVAL_ORDER = $0D30
#GL_MAX_LIGHTS = $0D31
#GL_MAX_CLIP_PLANES = $0D32
#GL_MAX_TEXTURE_SIZE = $0D33
#GL_MAX_PIXEL_MAP_TABLE = $0D34
#GL_MAX_ATTRIB_STACK_DEPTH = $0D35
#GL_MAX_MODELVIEW_STACK_DEPTH = $0D36
#GL_MAX_NAME_STACK_DEPTH = $0D37
#GL_MAX_PROJECTION_STACK_DEPTH = $0D38
#GL_MAX_TEXTURE_STACK_DEPTH = $0D39
#GL_MAX_VIEWPORT_DIMS = $0D3A
#GL_MAX_CLIENT_ATTRIB_STACK_DEPTH = $0D3B
#GL_SUBPIXEL_BITS = $0D50
#GL_INDEX_BITS = $0D51
#GL_RED_BITS = $0D52
#GL_GREEN_BITS = $0D53
#GL_BLUE_BITS = $0D54
#GL_ALPHA_BITS = $0D55
#GL_DEPTH_BITS = $0D56
#GL_STENCIL_BITS = $0D57
#GL_ACCUM_RED_BITS = $0D58
#GL_ACCUM_GREEN_BITS = $0D59
#GL_ACCUM_BLUE_BITS = $0D5A
#GL_ACCUM_ALPHA_BITS = $0D5B
#GL_NAME_STACK_DEPTH = $0D70
#GL_AUTO_NORMAL = $0D80
#GL_MAP1_COLOR_4 = $0D90
#GL_MAP1_INDEX = $0D91
#GL_MAP1_NORMAL = $0D92
#GL_MAP1_TEXTURE_COORD_1 = $0D93
#GL_MAP1_TEXTURE_COORD_2 = $0D94
#GL_MAP1_TEXTURE_COORD_3 = $0D95
#GL_MAP1_TEXTURE_COORD_4 = $0D96
#GL_MAP1_VERTEX_3 = $0D97
#GL_MAP1_VERTEX_4 = $0D98
#GL_MAP2_COLOR_4 = $0DB0
#GL_MAP2_INDEX = $0DB1
#GL_MAP2_NORMAL = $0DB2
#GL_MAP2_TEXTURE_COORD_1 = $0DB3
#GL_MAP2_TEXTURE_COORD_2 = $0DB4
#GL_MAP2_TEXTURE_COORD_3 = $0DB5
#GL_MAP2_TEXTURE_COORD_4 = $0DB6
#GL_MAP2_VERTEX_3 = $0DB7
#GL_MAP2_VERTEX_4 = $0DB8
#GL_MAP1_GRID_DOMAIN = $0DD0
#GL_MAP1_GRID_SEGMENTS = $0DD1
#GL_MAP2_GRID_DOMAIN = $0DD2
#GL_MAP2_GRID_SEGMENTS = $0DD3
#GL_TEXTURE_1D = $0DE0
#GL_TEXTURE_2D = $0DE1
#GL_FEEDBACK_BUFFER_POINTER = $0DF0
#GL_FEEDBACK_BUFFER_SIZE = $0DF1
#GL_FEEDBACK_BUFFER_TYPE = $0DF2
#GL_SELECTION_BUFFER_POINTER = $0DF3
#GL_SELECTION_BUFFER_SIZE = $0DF4
#GL_TEXTURE_WIDTH = $1000
#GL_TEXTURE_HEIGHT = $1001
#GL_TEXTURE_INTERNAL_FORMAT = $1003
#GL_TEXTURE_BORDER_COLOR = $1004
#GL_TEXTURE_BORDER = $1005
#GL_DONT_CARE = $1100
#GL_FASTEST = $1101
#GL_NICEST = $1102
#GL_LIGHT0 = $4000
#GL_LIGHT1 = $4001
#GL_LIGHT2 = $4002
#GL_LIGHT3 = $4003
#GL_LIGHT4 = $4004
#GL_LIGHT5 = $4005
#GL_LIGHT6 = $4006
#GL_LIGHT7 = $4007
#GL_AMBIENT = $1200
#GL_DIFFUSE = $1201
#GL_SPECULAR = $1202
#GL_POSITION = $1203
#GL_SPOT_DIRECTION = $1204
#GL_SPOT_EXPONENT = $1205
#GL_SPOT_CUTOFF = $1206
#GL_CONSTANT_ATTENUATION = $1207
#GL_LINEAR_ATTENUATION = $1208
#GL_QUADRATIC_ATTENUATION = $1209
#GL_COMPILE = $1300
#GL_COMPILE_AND_EXECUTE = $1301
#GL_CLEAR = $1500
#GL_AND = $1501
#GL_AND_REVERSE = $1502
#GL_COPY = $1503
#GL_AND_INVERTED = $1504
#GL_NOOP = $1505
#GL_XOR = $1506
#GL_OR = $1507
#GL_NOR = $1508
#GL_EQUIV = $1509
#GL_INVERT = $150A
#GL_OR_REVERSE = $150B
#GL_COPY_INVERTED = $150C
#GL_OR_INVERTED = $150D
#GL_NAND = $150E
#GL_SET = $150F
#GL_EMISSION = $1600
#GL_SHININESS = $1601
#GL_AMBIENT_AND_DIFFUSE = $1602
#GL_COLOR_INDEXES = $1603
#GL_MODELVIEW = $1700
#GL_PROJECTION = $1701
#GL_TEXTURE = $1702
#GL_COLOR = $1800
#GL_DEPTH = $1801
#GL_STENCIL = $1802
#GL_COLOR_INDEX = $1900
#GL_STENCIL_INDEX = $1901
#GL_DEPTH_COMPONENT = $1902
#GL_RED = $1903
#GL_GREEN = $1904
#GL_BLUE = $1905
#GL_ALPHA = $1906
#GL_RGB = $1907
#GL_RGBA = $1908
#GL_LUMINANCE = $1909
#GL_LUMINANCE_ALPHA = $190A
#GL_BITMAP = $1A00
#GL_POINT = $1B00
#GL_LINE = $1B01
#GL_FILL = $1B02
#GL_RENDER = $1C00
#GL_FEEDBACK = $1C01
#GL_SELECT = $1C02
#GL_FLAT = $1D00
#GL_SMOOTH = $1D01
#GL_KEEP = $1E00
#GL_REPLACE = $1E01
#GL_INCR = $1E02
#GL_DECR = $1E03
#GL_VENDOR = $1F00
#GL_RENDERER = $1F01
#GL_VERSION = $1F02
#GL_EXTENSIONS = $1F03
#GL_S = $2000
#GL_T = $2001
#GL_R = $2002
#GL_Q = $2003
#GL_MODULATE = $2100
#GL_DECAL = $2101
#GL_TEXTURE_ENV_MODE = $2200
#GL_TEXTURE_ENV_COLOR = $2201
#GL_TEXTURE_ENV = $2300
#GL_EYE_LINEAR = $2400
#GL_OBJECT_LINEAR = $2401
#GL_SPHERE_MAP = $2402
#GL_TEXTURE_GEN_MODE = $2500
#GL_OBJECT_PLANE = $2501
#GL_EYE_PLANE = $2502
#GL_NEAREST = $2600
#GL_LINEAR = $2601
#GL_NEAREST_MIPMAP_NEAREST = $2700
#GL_LINEAR_MIPMAP_NEAREST = $2701
#GL_NEAREST_MIPMAP_LINEAR = $2702
#GL_LINEAR_MIPMAP_LINEAR = $2703
#GL_TEXTURE_MAG_FILTER = $2800
#GL_TEXTURE_MIN_FILTER = $2801
#GL_TEXTURE_WRAP_S = $2802
#GL_TEXTURE_WRAP_T = $2803
#GL_CLAMP = $2900
#GL_REPEAT = $2901
#GL_CLIENT_PIXEL_STORE_BIT = $00000001
#GL_CLIENT_VERTEX_ARRAY_BIT = $00000002
#GL_CLIENT_ALL_ATTRIB_BITS = $ffffffff
#GL_POLYGON_OFFSET_FACTOR = $8038
#GL_POLYGON_OFFSET_UNITS = $2A00
#GL_POLYGON_OFFSET_POINT = $2A01
#GL_POLYGON_OFFSET_LINE = $2A02
#GL_POLYGON_OFFSET_FILL = $8037
#GL_ALPHA4 = $803B
#GL_ALPHA8 = $803C
#GL_ALPHA12 = $803D
#GL_ALPHA16 = $803E
#GL_LUMINANCE4 = $803F
#GL_LUMINANCE8 = $8040
#GL_LUMINANCE12 = $8041
#GL_LUMINANCE16 = $8042
#GL_LUMINANCE4_ALPHA4 = $8043
#GL_LUMINANCE6_ALPHA2 = $8044
#GL_LUMINANCE8_ALPHA8 = $8045
#GL_LUMINANCE12_ALPHA4 = $8046
#GL_LUMINANCE12_ALPHA12 = $8047
#GL_LUMINANCE16_ALPHA16 = $8048
#GL_INTENSITY = $8049
#GL_INTENSITY4 = $804A
#GL_INTENSITY8 = $804B
#GL_INTENSITY12 = $804C
#GL_INTENSITY16 = $804D
#GL_R3_G3_B2 = $2A10
#GL_RGB4 = $804F
#GL_RGB5 = $8050
#GL_RGB8 = $8051
#GL_RGB10 = $8052
#GL_RGB12 = $8053
#GL_RGB16 = $8054
#GL_RGBA2 = $8055
#GL_RGBA4 = $8056
#GL_RGB5_A1 = $8057
#GL_RGBA8 = $8058
#GL_RGB10_A2 = $8059
#GL_RGBA12 = $805A
#GL_RGBA16 = $805B
#GL_TEXTURE_RED_SIZE = $805C
#GL_TEXTURE_GREEN_SIZE = $805D
#GL_TEXTURE_BLUE_SIZE = $805E
#GL_TEXTURE_ALPHA_SIZE = $805F
#GL_TEXTURE_LUMINANCE_SIZE = $8060
#GL_TEXTURE_INTENSITY_SIZE = $8061
#GL_PROXY_TEXTURE_1D = $8063
#GL_PROXY_TEXTURE_2D = $8064
#GL_TEXTURE_PRIORITY = $8066
#GL_TEXTURE_RESIDENT = $8067
#GL_TEXTURE_BINDING_1D = $8068
#GL_TEXTURE_BINDING_2D = $8069
#GL_VERTEX_ARRAY = $8074
#GL_NORMAL_ARRAY = $8075
#GL_COLOR_ARRAY = $8076
#GL_INDEX_ARRAY = $8077
#GL_TEXTURE_COORD_ARRAY = $8078
#GL_EDGE_FLAG_ARRAY = $8079
#GL_VERTEX_ARRAY_SIZE = $807A
#GL_VERTEX_ARRAY_TYPE = $807B
#GL_VERTEX_ARRAY_STRIDE = $807C
#GL_NORMAL_ARRAY_TYPE = $807E
#GL_NORMAL_ARRAY_STRIDE = $807F
#GL_COLOR_ARRAY_SIZE = $8081
#GL_COLOR_ARRAY_TYPE = $8082
#GL_COLOR_ARRAY_STRIDE = $8083
#GL_INDEX_ARRAY_TYPE = $8085
#GL_INDEX_ARRAY_STRIDE = $8086
#GL_TEXTURE_COORD_ARRAY_SIZE = $8088
#GL_TEXTURE_COORD_ARRAY_TYPE = $8089
#GL_TEXTURE_COORD_ARRAY_STRIDE = $808A
#GL_EDGE_FLAG_ARRAY_STRIDE = $808C
#GL_VERTEX_ARRAY_POINTER = $808E
#GL_NORMAL_ARRAY_POINTER = $808F
#GL_COLOR_ARRAY_POINTER = $8090
#GL_INDEX_ARRAY_POINTER = $8091
#GL_TEXTURE_COORD_ARRAY_POINTER = $8092
#GL_EDGE_FLAG_ARRAY_POINTER = $8093
#GL_V2F = $2A20
#GL_V3F = $2A21
#GL_C4UB_V2F = $2A22
#GL_C4UB_V3F = $2A23
#GL_C3F_V3F = $2A24
#GL_N3F_V3F = $2A25
#GL_C4F_N3F_V3F = $2A26
#GL_T2F_V3F = $2A27
#GL_T4F_V4F = $2A28
#GL_T2F_C4UB_V3F = $2A29
#GL_T2F_C3F_V3F = $2A2A
#GL_T2F_N3F_V3F = $2A2B
#GL_T2F_C4F_N3F_V3F = $2A2C
#GL_T4F_C4F_N3F_V4F = $2A2D
#GL_EXT_vertex_array = 1
#GL_EXT_bgra = 1
#GL_EXT_paletted_texture = 1
#GL_WIN_swap_hint = 1
#GL_WIN_draw_range_elements = 1
#GL_VERTEX_ARRAY_EXT = $8074
#GL_NORMAL_ARRAY_EXT = $8075
#GL_COLOR_ARRAY_EXT = $8076
#GL_INDEX_ARRAY_EXT = $8077
#GL_TEXTURE_COORD_ARRAY_EXT = $8078
#GL_EDGE_FLAG_ARRAY_EXT = $8079
#GL_VERTEX_ARRAY_SIZE_EXT = $807A
#GL_VERTEX_ARRAY_TYPE_EXT = $807B
#GL_VERTEX_ARRAY_STRIDE_EXT = $807C
#GL_VERTEX_ARRAY_COUNT_EXT = $807D
#GL_NORMAL_ARRAY_TYPE_EXT = $807E
#GL_NORMAL_ARRAY_STRIDE_EXT = $807F
#GL_NORMAL_ARRAY_COUNT_EXT = $8080
#GL_COLOR_ARRAY_SIZE_EXT = $8081
#GL_COLOR_ARRAY_TYPE_EXT = $8082
#GL_COLOR_ARRAY_STRIDE_EXT = $8083
#GL_COLOR_ARRAY_COUNT_EXT = $8084
#GL_INDEX_ARRAY_TYPE_EXT = $8085
#GL_INDEX_ARRAY_STRIDE_EXT = $8086
#GL_INDEX_ARRAY_COUNT_EXT = $8087
#GL_TEXTURE_COORD_ARRAY_SIZE_EXT = $8088
#GL_TEXTURE_COORD_ARRAY_TYPE_EXT = $8089
#GL_TEXTURE_COORD_ARRAY_STRIDE_EXT = $808A
#GL_TEXTURE_COORD_ARRAY_COUNT_EXT = $808B
#GL_EDGE_FLAG_ARRAY_STRIDE_EXT = $808C
#GL_EDGE_FLAG_ARRAY_COUNT_EXT = $808D
#GL_VERTEX_ARRAY_POINTER_EXT = $808E
#GL_NORMAL_ARRAY_POINTER_EXT = $808F
#GL_COLOR_ARRAY_POINTER_EXT = $8090
#GL_INDEX_ARRAY_POINTER_EXT = $8091
#GL_TEXTURE_COORD_ARRAY_POINTER_EXT = $8092
#GL_EDGE_FLAG_ARRAY_POINTER_EXT = $8093
#GL_DOUBLE_EXT = #GL_DOUBLE
#GL_BGR_EXT = $80E0
#GL_BGRA_EXT = $80E1
#GL_COLOR_TABLE_FORMAT_EXT = $80D8
#GL_COLOR_TABLE_WIDTH_EXT = $80D9
#GL_COLOR_TABLE_RED_SIZE_EXT = $80DA
#GL_COLOR_TABLE_GREEN_SIZE_EXT = $80DB
#GL_COLOR_TABLE_BLUE_SIZE_EXT = $80DC
#GL_COLOR_TABLE_ALPHA_SIZE_EXT = $80DD
#GL_COLOR_TABLE_LUMINANCE_SIZE_EXT = $80DE
#GL_COLOR_TABLE_INTENSITY_SIZE_EXT = $80DF
#GL_COLOR_INDEX1_EXT = $80E2
#GL_COLOR_INDEX2_EXT = $80E3
#GL_COLOR_INDEX4_EXT = $80E4
#GL_COLOR_INDEX8_EXT = $80E5
#GL_COLOR_INDEX12_EXT = $80E6
#GL_COLOR_INDEX16_EXT = $80E7
#GL_MAX_ELEMENTS_VERTICES_WIN = $80E8
#GL_MAX_ELEMENTS_INDICES_WIN = $80E9
#GL_PHONG_WIN = $80EA
#GL_PHONG_HINT_WIN = $80EB
#GL_FOG_SPECULAR_TEXTURE_WIN = $80EC
#GL_LOGIC_OP = #GL_INDEX_LOGIC_OP
#GL_TEXTURE_COMPONENTS = #GL_TEXTURE_INTERNAL_FORMAT
#GLU_VERSION_1_1 = 1
#GLU_VERSION_1_2 = 1
#GLU_INVALID_ENUM = 100900
#GLU_INVALID_VALUE = 100901
#GLU_OUT_OF_MEMORY = 100902
#GLU_INCOMPATIBLE_GL_VERSION = 100903
#GLU_VERSION = 100800
#GLU_EXTENSIONS = 100801
#GLU_TRUE = #GL_TRUE
#GLU_FALSE = #GL_FALSE
#GLU_SMOOTH = 100000
#GLU_FLAT = 100001
#GLU_NONE = 100002
#GLU_POINT = 100010
#GLU_LINE = 100011
#GLU_FILL = 100012
#GLU_SILHOUETTE = 100013
#GLU_OUTSIDE = 100020
#GLU_INSIDE = 100021
#GLU_TESS_MAX_COORD = 1.0e150
#GLU_TESS_WINDING_RULE = 100140
#GLU_TESS_BOUNDARY_ONLY = 100141
#GLU_TESS_TOLERANCE = 100142
#GLU_TESS_WINDING_ODD = 100130
#GLU_TESS_WINDING_NONZERO = 100131
#GLU_TESS_WINDING_POSITIVE = 100132
#GLU_TESS_WINDING_NEGATIVE = 100133
#GLU_TESS_WINDING_ABS_GEQ_TWO = 100134
#GLU_TESS_BEGIN = 100100
#GLU_TESS_VERTEX = 100101
#GLU_TESS_END = 100102
#GLU_TESS_ERROR = 100103
#GLU_TESS_EDGE_FLAG = 100104
#GLU_TESS_COMBINE = 100105
#GLU_TESS_BEGIN_DATA = 100106
#GLU_TESS_VERTEX_DATA = 100107
#GLU_TESS_END_DATA = 100108
#GLU_TESS_ERROR_DATA = 100109
#GLU_TESS_EDGE_FLAG_DATA = 100110
#GLU_TESS_COMBINE_DATA = 100111
#GLU_TESS_ERROR1 = 100151
#GLU_TESS_ERROR2 = 100152
#GLU_TESS_ERROR3 = 100153
#GLU_TESS_ERROR4 = 100154
#GLU_TESS_ERROR5 = 100155
#GLU_TESS_ERROR6 = 100156
#GLU_TESS_ERROR7 = 100157
#GLU_TESS_ERROR8 = 100158
#GLU_TESS_MISSING_BEGIN_POLYGON = #GLU_TESS_ERROR1
#GLU_TESS_MISSING_BEGIN_CONTOUR = #GLU_TESS_ERROR2
#GLU_TESS_MISSING_END_POLYGON = #GLU_TESS_ERROR3
#GLU_TESS_MISSING_END_CONTOUR = #GLU_TESS_ERROR4
#GLU_TESS_COORD_TOO_LARGE = #GLU_TESS_ERROR5
#GLU_TESS_NEED_COMBINE_CALLBACK = #GLU_TESS_ERROR6
#GLU_AUTO_LOAD_MATRIX = 100200
#GLU_CULLING = 100201
#GLU_SAMPLING_TOLERANCE = 100203
#GLU_DISPLAY_MODE = 100204
#GLU_PARAMETRIC_TOLERANCE = 100202
#GLU_SAMPLING_METHOD = 100205
#GLU_U_STEP = 100206
#GLU_V_STEP = 100207
#GLU_PATH_LENGTH = 100215
#GLU_PARAMETRIC_ERROR = 100216
#GLU_DOMAIN_DISTANCE = 100217
#GLU_MAP1_TRIM_2 = 100210
#GLU_MAP1_TRIM_3 = 100211
#GLU_OUTLINE_POLYGON = 100240
#GLU_OUTLINE_PATCH = 100241
#GLU_NURBS_ERROR1 = 100251
#GLU_NURBS_ERROR2 = 100252
#GLU_NURBS_ERROR3 = 100253
#GLU_NURBS_ERROR4 = 100254
#GLU_NURBS_ERROR5 = 100255
#GLU_NURBS_ERROR6 = 100256
#GLU_NURBS_ERROR7 = 100257
#GLU_NURBS_ERROR8 = 100258
#GLU_NURBS_ERROR9 = 100259
#GLU_NURBS_ERROR10 = 100260
#GLU_NURBS_ERROR11 = 100261
#GLU_NURBS_ERROR12 = 100262
#GLU_NURBS_ERROR13 = 100263
#GLU_NURBS_ERROR14 = 100264
#GLU_NURBS_ERROR15 = 100265
#GLU_NURBS_ERROR16 = 100266
#GLU_NURBS_ERROR17 = 100267
#GLU_NURBS_ERROR18 = 100268
#GLU_NURBS_ERROR19 = 100269
#GLU_NURBS_ERROR20 = 100270
#GLU_NURBS_ERROR21 = 100271
#GLU_NURBS_ERROR22 = 100272
#GLU_NURBS_ERROR23 = 100273
#GLU_NURBS_ERROR24 = 100274
#GLU_NURBS_ERROR25 = 100275
#GLU_NURBS_ERROR26 = 100276
#GLU_NURBS_ERROR27 = 100277
#GLU_NURBS_ERROR28 = 100278
#GLU_NURBS_ERROR29 = 100279
#GLU_NURBS_ERROR30 = 100280
#GLU_NURBS_ERROR31 = 100281
#GLU_NURBS_ERROR32 = 100282
#GLU_NURBS_ERROR33 = 100283
#GLU_NURBS_ERROR34 = 100284
#GLU_NURBS_ERROR35 = 100285
#GLU_NURBS_ERROR36 = 100286
#GLU_NURBS_ERROR37 = 100287
#GLU_CW = 100120
#GLU_CCW = 100121
#GLU_INTERIOR = 100122
#GLU_EXTERIOR = 100123
#GLU_UNKNOWN = 100124
#GLU_BEGIN = #GLU_TESS_BEGIN
#GLU_VERTEX = #GLU_TESS_VERTEX
#GLU_END = #GLU_TESS_END
#GLU_ERROR = #GLU_TESS_ERROR
#GLU_EDGE_FLAG = #GLU_TESS_EDGE_FLAG

Import "Opengl32.lib"
   glAccum_(a.l,b.f) As "_glAccum@8"
   glAlphaFunc_(a.l,b.f) As "_glAlphaFunc@8"
   glAreTexturesResident_(a.l,b.l,c.l) As "_glAreTexturesResident@12"
   glArrayElement_(a.l) As "_glArrayElement@4"
   glBegin_(a.l) As "_glBegin@4"
   glBindTexture_(a.l,b.l) As "_glBindTexture@8"
   glBitmap_(a.l,b.l,c.f,d.f,e.f,f.f,g.l) As "_glBitmap@28"
   glBlendFunc_(a.l,b.l) As "_glBlendFunc@8"
   glCallList_(a.l) As "_glCallList@4"
   glCallLists_(a.l,b.l,c.l) As "_glCallLists@12"
   glClear_(a.l) As "_glClear@4"
   glClearAccum_(a.f,b.f,c.f,d.f) As "_glClearAccum@16"
   glClearColor_(a.f,b.f,c.f,d.f) As "_glClearColor@16"
   glClearDepth_(a.d) As "_glClearDepth@8"
   glClearIndex_(a.f) As "_glClearIndex@4"
   glClearStencil_(a.l) As "_glClearStencil@4"
   glClipPlane_(a.l,b.l) As "_glClipPlane@8"
   glColor3b_(a.b,b.b,c.b) As "_glColor3b@12"
   glColor3bv_(a.l) As "_glColor3bv@4"
   glColor3d_(a.d,b.d,c.d) As "_glColor3d@24"
   glColor3dv_(a.l) As "_glColor3dv@4"
   glColor3f_(a.f,b.f,c.f) As "_glColor3f@12"
   glColor3fv_(a.l) As "_glColor3fv@4"
   glColor3i_(a.l,b.l,c.l) As "_glColor3i@12"
   glColor3iv_(a.l) As "_glColor3iv@4"
   glColor3s_(a.w,b.w,c.w) As "_glColor3s@12"
   glColor3sv_(a.l) As "_glColor3sv@4"
   glColor3ub_(a.c,b.c,c.c) As "_glColor3ub@12"
   glColor3ubv_(a.l) As "_glColor3ubv@4"
   glColor3ui_(a.l,b.l,c.l) As "_glColor3ui@12"
   glColor3uiv_(a.l) As "_glColor3uiv@4"
   glColor3us_(a.w,b.w,c.w) As "_glColor3us@12"
   glColor3usv_(a.l) As "_glColor3usv@4"
   glColor4b_(a.b,b.b,c.b,d.b) As "_glColor4b@16"
   glColor4bv_(a.l) As "_glColor4bv@4"
   glColor4d_(a.d,b.d,c.d,d.d) As "_glColor4d@32"
   glColor4dv_(a.l) As "_glColor4dv@4"
   glColor4f_(a.f,b.f,c.f,d.f) As "_glColor4f@16"
   glColor4fv_(a.l) As "_glColor4fv@4"
   glColor4i_(a.l,b.l,c.l,d.l) As "_glColor4i@16"
   glColor4iv_(a.l) As "_glColor4iv@4"
   glColor4s_(a.w,b.w,c.w,d.w) As "_glColor4s@16"
   glColor4sv_(a.l) As "_glColor4sv@4"
   glColor4ub_(a.c,b.c,c.c,d.c) As "_glColor4ub@16"
   glColor4ubv_(a.l) As "_glColor4ubv@4"
   glColor4ui_(a.l,b.l,c.l,d.l) As "_glColor4ui@16"
   glColor4uiv_(a.l) As "_glColor4uiv@4"
   glColor4us_(a.w,b.w,c.w,d.w) As "_glColor4us@16"
   glColor4usv_(a.l) As "_glColor4usv@4"
   glColorMask_(a.c,b.c,c.c,d.c) As "_glColorMask@16"
   glColorMaterial_(a.l,b.l) As "_glColorMaterial@8"
   glColorPointer_(a.l,b.l,c.l,d.l) As "_glColorPointer@16"
   glCopyPixels_(a.l,b.l,c.l,d.l,e.l) As "_glCopyPixels@20"
   glCopyTexImage1D_(a.l,b.l,c.l,d.l,e.l,f.l,g.l) As "_glCopyTexImage1D@28"
   glCopyTexImage2D_(a.l,b.l,c.l,d.l,e.l,f.l,g.l,h.l) As "_glCopyTexImage2D@32"
   glCopyTexSubImage1D_(a.l,b.l,c.l,d.l,e.l,f.l) As "_glCopyTexSubImage1D@24"
   glCopyTexSubImage2D_(a.l,b.l,c.l,d.l,e.l,f.l,g.l,h.l) As "_glCopyTexSubImage2D@32"
   glCullFace_(a.l) As "_glCullFace@4"
   glDeleteLists_(a.l,b.l) As "_glDeleteLists@8"
   glDeleteTextures_(a.l,b.l) As "_glDeleteTextures@8"
   glDepthFunc_(a.l) As "_glDepthFunc@4"
   glDepthMask_(a.c) As "_glDepthMask@4"
   glDepthRange_(a.d,b.d) As "_glDepthRange@16"
   glDisable_(a.l) As "_glDisable@4"
   glDisableClientState_(a.l) As "_glDisableClientState@4"
   glDrawArrays_(a.l,b.l,c.l) As "_glDrawArrays@12"
   glDrawBuffer_(a.l) As "_glDrawBuffer@4"
   glDrawElements_(a.l,b.l,c.l,d.l) As "_glDrawElements@16"
   glDrawPixels_(a.l,b.l,c.l,d.l,e.l) As "_glDrawPixels@20"
   glEdgeFlag_(a.c) As "_glEdgeFlag@4"
   glEdgeFlagPointer_(a.l,b.l) As "_glEdgeFlagPointer@8"
   glEdgeFlagv_(a.l) As "_glEdgeFlagv@4"
   glEnable_(a.l) As "_glEnable@4"
   glEnableClientState_(a.l) As "_glEnableClientState@4"
   glEnd_() As "_glEnd@0"
   glEndList_() As "_glEndList@0"
   glEvalCoord1d_(a.d) As "_glEvalCoord1d@8"
   glEvalCoord1dv_(a.l) As "_glEvalCoord1dv@4"
   glEvalCoord1f_(a.f) As "_glEvalCoord1f@4"
   glEvalCoord1fv_(a.l) As "_glEvalCoord1fv@4"
   glEvalCoord2d_(a.d,b.d) As "_glEvalCoord2d@16"
   glEvalCoord2dv_(a.l) As "_glEvalCoord2dv@4"
   glEvalCoord2f_(a.f,b.f) As "_glEvalCoord2f@8"
   glEvalCoord2fv_(a.l) As "_glEvalCoord2fv@4"
   glEvalMesh1_(a.l,b.l,c.l) As "_glEvalMesh1@12"
   glEvalMesh2_(a.l,b.l,c.l,d.l,e.l) As "_glEvalMesh2@20"
   glEvalPoint1_(a.l) As "_glEvalPoint1@4"
   glEvalPoint2_(a.l,b.l) As "_glEvalPoint2@8"
   glFeedbackBuffer_(a.l,b.l,c.l) As "_glFeedbackBuffer@12"
   glFinish_() As "_glFinish@0"
   glFlush_() As "_glFlush@0"
   glFogf_(a.l,b.f) As "_glFogf@8"
   glFogfv_(a.l,b.l) As "_glFogfv@8"
   glFogi_(a.l,b.l) As "_glFogi@8"
   glFogiv_(a.l,b.l) As "_glFogiv@8"
   glFrontFace_(a.l) As "_glFrontFace@4"
   glFrustum_(a.d,b.d,c.d,d.d,e.d,f.d) As "_glFrustum@48"
   glGenLists_(a.l) As "_glGenLists@4"
   glGenTextures_(a.l,b.l) As "_glGenTextures@8"
   glGetBooleanv_(a.l,b.l) As "_glGetBooleanv@8"
   glGetClipPlane_(a.l,b.l) As "_glGetClipPlane@8"
   glGetDoublev_(a.l,b.l) As "_glGetDoublev@8"
   glGetError_() As "_glGetError@0"
   glGetFloatv_(a.l,b.l) As "_glGetFloatv@8"
   glGetIntegerv_(a.l,b.l) As "_glGetIntegerv@8"
   glGetLightfv_(a.l,b.l,c.l) As "_glGetLightfv@12"
   glGetLightiv_(a.l,b.l,c.l) As "_glGetLightiv@12"
   glGetMapdv_(a.l,b.l,c.l) As "_glGetMapdv@12"
   glGetMapfv_(a.l,b.l,c.l) As "_glGetMapfv@12"
   glGetMapiv_(a.l,b.l,c.l) As "_glGetMapiv@12"
   glGetMaterialfv_(a.l,b.l,c.l) As "_glGetMaterialfv@12"
   glGetMaterialiv_(a.l,b.l,c.l) As "_glGetMaterialiv@12"
   glGetPixelMapfv_(a.l,b.l) As "_glGetPixelMapfv@8"
   glGetPixelMapuiv_(a.l,b.l) As "_glGetPixelMapuiv@8"
   glGetPixelMapusv_(a.l,b.l) As "_glGetPixelMapusv@8"
   glGetPointerv_(a.l,b.l) As "_glGetPointerv@8"
   glGetPolygonStipple_(a.l) As "_glGetPolygonStipple@4"
   glGetString_(a.l) As "_glGetString@4"
   glGetTexEnvfv_(a.l,b.l,c.l) As "_glGetTexEnvfv@12"
   glGetTexEnviv_(a.l,b.l,c.l) As "_glGetTexEnviv@12"
   glGetTexGendv_(a.l,b.l,c.l) As "_glGetTexGendv@12"
   glGetTexGenfv_(a.l,b.l,c.l) As "_glGetTexGenfv@12"
   glGetTexGeniv_(a.l,b.l,c.l) As "_glGetTexGeniv@12"
   glGetTexImage_(a.l,b.l,c.l,d.l,e.l) As "_glGetTexImage@20"
   glGetTexLevelParameterfv_(a.l,b.l,c.l,d.l) As "_glGetTexLevelParameterfv@16"
   glGetTexLevelParameteriv_(a.l,b.l,c.l,d.l) As "_glGetTexLevelParameteriv@16"
   glGetTexParameterfv_(a.l,b.l,c.l) As "_glGetTexParameterfv@12"
   glGetTexParameteriv_(a.l,b.l,c.l) As "_glGetTexParameteriv@12"
   glHint_(a.l,b.l) As "_glHint@8"
   glIndexMask_(a.l) As "_glIndexMask@4"
   glIndexPointer_(a.l,b.l,c.l) As "_glIndexPointer@12"
   glIndexd_(a.d) As "_glIndexd@8"
   glIndexdv_(a.l) As "_glIndexdv@4"
   glIndexf_(a.f) As "_glIndexf@4"
   glIndexfv_(a.l) As "_glIndexfv@4"
   glIndexi_(a.l) As "_glIndexi@4"
   glIndexiv_(a.l) As "_glIndexiv@4"
   glIndexs_(a.w) As "_glIndexs@4"
   glIndexsv_(a.l) As "_glIndexsv@4"
   glIndexub_(a.c) As "_glIndexub@4"
   glIndexubv_(a.l) As "_glIndexubv@4"
   glInitNames_() As "_glInitNames@0"
   glInterleavedArrays_(a.l,b.l,c.l) As "_glInterleavedArrays@12"
   glIsEnabled_(a.l) As "_glIsEnabled@4"
   glIsList_(a.l) As "_glIsList@4"
   glIsTexture_(a.l) As "_glIsTexture@4"
   glLightModelf_(a.l,b.f) As "_glLightModelf@8"
   glLightModelfv_(a.l,b.l) As "_glLightModelfv@8"
   glLightModeli_(a.l,b.l) As "_glLightModeli@8"
   glLightModeliv_(a.l,b.l) As "_glLightModeliv@8"
   glLightf_(a.l,b.l,c.f) As "_glLightf@12"
   glLightfv_(a.l,b.l,c.l) As "_glLightfv@12"
   glLighti_(a.l,b.l,c.l) As "_glLighti@12"
   glLightiv_(a.l,b.l,c.l) As "_glLightiv@12"
   glLineStipple_(a.l,b.w) As "_glLineStipple@8"
   glLineWidth_(a.f) As "_glLineWidth@4"
   glListBase_(a.l) As "_glListBase@4"
   glLoadIdentity_() As "_glLoadIdentity@0"
   glLoadMatrixd_(a.l) As "_glLoadMatrixd@4"
   glLoadMatrixf_(a.l) As "_glLoadMatrixf@4"
   glLoadName_(a.l) As "_glLoadName@4"
   glLogicOp_(a.l) As "_glLogicOp@4"
   glMap1d_(a.l,b.d,c.d,d.l,e.l,f.l) As "_glMap1d@32"
   glMap1f_(a.l,b.f,c.f,d.l,e.l,f.l) As "_glMap1f@24"
   glMap2d_(a.l,b.d,c.d,d.l,e.l,f.d,g.d,h.l,i.l,j.l) As "_glMap2d@56"
   glMap2f_(a.l,b.f,c.f,d.l,e.l,f.f,g.f,h.l,i.l,j.l) As "_glMap2f@40"
   glMapGrid1d_(a.l,b.d,c.d) As "_glMapGrid1d@20"
   glMapGrid1f_(a.l,b.f,c.f) As "_glMapGrid1f@12"
   glMapGrid2d_(a.l,b.d,c.d,d.l,e.d,f.d) As "_glMapGrid2d@40"
   glMapGrid2f_(a.l,b.f,c.f,d.l,e.f,f.f) As "_glMapGrid2f@24"
   glMaterialf_(a.l,b.l,c.f) As "_glMaterialf@12"
   glMaterialfv_(a.l,b.l,c.l) As "_glMaterialfv@12"
   glMateriali_(a.l,b.l,c.l) As "_glMateriali@12"
   glMaterialiv_(a.l,b.l,c.l) As "_glMaterialiv@12"
   glMatrixMode_(a.l) As "_glMatrixMode@4"
   glMultMatrixd_(a.l) As "_glMultMatrixd@4"
   glMultMatrixf_(a.l) As "_glMultMatrixf@4"
   glNewList_(a.l,b.l) As "_glNewList@8"
   glNormal3b_(a.b,b.b,c.b) As "_glNormal3b@12"
   glNormal3bv_(a.l) As "_glNormal3bv@4"
   glNormal3d_(a.d,b.d,c.d) As "_glNormal3d@24"
   glNormal3dv_(a.l) As "_glNormal3dv@4"
   glNormal3f_(a.f,b.f,c.f) As "_glNormal3f@12"
   glNormal3fv_(a.l) As "_glNormal3fv@4"
   glNormal3i_(a.l,b.l,c.l) As "_glNormal3i@12"
   glNormal3iv_(a.l) As "_glNormal3iv@4"
   glNormal3s_(a.w,b.w,c.w) As "_glNormal3s@12"
   glNormal3sv_(a.l) As "_glNormal3sv@4"
   glNormalPointer_(a.l,b.l,c.l) As "_glNormalPointer@12"
   glOrtho_(a.d,b.d,c.d,d.d,e.d,f.d) As "_glOrtho@48"
   glPassThrough_(a.f) As "_glPassThrough@4"
   glPixelMapfv_(a.l,b.l,c.l) As "_glPixelMapfv@12"
   glPixelMapuiv_(a.l,b.l,c.l) As "_glPixelMapuiv@12"
   glPixelMapusv_(a.l,b.l,c.l) As "_glPixelMapusv@12"
   glPixelStoref_(a.l,b.f) As "_glPixelStoref@8"
   glPixelStorei_(a.l,b.l) As "_glPixelStorei@8"
   glPixelTransferf_(a.l,b.f) As "_glPixelTransferf@8"
   glPixelTransferi_(a.l,b.l) As "_glPixelTransferi@8"
   glPixelZoom_(a.f,b.f) As "_glPixelZoom@8"
   glPointSize_(a.f) As "_glPointSize@4"
   glPolygonMode_(a.l,b.l) As "_glPolygonMode@8"
   glPolygonOffset_(a.f,b.f) As "_glPolygonOffset@8"
   glPolygonStipple_(a.l) As "_glPolygonStipple@4"
   glPopAttrib_() As "_glPopAttrib@0"
   glPopClientAttrib_() As "_glPopClientAttrib@0"
   glPopMatrix_() As "_glPopMatrix@0"
   glPopName_() As "_glPopName@0"
   glPrioritizeTextures_(a.l,b.l,c.l) As "_glPrioritizeTextures@12"
   glPushAttrib_(a.l) As "_glPushAttrib@4"
   glPushClientAttrib_(a.l) As "_glPushClientAttrib@4"
   glPushMatrix_() As "_glPushMatrix@0"
   glPushName_(a.l) As "_glPushName@4"
   glRasterPos2d_(a.d,b.d) As "_glRasterPos2d@16"
   glRasterPos2dv_(a.l) As "_glRasterPos2dv@4"
   glRasterPos2f_(a.f,b.f) As "_glRasterPos2f@8"
   glRasterPos2fv_(a.l) As "_glRasterPos2fv@4"
   glRasterPos2i_(a.l,b.l) As "_glRasterPos2i@8"
   glRasterPos2iv_(a.l) As "_glRasterPos2iv@4"
   glRasterPos2s_(a.w,b.w) As "_glRasterPos2s@8"
   glRasterPos2sv_(a.l) As "_glRasterPos2sv@4"
   glRasterPos3d_(a.d,b.d,c.d) As "_glRasterPos3d@24"
   glRasterPos3dv_(a.l) As "_glRasterPos3dv@4"
   glRasterPos3f_(a.f,b.f,c.f) As "_glRasterPos3f@12"
   glRasterPos3fv_(a.l) As "_glRasterPos3fv@4"
   glRasterPos3i_(a.l,b.l,c.l) As "_glRasterPos3i@12"
   glRasterPos3iv_(a.l) As "_glRasterPos3iv@4"
   glRasterPos3s_(a.w,b.w,c.w) As "_glRasterPos3s@12"
   glRasterPos3sv_(a.l) As "_glRasterPos3sv@4"
   glRasterPos4d_(a.d,b.d,c.d,d.d) As "_glRasterPos4d@32"
   glRasterPos4dv_(a.l) As "_glRasterPos4dv@4";
   glRasterPos4f_(a.f,b.f,c.f,d.f) As "_glRasterPos4f@16"
   glRasterPos4fv_(a.l) As "_glRasterPos4fv@4"
   glRasterPos4i_(a.l,b.l,c.l,d.l) As "_glRasterPos4i@16"
   glRasterPos4iv_(a.l) As "_glRasterPos4iv@4"
   glRasterPos4s_(a.w,b.w,c.w,d.w) As "_glRasterPos4s@16"
   glRasterPos4sv_(a.l) As "_glRasterPos4sv@4"
   glReadBuffer_(a.l) As "_glReadBuffer@4"
   glReadPixels_(a.l,b.l,c.l,d.l,e.l,f.l,g.l) As "_glReadPixels@28"
   glRectd_(a.d,b.d,c.d,d.d) As "_glRectd@32"
   glRectdv_(a.l,b.l) As "_glRectdv@8"
   glRectf_(a.f,b.f,c.f,d.f) As "_glRectf@16"
   glRectfv_(a.l,b.l) As "_glRectfv@8"
   glRecti_(a.l,b.l,c.l,d.l) As "_glRecti@16"
   glRectiv_(a.l,b.l) As "_glRectiv@8"
   glRects_(a.w,b.w,c.w,d.w) As "_glRects@16"
   glRectsv_(a.l,b.l) As "_glRectsv@8"
   glRenderMode_(a.l) As "_glRenderMode@4"
   glRotated_(a.d,b.d,c.d,d.d) As "_glRotated@32"
   glRotatef_(a.f,b.f,c.f,d.f) As "_glRotatef@16"
   glScaled_(a.d,b.d,c.d) As "_glScaled@24"
   glScalef_(a.f,b.f,c.f) As "_glScalef@12"
   glScissor_(a.l,b.l,c.l,d.l) As "_glScissor@16"
   glSelectBuffer_(a.l,b.l) As "_glSelectBuffer@8"
   glShadeModel_(a.l) As "_glShadeModel@4"
   glStencilFunc_(a.l,b.l,c.l) As "_glStencilFunc@12"
   glStencilMask_(a.l) As "_glStencilMask@4"
   glStencilOp_(a.l,b.l,c.l) As "_glStencilOp@12"
   glTexCoord1d_(a.d) As "_glTexCoord1d@8"
   glTexCoord1dv_(a.l) As "_glTexCoord1dv@4"
   glTexCoord1f_(a.f) As "_glTexCoord1f@4"
   glTexCoord1fv_(a.l) As "_glTexCoord1fv@4"
   glTexCoord1i_(a.l) As "_glTexCoord1i@4"
   glTexCoord1iv_(a.l) As "_glTexCoord1iv@4"
   glTexCoord1s_(a.w) As "_glTexCoord1s@4"
   glTexCoord1sv_(a.l) As "_glTexCoord1sv@4"
   glTexCoord2d_(a.d,b.d) As "_glTexCoord2d@16"
   glTexCoord2dv_(a.l) As "_glTexCoord2dv@4"
   glTexCoord2f_(a.f,b.f) As "_glTexCoord2f@8"
   glTexCoord2fv_(a.l) As "_glTexCoord2fv@4"
   glTexCoord2i_(a.l,b.l) As "_glTexCoord2i@8"
   glTexCoord2iv_(a.l) As "_glTexCoord2iv@4"
   glTexCoord2s_(a.w,b.w) As "_glTexCoord2s@8"
   glTexCoord2sv_(a.l) As "_glTexCoord2sv@4"
   glTexCoord3d_(a.d,b.d,c.d) As "_glTexCoord3d@24"
   glTexCoord3dv_(a.l) As "_glTexCoord3dv@4"
   glTexCoord3f_(a.f,b.f,c.f) As "_glTexCoord3f@12"
   glTexCoord3fv_(a.l) As "_glTexCoord3fv@4"
   glTexCoord3i_(a.l,b.l,c.l) As "_glTexCoord3i@12"
   glTexCoord3iv_(a.l) As "_glTexCoord3iv@4"
   glTexCoord3s_(a.w,b.w,c.w) As "_glTexCoord3s@12"
   glTexCoord3sv_(a.l) As "_glTexCoord3sv@4"
   glTexCoord4d_(a.d,b.d,c.d,d.d) As "_glTexCoord4d@32"
   glTexCoord4dv_(a.l) As "_glTexCoord4dv@4"
   glTexCoord4f_(a.f,b.f,c.f,d.f) As "_glTexCoord4f@16"
   glTexCoord4fv_(a.l) As "_glTexCoord4fv@4"
   glTexCoord4i_(a.l,b.l,c.l,d.l) As "_glTexCoord4i@16"
   glTexCoord4iv_(a.l) As "_glTexCoord4iv@4"
   glTexCoord4s_(a.w,b.w,c.w,d.w) As "_glTexCoord4s@16"
   glTexCoord4sv_(a.l) As "_glTexCoord4sv@4"
   glTexCoordPointer_(a.l,b.l,c.l,d.l) As "_glTexCoordPointer@16"
   glTexEnvf_(a.l,b.l,c.f) As "_glTexEnvf@12"
   glTexEnvfv_(a.l,b.l,c.l) As "_glTexEnvfv@12"
   glTexEnvi_(a.l,b.l,c.l) As "_glTexEnvi@12"
   glTexEnviv_(a.l,b.l,c.l) As "_glTexEnviv@12"
   glTexGend_(a.l,b.l,c.d) As "_glTexGend@16"
   glTexGendv_(a.l,b.l,c.l) As "_glTexGendv@12"
   glTexGenf_(a.l,b.l,c.f) As "_glTexGenf@12"
   glTexGenfv_(a.l,b.l,c.l) As "_glTexGenfv@12"
   glTexGeni_(a.l,b.l,c.l) As "_glTexGeni@12"
   glTexGeniv_(a.l,b.l,c.l) As "_glTexGeniv@12"
   glTexImage1D_(a.l,b.l,c.l,d.l,e.l,f.l,g.l,h.l) As "_glTexImage1D@32"
   glTexImage2D_(a.l,b.l,c.l,d.l,e.l,f.l,g.l,h.l,i.l) As "_glTexImage2D@36"
   glTexParameterf_(a.l,b.l,c.f) As "_glTexParameterf@12"
   glTexParameterfv_(a.l,b.l,c.l) As "_glTexParameterfv@12"
   glTexParameteri_(a.l,b.l,c.l) As "_glTexParameteri@12"
   glTexParameteriv_(a.l,b.l,c.l) As "_glTexParameteriv@12"
   glTexSubImage1D_(a.l,b.l,c.l,d.l,e.l,f.l,g.l) As "_glTexSubImage1D@28"
   glTexSubImage2D_(a.l,b.l,c.l,d.l,e.l,f.l,g.l,h.l,i.l) As "_glTexSubImage2D@36"
   glTranslated_(a.d,b.d,c.d) As "_glTranslated@24"
   glTranslatef_(a.f,b.f,c.f) As "_glTranslatef@12"
   glVertex2d_(a.d,b.d) As "_glVertex2d@16"
   glVertex2dv_(a.l) As "_glVertex2dv@4"
   glVertex2f_(a.f,b.f) As "_glVertex2f@8"
   glVertex2fv_(a.l) As "_glVertex2fv@4"
   glVertex2i_(a.l,b.l) As "_glVertex2i@8"
   glVertex2iv_(a.l) As "_glVertex2iv@4"
   glVertex2s_(a.w,b.w) As "_glVertex2s@8"
   glVertex2sv_(a.l) As "_glVertex2sv@4"
   glVertex3d_(a.d,b.d,c.d) As "_glVertex3d@24"
   glVertex3dv_(a.l) As "_glVertex3dv@4"
   glVertex3f_(a.f,b.f,c.f) As "_glVertex3f@12"
   glVertex3fv_(a.l) As "_glVertex3fv@4"
   glVertex3i_(a.l,b.l,c.l) As "_glVertex3i@12"
   glVertex3iv_(a.l) As "_glVertex3iv@4"
   glVertex3s_(a.w,b.w,c.w) As "_glVertex3s@12"
   glVertex3sv_(a.l) As "_glVertex3sv@4"
   glVertex4d_(a.d,b.d,c.d,d.d) As "_glVertex4d@32"
   glVertex4dv_(a.l) As "_glVertex4dv@4"
   glVertex4f_(a.f,b.f,c.f,d.f) As "_glVertex4f@16"
   glVertex4fv_(a.l) As "_glVertex4fv@4"
   glVertex4i_(a.l,b.l,c.l,d.l) As "_glVertex4i@16"
   glVertex4iv_(a.l) As "_glVertex4iv@4"
   glVertex4s_(a.w,b.w,c.w,d.w) As "_glVertex4s@16"
   glVertex4sv_(a.l) As "_glVertex4sv@4"
   glVertexPointer_(a.l,b.l,c.l,d.l) As "_glVertexPointer@16"
   glViewport_(a.l,b.l,c.l,d.l) As "_glViewport@16"
EndImport


; Imports
Import "Glu32.lib"
   gluErrorString_(a.l) As "_gluErrorString@4"
   gluErrorUnicodeStringEXT(a.l) As "_gluErrorUnicodeStringEXT@4"
   gluGetString_(a.l) As "_gluGetString@4"
   gluOrtho2D_(a.d,b.d,c.d,d.d) As "_gluOrtho2D@32"
   gluPerspective_(a.d,b.d,c.d,d.d) As "_gluPerspective@32"
   gluPickMatrix_(a.d,b.d,c.d,d.d,e) As "_gluPickMatrix@36"
   gluLookAt_(a.d,b.d,c.d,d.d,e.d,f.d,g.d,h.d,i.d) As "_gluLookAt@72"
   gluProject_(a.d,b.d,c.d,d,e,f,g.l,h.l,i.l) As "_gluProject@48"
   gluUnProject_(a.d,b.d,c.d,d,e,f,g.l,h.l,i.l) As "_gluUnProject@48"
   gluScaleImage_(a.l,b.l,c.l,d.l,e.l,f.l,g.l,h.l,i.l) As "_gluScaleImage@36"
   gluBuild1DMipmaps_(a.l,b.l,c.l,d.l,e.l,f.l) As "_gluBuild1DMipmaps@24"
   gluBuild2DMipmaps_(a.l,b.l,c.l,d.l,e.l,f.l,g.l) As "_gluBuild2DMipmaps@28"
   
   gluNewQuadric_() As "_gluNewQuadric@0"
   gluDeleteQuadric_(a.l) As "_gluDeleteQuadric@4"
   gluQuadricNormals_(a.l,b.l) As "_gluQuadricNormals@8"
   gluQuadricTexture_(a.l,b.c) As "_gluQuadricTexture@8"
   gluQuadricOrientation_(a.l,b.l) As "_gluQuadricOrientation@8"
   gluQuadricDrawStyle_(a.l,b.l) As "_gluQuadricDrawStyle@8"
   gluCylinder_(a.l,b.d,c.d,d.d,e.l,f.l) As "_gluCylinder@36"
   gluDisk_(a.l,b.d,c.d,d.l,e.l) As "_gluDisk@28"
   gluPartialDisk_(a.l,b.d,c.d,d.l,e.l,f.d,g.d) As "_gluPartialDisk@44"
   gluSphere_(a.l,b.d,c.l,d.l) As "_gluSphere@20"
   gluQuadricCallback_(a.l, b.l, c.l) As "_gluQuadricCallback@12"
   gluNewTess_() As "_gluNewTess@0"
   gluDeleteTess_(a.l) As "_gluDeleteTess@4"
   gluTessBeginPolygon_(a.l,b.l) As "_gluTessBeginPolygon@8"
   gluTessBeginContour_(a.l) As "_gluTessBeginContour@4"
   gluTessVertex_(a.l,b,c.l) As "_gluTessVertex@12"
   gluTessEndContour_(a.l) As "_gluTessEndContour@4"
   gluTessEndPolygon_(a.l) As "_gluTessEndPolygon@4"
   gluTessProperty_(a.l,b.l,c.d) As "_gluTessProperty@16"
   gluTessNormal_(a.l,b.d,c.d,d.d) As "_gluTessNormal@28"
   gluTessCallback_(a.l, b.l, c.l) As "_gluTessCallback@12"
   gluGetTessProperty_(a.l,b.l,c.l) As "_gluGetTessProperty@12"
   gluNewNurbsRenderer_() As "_gluNewNurbsRenderer@0"
   gluDeleteNurbsRenderer_(a.l) As "_gluDeleteNurbsRenderer@4"
   gluBeginSurface_(a.l) As "_gluBeginSurface@4"
   gluBeginCurve_(a.l) As "_gluBeginCurve@4"
   gluEndCurve_(a.l) As "_gluEndCurve@4"
   gluEndSurface_(a.l) As "_gluEndSurface@4"
   gluBeginTrim_(a.l) As "_gluBeginTrim@4"
   gluEndTrim_(a.l) As "_gluEndTrim@4"
   gluPwlCurve_(a.l,b.l,c.l,d.l,e.l) As "_gluPwlCurve@20"
   gluNurbsCurve_(a.l,b.l,c.l,d.l,e.l,f.l,g.l) As "_gluNurbsCurve@28"
   gluNurbsSurface_(a.l,b.l,c.l,d.l,e.l,f.l,g.l,h.l,i.l,j.l,k.l) As "_gluNurbsSurface@44"
   gluLoadSamplingMatrices_(a.l,b,c,d) As "_gluLoadSamplingMatrices@16"
   gluNurbsProperty_(a.l,b.l,c.f) As "_gluNurbsProperty@12"
   gluGetNurbsProperty_(a.l,b.l,c.l) As "_gluGetNurbsProperty@12"
   gluNurbsCallback_(a.l, b.l, c.l) As "_gluNurbsCallback@12"
   gluBeginPolygon_(a.l) As "_gluBeginPolygon@4"
   gluNextContour_(a.l,b.l) As "_gluNextContour@8"
   gluEndPolygon_(a.l) As "_gluEndPolygon@4"
EndImport
Ensuite la démo

Code : Tout sélectionner

;- Program Includes

XIncludeFile "include\OpenGL.pb"

;- Program Constants

#Clear_Red=0.0
#Clear_Green=0.0
#Clear_Blue=0.0
#Clear_Alpha=1.0
#NearClip=-1
#FarClip=1

; Some Window's Constants that were not defined
#DM_BITSPERPEL=$40000
#DM_PELSWIDTH=$80000
#DM_PELSHEIGHT=$100000
#CDS_FULLSCREEN=4
#DISP_CHANGE_SUCCESSFUL=0
#SC_MONITORPOWER=$F170

;- Program Globals

Global hwnd.l
Global hdc.l
Global hrc.l
Global hInstance.l


Global Dim Keys.b(256)
Global Active.b
Global Fullscreen.b

;defaults
Active=#True
Fullscreen=#True

;- Program Procedures

Procedure ResizeScreen(Width, Height) ;returns nothing
  glViewport_(0, 0, Width, Height)
  glMatrixMode_(#GL_PROJECTION)
	glLoadIdentity_()
	glOrtho_(0, Width, Height, 0, #NearClip, #FarClip)
  glMatrixMode_(#GL_MODELVIEW)
	glLoadIdentity_()
EndProcedure

Procedure RendererInit() ;returns a nothing
  glShadeModel_(#GL_SMOOTH)
  glClearColor_(#Clear_Red, #Clear_Green, #Clear_Blue, #Clear_Alpha)
  glClearDepth_(1.0)
  glDepthFunc_(#GL_LEQUAL)
  glHint_(#GL_POINT_SMOOTH_HINT, #GL_NICEST)
  ProcedureReturn #True
EndProcedure

Procedure.b DrawScene() ;returns a bool
  SwapBuffers_(hdc)
  glClear_(#GL_COLOR_BUFFER_BIT|#GL_DEPTH_BUFFER_BIT)
EndProcedure

Procedure.b DestroyScreen() ;returns a nothing
  If Fullscreen
    ChangeDisplaySettings_(#Null,0)
    ShowCursor_(#True)
  EndIf
  If hrc
    If wglMakeCurrent_(#Null,#Null)
    Else
      MessageRequester("Error","The Release of DC and RC Failed!",#MB_OK|#MB_ICONINFORMATION)
    EndIf
    If wglDeleteContext_(hrc)
    Else
      MessageRequester("Error","The Release of the Rendering Context Failed!",#MB_OK|#MB_ICONINFORMATION)
    EndIf
    hrc=#Null
  EndIf
  If hdc And ReleaseDC_(hwnd,hdc)
  Else
    MessageRequester("Error","The Release of the Device Context Failed!",#MB_OK|#MB_ICONINFORMATION)
    hdc=#Null
  EndIf
  If hwnd And DestroyWindow_(hwnd)
  Else
    MessageRequester("Error","Could Not Release hwnd",#MB_OK|#MB_ICONINFORMATION)
    hwnd=#Null
  EndIf
  If UnregisterClass_("OpenGL",hInstance)
  Else
    MessageRequester("Error","Could Not Unregister Class!",#MB_OK|#MB_ICONINFORMATION)
    hInstance=#Null
  EndIf
EndProcedure

Procedure.l WindowCallback(phwnd.l,uMsg.l,wParam.l,lParam.l) ;returns a Long
  Select uMsg
    Case #WM_ACTIVATE
      If ~wParam>>8
        Active=#True
      Else
        Active=#False
      EndIf
      ProcedureReturn 0
    Case #WM_SYSCOMMAND
      Select wParam
        Case #SC_SCREENSAVE
          ProcedureReturn 0
        Case #SC_MONITORPOWER
          ProcedureReturn 0
      EndSelect
    Case #WM_CLOSE
      PostQuitMessage_(0)
      ProcedureReturn 0
    Case #WM_KEYDOWN
      Keys(wParam)=#True
      ProcedureReturn 0
    Case #WM_KEYUP
      Keys(wParam)=#False
      ProcedureReturn 0
    Case #WM_SIZE
      ResizeScreen(wParam&$00FF,Value>>8)
      ProcedureReturn 0
    Default
      ProcedureReturn DefWindowProc_(phwnd,uMsg,wParam,lParam)
  EndSelect
EndProcedure

Procedure.b CreateScreen(Title.s,Width.l,Height.l,Bits.l,FullscreenFlag.b) ;returns a Bool
  PixelFormat.l
  WC.WNDCLASS
  ExStyle.l
  style.l
  WindowRect.RECT
  
  WindowRect\left=0
  WindowRect\right=Width
  WindowRect\top=0
  WindowRect\bottom=Height
  
  Fullscreen=FullscreenFlag
  hInstance=GetModuleHandle_(#Null)
  
  WC\style=#CS_HREDRAW|#CS_VREDRAW|#CS_OWNDC
  WC\lpfnWndProc=@WindowCallback()
  WC\cbClsExtra=0
  WC\cbWndExtra=0
  WC\hInstance=hInstance
  WC\hIcon=LoadIcon_(#Null, #IDI_WINLOGO)
  WC\hCursor=LoadCursor_(#Null, #IDC_ARROW)
  WC\hbrBackground=#Null
  WC\lpszMenuName=#Null
  WC\lpszClassName=@"OpenGL"
  
  If RegisterClass_(WC)
  Else
    MessageRequester("Error", "Failed To Register The Window Class!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  If Fullscreen
    DMScreenSettings.DEVMODE
    DMScreenSettings\dmSize=SizeOf(DEVMODE)
    DMScreenSettings\dmPelsWidth=Width
    DMScreenSettings\dmPelsHeight=Height
    DMScreenSettings\dmBitsPerPel=Bits
    DMScreenSettings\dmFields=#DM_BITSPERPEL|#DM_PELSWIDTH|#DM_PELSHEIGHT
    If ChangeDisplaySettings_(DMScreenSettings,#CDS_FULLSCREEN)<>#DISP_CHANGE_SUCCESSFUL
      If MessageRequester("Error","The Requested Fullscreen Mode Is Not Supported By "+Chr(10)+"Your Video Card. Use Windowed Mode Instead?",#MB_YESNO|#MB_ICONEXCLAMATION)=#IDYES
        Fullscreen=#False
      Else
        MessageRequester("Error","Could Not Open Full Screen!",#MB_OK|#MB_ICONSTOP)
      EndIf
      ProcedureReturn #False
    EndIf
  EndIf
  
  If Fullscreen
    ExStyle=#WS_EX_APPWINDOW|#WS_EX_WINDOWEDGE
    style=#WS_POPUP
    ShowCursor_(#False)
  Else
    ExStyle=#WS_EX_APPWINDOW|#WS_EX_WINDOWEDGE
    style=#WS_OVERLAPPEDWINDOW
  EndIf
  
  AdjustWindowRectEx_(WindowRect,style,#False,ExStyle)
  hwnd=CreateWindowEx_(dwExStyle,"OpenGL",Title,dwStyle|WS_CLIPSIBLINGS|WS_CLIPCHILDREN,0,0,WindowRect\right-WindowRect\left,WindowRect\bottom-WindowRect\top,#Null,#Null,hInstance,#Null)
  
  If hwnd
  Else
    DestroyScreen()
    MessageRequester("Error","Cannot Create Window!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  pfd.PIXELFORMATDESCRIPTOR
  pfd\nSize=SizeOf(PIXELFORMATDESCRIPTOR)
  pfd\nVersion=1
  pfd\dwFlags=#PFD_DRAW_TO_WINDOW|#PFD_SUPPORT_OPENGL|#PFD_DOUBLEBUFFER
  pfd\iPixelType=#PFD_TYPE_RGBA
  pfd\cColorBits=Bits
  pfd\cRedBits=0
  pfd\cRedShift=0
  pfd\cGreenBits=0
  pfd\cGreenShift=0
  pfd\cBlueBits=0
  pfd\cBlueShift=0
  pfd\cAlphaBits=0
  pfd\cAlphaShift=0
  pfd\cAccumBits=0
  pfd\cAccumRedBits=0
  pfd\cAccumGreenBits=0
  pfd\cAccumBlueBits=0
  pfd\cAccumAlphaBits=0
  pfd\cDepthBits=16
  pfd\cStencilBits=0
  pfd\cAuxBuffers=0
  pfd\iLayerType=#PFD_MAIN_PLANE
  pfd\bReserved=0
  pfd\dwLayerMask=0
  pfd\dwVisibleMask=0
  pfd\dwDamageMask=0
  
  hdc=GetDC_(hwnd)
  
  If hdc
  Else
    DestroyScreen()
    MessageRequester("Error","Can't Create a GL Device Context!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  
  PixelFormat=ChoosePixelFormat_(hdc,pfd)
  
  If PixelFormat
  Else
    DestroyScreen()
    MessageRequester("Error","Cannot Find a Suitable PixelFormat!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  
  If SetPixelFormat_(hdc,PixelFormat,pfd)
  Else
    DestroyScreen()
    MessageRequester("Error","Cannot Set The PixelFormat!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  
  hrc=wglCreateContext_(hdc)
  
  If hrc
  Else
    DestroyScreen()
    MessageRequester("Error","Cannot Create a GL Rendering Context!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  
  If wglMakeCurrent_(hdc,hrc)
  Else
    DestroyScreen()
    MessageRequester("Error","Cannot Activate The GL Rendering Context!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  
  ShowWindow_(hwnd,#SW_SHOW)
  SetForegroundWindow_(hwnd)
  SetFocus_(hwnd)
  ResizeScreen(Width,Height)
  
  If RendererInit()
  Else
    DestroyScreen()
    MessageRequester("Error","Cannot Initialize OpenGL!",#MB_OK|#MB_ICONEXCLAMATION)
    ProcedureReturn #False
  EndIf
  
  ProcedureReturn #True
EndProcedure

Procedure ScreenEvent()
  msg.MSG
  PeekMessage_(msg,#Null,0,0,#PM_REMOVE)
  WindowCallback(hwnd,msg\message,msg\wParam,msg\lParam)
  If msg
    If msg\message=#WM_QUIT
      DestroyScreen()
      End
    EndIf
  Else
    TranslateMessage_(msg)
    DispatchMessage_(msg)
  EndIf
  ProcedureReturn msg\message
EndProcedure

Procedure StartRendering()
  glBegin_(#GL_POINTS)
EndProcedure

Procedure StopRendering()
  glEnd_()
EndProcedure

Procedure FlipAndClear()
  SwapBuffers_(hdc)
  glClear_(#GL_COLOR_BUFFER_BIT|#GL_DEPTH_BUFFER_BIT)
EndProcedure

;- Program Entry Point

;********************************
;*Name: Fire                    *
;*By: Dreglor                   *
;*last updated: 8-31-05 6:11pm  *
;********************************

y.w=0
x.w=0
screen_width.w=1024
screen_height.w=768
Dim cool.w(screen_width,screen_height)
Dim buf.w(screen_width,screen_height)
yy.w=0
xx.w=0
For y=1 To screen_height-1
  For x=1 To screen_width-1
    cool(x,y)=Random(3)
    buf(x,y)=0
  Next x
Next y
Dim color(255)
For i=0 To 84
  color(i)=Int(255/84*i)+0<<8+0<<16
  color(i+85)=255+Int(255/84*i)<<8+0<<16
  color(i+85+85)=255+255<<8+Int(255/84*i)<<16
Next i

If MessageRequester("Start FullScreen?","Would You Like To Run In Fullscreen Mode?",#MB_YESNO|#MB_ICONQUESTION)=#IDNO
  Fullscreen=#False
EndIf

If CreateScreen("PB With OpenGL!",screen_width,screen_height,32,Fullscreen)
Else
  End
EndIf

While done<>#True
  msg=ScreenEvent()
  If Active
    If Keys(#VK_ESCAPE)
      done=#True
    Else
      glBegin_(#GL_POINTS)
      For y=1 To screen_height-1
        For x=1 To screen_width-1
          If buf(x,y) > 0
            If buf(x,y) < 0
              buf(x,y)=0
            Else
              buf(x,y)=((buf(x+1,y)+buf(x-1,y)+buf(x,y+1)+buf(x,y-1))/4-cool(x,y))
            EndIf       
            buf(x,y-1)=buf(x,y)
            cool(x,y-1)=cool(x,y)
            cool(x,y)=Random(3)
            If buf(x,y) > 0
              ;Plot(x,y,color(buf(x,y)))
              muiltplier.f=1
              red.f=Red(color(buf(x,y)))/255
              green.f=Green(color(buf(x,y)))/255
              blue.f=Blue(color(buf(x,y)))/255
              glColor4f_(red,green,blue,1.0)
              glVertex2i_(x,y)
            EndIf
          EndIf
          buf(x,screen_height-2)=255
        Next x
      Next y
      glEnd_()
      FlipAndClear()
      
    EndIf
    If Keys(#VK_F1)
      Keys(#VK_F1)=#False
      DestroyScreen()
      Fullscreen=~Fullscreen
      If CreateScreen("PB With OpenGL!",screen_width,screen_height,32,Fullscreen)
      Else
        End
      EndIf
    EndIf
  EndIf
Wend
DestroyScreen()
End
zorglub
Messages : 22
Inscription : ven. 05/août/2005 23:11

Message par zorglub »

Je dis peut-être (surement) une bêtise mais votre problème de clignotement, ce ne serait pas plutot un problème de synchronisation verticale ?
Je ne sais même pas si cela est encore valable sur les PC avec leur carte graphiques et leurs DirectX/OpenGL. Ne faut-il pas faire "patienter" le programme pour qu'il ne fasse le swap d'écan qu'une fois qu'il a fini de dessiner les sprites ?

Je m'explique avec ce que je connais et c'est le même principe sur toutes les machines. On attend que le balayage de l'écran soit en bas pour permuter les deux buffers d'écrans. Sinon, il va permutter les buffers d'écran pendant que le sprite est dessiné sur l'écran virtuel. D'où un scintillement.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

zorglub a écrit :Je dis peut-être (surement) une bêtise mais votre problème de clignotement, ce ne serait pas plutot un problème de synchronisation verticale ?
justement le probleme est la !
La VBL est attendu en principe par la commande "Flipbuffer()" de purebasic !! :)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Et la synchro vbl n'est pas supportée ou carrêment désactivée par certaines cartes graphiques ou les pilotes, pour avoir une meilleure fluidité dans les jeux 3d par exemple.

De toutes façons, avoir une très bonne fluidité sur windows ç'a toujours été difficile, y'a toujours des frames drop par ci par là dès qu'une tâche se réveille ou fait appel au disque.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Parfois on regrette l'Amiga :P
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Parfois? Tout le temps.
Répondre