| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! Copyright (C) 2005, 2006 Doug Coleman. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							|  |  |  | USING: alien alien.c-types alien.syntax parser namespaces kernel | 
					
						
							| 
									
										
										
										
											2009-05-01 15:02:26 -04:00
										 |  |  | math math.bitwise windows.types init assocs splitting | 
					
						
							| 
									
										
										
										
											2009-04-30 22:35:50 -04:00
										 |  |  | sequences libc opengl.gl opengl.gl.extensions opengl.gl.windows ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | IN: windows.opengl32 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-22 19:12:54 -05:00
										 |  |  | CONSTANT: LPD_TYPE_RGBA        0
 | 
					
						
							|  |  |  | CONSTANT: LPD_TYPE_COLORINDEX  1
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! wglSwapLayerBuffers flags | 
					
						
							| 
									
										
										
										
											2009-02-22 19:12:54 -05:00
										 |  |  | CONSTANT: WGL_SWAP_MAIN_PLANE     HEX: 00000001
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY1       HEX: 00000002
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY2       HEX: 00000004
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY3       HEX: 00000008
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY4       HEX: 00000010
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY5       HEX: 00000020
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY6       HEX: 00000040
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY7       HEX: 00000080
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY8       HEX: 00000100
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY9       HEX: 00000200
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY10      HEX: 00000400
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY11      HEX: 00000800
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY12      HEX: 00001000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY13      HEX: 00002000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY14      HEX: 00004000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_OVERLAY15      HEX: 00008000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY1      HEX: 00010000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY2      HEX: 00020000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY3      HEX: 00040000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY4      HEX: 00080000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY5      HEX: 00100000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY6      HEX: 00200000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY7      HEX: 00400000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY8      HEX: 00800000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY9      HEX: 01000000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY10     HEX: 02000000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY11     HEX: 04000000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY12     HEX: 08000000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY13     HEX: 10000000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY14     HEX: 20000000
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDERLAY15     HEX: 40000000
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | LIBRARY: gl | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! FUNCTION: int ReleaseDC ( HWND hWnd, HDC hDC ) ; | 
					
						
							|  |  |  | ! FUNCTION: HDC ResetDC ( HDC hdc, DEVMODE* lpInitData ) ; | 
					
						
							|  |  |  | ! FUNCTION: BOOL RestoreDC ( HDC hdc, int nSavedDC ) ; | 
					
						
							|  |  |  | ! FUNCTION: int SaveDC( HDC hDC ) ; | 
					
						
							|  |  |  | ! FUNCTION: HGDIOBJ SelectObject ( HDC hDC, HGDIOBJ hgdiobj ) ; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | FUNCTION: HGLRC wglCreateContext ( HDC hDC ) ;
 | 
					
						
							|  |  |  | FUNCTION: BOOL wglDeleteContext ( HGLRC hRC ) ;
 | 
					
						
							|  |  |  | FUNCTION: BOOL wglMakeCurrent ( HDC hDC, HGLRC hglrc ) ;
 | 
					
						
							| 
									
										
										
										
											2009-04-30 21:38:18 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-30 22:35:50 -04:00
										 |  |  | ! WGL_ARB_extensions_string extension | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-01 15:02:26 -04:00
										 |  |  | GL-FUNCTION: char* wglGetExtensionsStringARB { } ( HDC hDC ) ;
 | 
					
						
							| 
									
										
										
										
											2009-04-30 22:35:50 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! WGL_ARB_pixel_format extension | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CONSTANT: WGL_NUMBER_PIXEL_FORMATS_ARB    HEX: 2000
 | 
					
						
							|  |  |  | CONSTANT: WGL_DRAW_TO_WINDOW_ARB          HEX: 2001
 | 
					
						
							|  |  |  | CONSTANT: WGL_DRAW_TO_BITMAP_ARB          HEX: 2002
 | 
					
						
							|  |  |  | CONSTANT: WGL_ACCELERATION_ARB            HEX: 2003
 | 
					
						
							|  |  |  | CONSTANT: WGL_NEED_PALETTE_ARB            HEX: 2004
 | 
					
						
							|  |  |  | CONSTANT: WGL_NEED_SYSTEM_PALETTE_ARB     HEX: 2005
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_LAYER_BUFFERS_ARB      HEX: 2006
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_METHOD_ARB             HEX: 2007
 | 
					
						
							|  |  |  | CONSTANT: WGL_NUMBER_OVERLAYS_ARB         HEX: 2008
 | 
					
						
							|  |  |  | CONSTANT: WGL_NUMBER_UNDERLAYS_ARB        HEX: 2009
 | 
					
						
							|  |  |  | CONSTANT: WGL_TRANSPARENT_ARB             HEX: 200A | 
					
						
							|  |  |  | CONSTANT: WGL_TRANSPARENT_RED_VALUE_ARB   HEX: 2037
 | 
					
						
							|  |  |  | CONSTANT: WGL_TRANSPARENT_GREEN_VALUE_ARB HEX: 2038
 | 
					
						
							|  |  |  | CONSTANT: WGL_TRANSPARENT_BLUE_VALUE_ARB  HEX: 2039
 | 
					
						
							|  |  |  | CONSTANT: WGL_TRANSPARENT_ALPHA_VALUE_ARB HEX: 203A | 
					
						
							|  |  |  | CONSTANT: WGL_TRANSPARENT_INDEX_VALUE_ARB HEX: 203B | 
					
						
							|  |  |  | CONSTANT: WGL_SHARE_DEPTH_ARB             HEX: 200C | 
					
						
							|  |  |  | CONSTANT: WGL_SHARE_STENCIL_ARB           HEX: 200D | 
					
						
							|  |  |  | CONSTANT: WGL_SHARE_ACCUM_ARB             HEX: 200E | 
					
						
							|  |  |  | CONSTANT: WGL_SUPPORT_GDI_ARB             HEX: 200F | 
					
						
							|  |  |  | CONSTANT: WGL_SUPPORT_OPENGL_ARB          HEX: 2010
 | 
					
						
							|  |  |  | CONSTANT: WGL_DOUBLE_BUFFER_ARB           HEX: 2011
 | 
					
						
							|  |  |  | CONSTANT: WGL_STEREO_ARB                  HEX: 2012
 | 
					
						
							|  |  |  | CONSTANT: WGL_PIXEL_TYPE_ARB              HEX: 2013
 | 
					
						
							|  |  |  | CONSTANT: WGL_COLOR_BITS_ARB              HEX: 2014
 | 
					
						
							|  |  |  | CONSTANT: WGL_RED_BITS_ARB                HEX: 2015
 | 
					
						
							|  |  |  | CONSTANT: WGL_RED_SHIFT_ARB               HEX: 2016
 | 
					
						
							|  |  |  | CONSTANT: WGL_GREEN_BITS_ARB              HEX: 2017
 | 
					
						
							|  |  |  | CONSTANT: WGL_GREEN_SHIFT_ARB             HEX: 2018
 | 
					
						
							|  |  |  | CONSTANT: WGL_BLUE_BITS_ARB               HEX: 2019
 | 
					
						
							|  |  |  | CONSTANT: WGL_BLUE_SHIFT_ARB              HEX: 201A | 
					
						
							|  |  |  | CONSTANT: WGL_ALPHA_BITS_ARB              HEX: 201B | 
					
						
							|  |  |  | CONSTANT: WGL_ALPHA_SHIFT_ARB             HEX: 201C | 
					
						
							|  |  |  | CONSTANT: WGL_ACCUM_BITS_ARB              HEX: 201D | 
					
						
							|  |  |  | CONSTANT: WGL_ACCUM_RED_BITS_ARB          HEX: 201E | 
					
						
							|  |  |  | CONSTANT: WGL_ACCUM_GREEN_BITS_ARB        HEX: 201F | 
					
						
							|  |  |  | CONSTANT: WGL_ACCUM_BLUE_BITS_ARB         HEX: 2020
 | 
					
						
							|  |  |  | CONSTANT: WGL_ACCUM_ALPHA_BITS_ARB        HEX: 2021
 | 
					
						
							|  |  |  | CONSTANT: WGL_DEPTH_BITS_ARB              HEX: 2022
 | 
					
						
							|  |  |  | CONSTANT: WGL_STENCIL_BITS_ARB            HEX: 2023
 | 
					
						
							|  |  |  | CONSTANT: WGL_AUX_BUFFERS_ARB             HEX: 2024
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CONSTANT: WGL_NO_ACCELERATION_ARB         HEX: 2025
 | 
					
						
							|  |  |  | CONSTANT: WGL_GENERIC_ACCELERATION_ARB    HEX: 2026
 | 
					
						
							|  |  |  | CONSTANT: WGL_FULL_ACCELERATION_ARB       HEX: 2027
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_EXCHANGE_ARB           HEX: 2028
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_COPY_ARB               HEX: 2029
 | 
					
						
							|  |  |  | CONSTANT: WGL_SWAP_UNDEFINED_ARB          HEX: 202A | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CONSTANT: WGL_TYPE_RGBA_ARB               HEX: 202B | 
					
						
							|  |  |  | CONSTANT: WGL_TYPE_COLORINDEX_ARB         HEX: 202C | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-01 15:02:26 -04:00
										 |  |  | GL-FUNCTION: BOOL wglGetPixelFormatAttribivARB { } (
 | 
					
						
							| 
									
										
										
										
											2009-04-30 22:35:50 -04:00
										 |  |  |         HDC hdc, | 
					
						
							|  |  |  |         int iPixelFormat, | 
					
						
							|  |  |  |         int iLayerPlane, | 
					
						
							|  |  |  |         UINT nAttributes, | 
					
						
							|  |  |  |         int* piAttributes, | 
					
						
							|  |  |  |         int* piValues | 
					
						
							|  |  |  |     ) ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-01 15:02:26 -04:00
										 |  |  | GL-FUNCTION: BOOL wglGetPixelFormatAttribfvARB { } (
 | 
					
						
							| 
									
										
										
										
											2009-04-30 22:35:50 -04:00
										 |  |  |         HDC hdc, | 
					
						
							|  |  |  |         int iPixelFormat, | 
					
						
							|  |  |  |         int iLayerPlane, | 
					
						
							|  |  |  |         UINT nAttributes, | 
					
						
							|  |  |  |         int* piAttributes, | 
					
						
							|  |  |  |         FLOAT* pfValues | 
					
						
							|  |  |  |     ) ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-01 15:02:26 -04:00
										 |  |  | GL-FUNCTION: BOOL wglChoosePixelFormatARB { } (
 | 
					
						
							| 
									
										
										
										
											2009-04-30 22:35:50 -04:00
										 |  |  |         HDC hdc, | 
					
						
							|  |  |  |         int* piAttribIList, | 
					
						
							|  |  |  |         FLOAT* pfAttribFList, | 
					
						
							|  |  |  |         UINT nMaxFormats, | 
					
						
							|  |  |  |         int* piFormats, | 
					
						
							|  |  |  |         UINT* nNumFormats | 
					
						
							|  |  |  |     ) ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! WGL_ARB_multisample extension | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CONSTANT: WGL_SAMPLE_BUFFERS_ARB HEX: 2041
 | 
					
						
							|  |  |  | CONSTANT: WGL_SAMPLES_ARB        HEX: 2042
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! WGL_ARB_pixel_format_float extension | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CONSTANT: WGL_TYPE_RGBA_FLOAT_ARB HEX: 21A0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! wgl extensions querying | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : has-wglGetExtensionsStringARB? ( -- ? )
 | 
					
						
							|  |  |  |     "wglGetExtensionsStringARB" wglGetProcAddress >boolean ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : wgl-extensions ( hdc -- extensions )
 | 
					
						
							|  |  |  |     has-wglGetExtensionsStringARB? [ wglGetExtensionsStringARB " " split ] [ drop { } ] if ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : has-wgl-extensions? ( hdc extensions -- ? )
 | 
					
						
							|  |  |  |     swap wgl-extensions [ member? ] curry all? ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : has-wgl-pixel-format-extension? ( hdc -- ? )
 | 
					
						
							|  |  |  |     { "WGL_ARB_pixel_format" } has-wgl-extensions? ;
 |