/
n-dimens
/
pascalabcnet
Обзор
Документация
Войти
/
n-dimens
/
pascalabcnet
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
TestSuite/CompilationSamples/OpenGL.pas
75 370 строк
6 MB
Mikhalkovich Stanislav
Наполовину исправлена #2649 - всё собирается. Но глубинная ошибка с синонимами осталась
29 мар 2022, 15:05
29 мар 2022, 15:05
22e43aa
Код
Авторство
О чём код?
//*****************************************************************************************************\\ // Copyright (©) Sergey Latchenko ( github.com/SunSerega | forum.mmcs.sfedu.ru/u/sun_serega ) // This code is distributed under the Unlicense // For details see LICENSE file or this: // https://github.com/SunSerega/POCGL/blob/master/LICENSE //*****************************************************************************************************\\ // Copyright (©) Сергей Латченко ( github.com/SunSerega | forum.mmcs.sfedu.ru/u/sun_serega ) // Данный код распространяется с лицензией Unlicense // Подробнее в файле LICENSE или тут: // https://github.com/SunSerega/POCGL/blob/master/LICENSE //*****************************************************************************************************\\ /// ///Код переведён отсюда: /// https://github.com/KhronosGroup/OpenGL-Registry/tree/master/xml /// ///Спецификации всех версий OpenGL: /// https://www.khronos.org/registry/OpenGL/specs/gl/ /// ///Если чего-либо не хватает, или найдена ошибка - писать сюда: /// https://github.com/SunSerega/POCGL/issues /// unit OpenGL; interface uses System; uses System.Runtime.InteropServices; uses System.Runtime.CompilerServices; type {$region Записи-имена} //-------------------------------------------------- // Basic type's //-------------------------------------------------- gl_program = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_program read default(gl_program); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_program[{val}]'; end; gl_program_pipeline = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_program_pipeline read default(gl_program_pipeline); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_program_pipeline[{val}]'; end; gl_texture = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_texture read default(gl_texture); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_texture[{val}]'; end; gl_buffer = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_buffer read default(gl_buffer); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_buffer[{val}]'; end; gl_shader = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_shader read default(gl_shader); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_shader[{val}]'; end; gl_query = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_query read default(gl_query); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_query[{val}]'; end; gl_framebuffer = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_framebuffer read default(gl_framebuffer); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_framebuffer[{val}]'; end; gl_renderbuffer = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_renderbuffer read default(gl_renderbuffer); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_renderbuffer[{val}]'; end; gl_sampler = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_sampler read default(gl_sampler); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_sampler[{val}]'; end; gl_transform_feedback = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_transform_feedback read default(gl_transform_feedback); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_transform_feedback[{val}]'; end; gl_vertex_array = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_vertex_array read default(gl_vertex_array); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_vertex_array[{val}]'; end; gl_sync = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: gl_sync read default(gl_sync); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'gl_sync[{val}]'; end; gl_display_list = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_display_list read default(gl_display_list); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_display_list[{val}]'; end; gl_handle_ARB = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_handle_ARB read default(gl_handle_ARB); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_handle_ARB[{val}]'; end; // GL_NV_vdpau_interop gl_vdpau_surface_NV = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: gl_vdpau_surface_NV read default(gl_vdpau_surface_NV); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'gl_vdpau_surface_NV[{val}]'; end; // GL_INTEL_performance_query gl_perf_query_id_INTEL = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_perf_query_id_INTEL read default(gl_perf_query_id_INTEL); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_perf_query_id_INTEL[{val}]'; end; gl_perf_query_handle_INTEL = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: gl_perf_query_handle_INTEL read default(gl_perf_query_handle_INTEL); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'gl_perf_query_handle_INTEL[{val}]'; end; //-------------------------------------------------- // cl //-------------------------------------------------- gl_cl_context = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: gl_cl_context read default(gl_cl_context); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'gl_cl_context[{val}]'; end; gl_cl_event = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: gl_cl_event read default(gl_cl_event); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'gl_cl_event[{val}]'; end; //-------------------------------------------------- // wgl //-------------------------------------------------- // gdi gdi_device_context = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: gdi_device_context read default(gdi_device_context); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'gdi_device_context[{val}]'; end; gdi_h_enh_metafile = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: gdi_h_enh_metafile read default(gdi_h_enh_metafile); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'gdi_h_enh_metafile[{val}]'; end; // core wgl_context = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: wgl_context read default(wgl_context); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'wgl_context[{val}]'; end; // WGL_ARB_pbuffer wgl_pbuffer_ARB = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: wgl_pbuffer_ARB read default(wgl_pbuffer_ARB); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'wgl_pbuffer_ARB[{val}]'; end; wgl_pbuffer_EXT = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: wgl_pbuffer_EXT read default(wgl_pbuffer_EXT); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'wgl_pbuffer_EXT[{val}]'; end; // WGL_NV_gpu_affinity wgl_GPU_NV = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: wgl_GPU_NV read default(wgl_GPU_NV); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'wgl_GPU_NV[{val}]'; end; // GL_NV_video_capture // WGL_NV_video_capture wgl_h_video_input_device_NV = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: wgl_h_video_input_device_NV read default(wgl_h_video_input_device_NV); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'wgl_h_video_input_device_NV[{val}]'; end; // GL_NV_present_video // WGL_NV_present_video wgl_h_video_output_device_NV = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: wgl_h_video_output_device_NV read default(wgl_h_video_output_device_NV); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'wgl_h_video_output_device_NV[{val}]'; end; // WGL_NV_video_output wgl_h_video_device_NV = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: wgl_h_video_device_NV read default(wgl_h_video_device_NV); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'wgl_h_video_device_NV[{val}]'; end; //-------------------------------------------------- // glx //-------------------------------------------------- // x x_p_visual_info = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: x_p_visual_info read default(x_p_visual_info); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'x_p_visual_info[{val}]'; end; x_p_display = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: x_p_display read default(x_p_display); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'x_p_display[{val}]'; end; x_pixmap = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: x_pixmap read default(x_pixmap); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'x_pixmap[{val}]'; end; x_font = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: x_font read default(x_font); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'x_font[{val}]'; end; x_window = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: x_window read default(x_window); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'x_window[{val}]'; end; x_dm_params = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: x_dm_params read default(x_dm_params); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'x_dm_params[{val}]'; end; x_dm_buffer = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: x_dm_buffer read default(x_dm_buffer); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'x_dm_buffer[{val}]'; end; x_colormap = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: x_colormap read default(x_colormap); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'x_colormap[{val}]'; end; //TODO что это вообще за типы? я не могу найти ничего про них x_vl_server = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: x_vl_server read default(x_vl_server); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'x_vl_server[{val}]'; end; x_vl_path = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: x_vl_path read default(x_vl_path); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'x_vl_path[{val}]'; end; x_vl_node = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: x_vl_node read default(x_vl_node); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'x_vl_node[{val}]'; end; // core glx_context = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: glx_context read default(glx_context); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'glx_context[{val}]'; end; glx_context_id = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: glx_context_id read default(glx_context_id); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'glx_context_id[{val}]'; end; glx_drawable = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: glx_drawable read default(glx_drawable); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'glx_drawable[{val}]'; end; glx_pixmap = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: glx_pixmap read default(glx_pixmap); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'glx_pixmap[{val}]'; end; glx_fb_config = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: glx_fb_config read default(glx_fb_config); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'glx_fb_config[{val}]'; end; glx_window = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: glx_window read default(glx_window); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'glx_window[{val}]'; end; glx_pbuffer = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: glx_pbuffer read default(glx_pbuffer); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'glx_pbuffer[{val}]'; end; // GLX_NV_video_out glx_video_device_NV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property Zero: glx_video_device_NV read default(glx_video_device_NV); public static property Size: integer read Marshal.SizeOf&<UInt32>; public function ToString: string; override := $'glx_video_device_NV[{val}]'; end; // GL_NV_video_capture // GLX_NV_video_capture glx_video_capture_device_NV = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: glx_video_capture_device_NV read default(glx_video_capture_device_NV); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'glx_video_capture_device_NV[{val}]'; end; // GLX_SGIX_video_source glx_video_source_SGIX = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: glx_video_source_SGIX read default(glx_video_source_SGIX); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'glx_video_source_SGIX[{val}]'; end; //-------------------------------------------------- // egl //-------------------------------------------------- // GL_OES_EGL_image egl_image_OES = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: egl_image_OES read default(egl_image_OES); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'egl_image_OES[{val}]'; end; // GL_EXT_external_buffer egl_chient_buffer_EXT = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public static property Zero: egl_chient_buffer_EXT read default(egl_chient_buffer_EXT); public static property Size: integer read Marshal.SizeOf&<IntPtr>; public function ToString: string; override := $'egl_chient_buffer_EXT[{val}]'; end; {$endregion Записи-имена} {$region Перечисления} {$region Core} AccumOp = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ACCUM: AccumOp read new AccumOp($0100); public static property LOAD: AccumOp read new AccumOp($0101); public static property RETURN: AccumOp read new AccumOp($0102); public static property MULT: AccumOp read new AccumOp($0103); public static property ADD: AccumOp read new AccumOp($0104); public function ToString: string; override; begin if self.val = UInt32($0100) then Result := 'ACCUM' else if self.val = UInt32($0101) then Result := 'LOAD' else if self.val = UInt32($0102) then Result := 'RETURN' else if self.val = UInt32($0103) then Result := 'MULT' else if self.val = UInt32($0104) then Result := 'ADD' else Result := $'AccumOp[{self.val}]'; end; end; AlphaFunction = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NEVER: AlphaFunction read new AlphaFunction($0200); public static property LESS: AlphaFunction read new AlphaFunction($0201); public static property EQUAL: AlphaFunction read new AlphaFunction($0202); public static property LEQUAL: AlphaFunction read new AlphaFunction($0203); public static property GREATER: AlphaFunction read new AlphaFunction($0204); public static property NOTEQUAL: AlphaFunction read new AlphaFunction($0205); public static property GEQUAL: AlphaFunction read new AlphaFunction($0206); public static property ALWAYS: AlphaFunction read new AlphaFunction($0207); public function ToString: string; override; begin if self.val = UInt32($0200) then Result := 'NEVER' else if self.val = UInt32($0201) then Result := 'LESS' else if self.val = UInt32($0202) then Result := 'EQUAL' else if self.val = UInt32($0203) then Result := 'LEQUAL' else if self.val = UInt32($0204) then Result := 'GREATER' else if self.val = UInt32($0205) then Result := 'NOTEQUAL' else if self.val = UInt32($0206) then Result := 'GEQUAL' else if self.val = UInt32($0207) then Result := 'ALWAYS' else Result := $'AlphaFunction[{self.val}]'; end; end; AtomicCounterBufferPName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER: AtomicCounterBufferPName read new AtomicCounterBufferPName($90ED); public static property ATOMIC_COUNTER_BUFFER_BINDING: AtomicCounterBufferPName read new AtomicCounterBufferPName($92C1); public static property ATOMIC_COUNTER_BUFFER_DATA_SIZE: AtomicCounterBufferPName read new AtomicCounterBufferPName($92C4); public static property ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS: AtomicCounterBufferPName read new AtomicCounterBufferPName($92C5); public static property ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES: AtomicCounterBufferPName read new AtomicCounterBufferPName($92C6); public static property ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER: AtomicCounterBufferPName read new AtomicCounterBufferPName($92C7); public static property ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER: AtomicCounterBufferPName read new AtomicCounterBufferPName($92C8); public static property ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER: AtomicCounterBufferPName read new AtomicCounterBufferPName($92C9); public static property ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER: AtomicCounterBufferPName read new AtomicCounterBufferPName($92CA); public static property ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER: AtomicCounterBufferPName read new AtomicCounterBufferPName($92CB); public function ToString: string; override; begin if self.val = UInt32($90ED) then Result := 'ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER' else if self.val = UInt32($92C1) then Result := 'ATOMIC_COUNTER_BUFFER_BINDING' else if self.val = UInt32($92C4) then Result := 'ATOMIC_COUNTER_BUFFER_DATA_SIZE' else if self.val = UInt32($92C5) then Result := 'ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS' else if self.val = UInt32($92C6) then Result := 'ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES' else if self.val = UInt32($92C7) then Result := 'ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER' else if self.val = UInt32($92C8) then Result := 'ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER' else if self.val = UInt32($92C9) then Result := 'ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER' else if self.val = UInt32($92CA) then Result := 'ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER' else if self.val = UInt32($92CB) then Result := 'ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER' else Result := $'AtomicCounterBufferPName[{self.val}]'; end; end; AttribMask = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CURRENT_BIT: AttribMask read new AttribMask($0001); public static property POINT_BIT: AttribMask read new AttribMask($0002); public static property LINE_BIT: AttribMask read new AttribMask($0004); public static property POLYGON_BIT: AttribMask read new AttribMask($0008); public static property POLYGON_STIPPLE_BIT: AttribMask read new AttribMask($0010); public static property PIXEL_MODE_BIT: AttribMask read new AttribMask($0020); public static property LIGHTING_BIT: AttribMask read new AttribMask($0040); public static property FOG_BIT: AttribMask read new AttribMask($0080); public static property DEPTH_BUFFER_BIT: AttribMask read new AttribMask($0100); public static property ACCUM_BUFFER_BIT: AttribMask read new AttribMask($0200); public static property STENCIL_BUFFER_BIT: AttribMask read new AttribMask($0400); public static property VIEWPORT_BIT: AttribMask read new AttribMask($0800); public static property TRANSFORM_BIT: AttribMask read new AttribMask($1000); public static property ENABLE_BIT: AttribMask read new AttribMask($2000); public static property COLOR_BUFFER_BIT: AttribMask read new AttribMask($4000); public static property HINT_BIT: AttribMask read new AttribMask($8000); public static property EVAL_BIT: AttribMask read new AttribMask($10000); public static property LIST_BIT: AttribMask read new AttribMask($20000); public static property TEXTURE_BIT: AttribMask read new AttribMask($40000); public static property SCISSOR_BIT: AttribMask read new AttribMask($80000); public static property MULTISAMPLE_BIT: AttribMask read new AttribMask($20000000); public static property MULTISAMPLE_BIT_3DFX: AttribMask read new AttribMask($20000000); public static property MULTISAMPLE_BIT_ARB: AttribMask read new AttribMask($20000000); public static property MULTISAMPLE_BIT_EXT: AttribMask read new AttribMask($20000000); public static property ALL_ATTRIB_BITS: AttribMask read new AttribMask($FFFFFFFF); public static function operator+(f1,f2: AttribMask) := new AttribMask(f1.val or f2.val); public static function operator or(f1,f2: AttribMask) := f1+f2; public property HAS_FLAG_CURRENT_BIT: boolean read self.val and $0001 <> 0; public property HAS_FLAG_POINT_BIT: boolean read self.val and $0002 <> 0; public property HAS_FLAG_LINE_BIT: boolean read self.val and $0004 <> 0; public property HAS_FLAG_POLYGON_BIT: boolean read self.val and $0008 <> 0; public property HAS_FLAG_POLYGON_STIPPLE_BIT: boolean read self.val and $0010 <> 0; public property HAS_FLAG_PIXEL_MODE_BIT: boolean read self.val and $0020 <> 0; public property HAS_FLAG_LIGHTING_BIT: boolean read self.val and $0040 <> 0; public property HAS_FLAG_FOG_BIT: boolean read self.val and $0080 <> 0; public property HAS_FLAG_DEPTH_BUFFER_BIT: boolean read self.val and $0100 <> 0; public property HAS_FLAG_ACCUM_BUFFER_BIT: boolean read self.val and $0200 <> 0; public property HAS_FLAG_STENCIL_BUFFER_BIT: boolean read self.val and $0400 <> 0; public property HAS_FLAG_VIEWPORT_BIT: boolean read self.val and $0800 <> 0; public property HAS_FLAG_TRANSFORM_BIT: boolean read self.val and $1000 <> 0; public property HAS_FLAG_ENABLE_BIT: boolean read self.val and $2000 <> 0; public property HAS_FLAG_COLOR_BUFFER_BIT: boolean read self.val and $4000 <> 0; public property HAS_FLAG_HINT_BIT: boolean read self.val and $8000 <> 0; public property HAS_FLAG_EVAL_BIT: boolean read self.val and $10000 <> 0; public property HAS_FLAG_LIST_BIT: boolean read self.val and $20000 <> 0; public property HAS_FLAG_TEXTURE_BIT: boolean read self.val and $40000 <> 0; public property HAS_FLAG_SCISSOR_BIT: boolean read self.val and $80000 <> 0; public property HAS_FLAG_MULTISAMPLE_BIT: boolean read self.val and $20000000 <> 0; public property HAS_FLAG_MULTISAMPLE_BIT_3DFX: boolean read self.val and $20000000 <> 0; public property HAS_FLAG_MULTISAMPLE_BIT_ARB: boolean read self.val and $20000000 <> 0; public property HAS_FLAG_MULTISAMPLE_BIT_EXT: boolean read self.val and $20000000 <> 0; public property HAS_FLAG_ALL_ATTRIB_BITS: boolean read self.val and $FFFFFFFF <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0001) = UInt32($0001) then res += 'CURRENT_BIT+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'POINT_BIT+'; if self.val and UInt32($0004) = UInt32($0004) then res += 'LINE_BIT+'; if self.val and UInt32($0008) = UInt32($0008) then res += 'POLYGON_BIT+'; if self.val and UInt32($0010) = UInt32($0010) then res += 'POLYGON_STIPPLE_BIT+'; if self.val and UInt32($0020) = UInt32($0020) then res += 'PIXEL_MODE_BIT+'; if self.val and UInt32($0040) = UInt32($0040) then res += 'LIGHTING_BIT+'; if self.val and UInt32($0080) = UInt32($0080) then res += 'FOG_BIT+'; if self.val and UInt32($0100) = UInt32($0100) then res += 'DEPTH_BUFFER_BIT+'; if self.val and UInt32($0200) = UInt32($0200) then res += 'ACCUM_BUFFER_BIT+'; if self.val and UInt32($0400) = UInt32($0400) then res += 'STENCIL_BUFFER_BIT+'; if self.val and UInt32($0800) = UInt32($0800) then res += 'VIEWPORT_BIT+'; if self.val and UInt32($1000) = UInt32($1000) then res += 'TRANSFORM_BIT+'; if self.val and UInt32($2000) = UInt32($2000) then res += 'ENABLE_BIT+'; if self.val and UInt32($4000) = UInt32($4000) then res += 'COLOR_BUFFER_BIT+'; if self.val and UInt32($8000) = UInt32($8000) then res += 'HINT_BIT+'; if self.val and UInt32($10000) = UInt32($10000) then res += 'EVAL_BIT+'; if self.val and UInt32($20000) = UInt32($20000) then res += 'LIST_BIT+'; if self.val and UInt32($40000) = UInt32($40000) then res += 'TEXTURE_BIT+'; if self.val and UInt32($80000) = UInt32($80000) then res += 'SCISSOR_BIT+'; if self.val and UInt32($20000000) = UInt32($20000000) then res += 'MULTISAMPLE_BIT+'; if self.val and UInt32($20000000) = UInt32($20000000) then res += 'MULTISAMPLE_BIT_3DFX+'; if self.val and UInt32($20000000) = UInt32($20000000) then res += 'MULTISAMPLE_BIT_ARB+'; if self.val and UInt32($20000000) = UInt32($20000000) then res += 'MULTISAMPLE_BIT_EXT+'; if self.val and UInt32($FFFFFFFF) = UInt32($FFFFFFFF) then res += 'ALL_ATTRIB_BITS+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'AttribMask[{self.val}]'; end; end; AttributeType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property INT: AttributeType read new AttributeType($1404); public static property UNSIGNED_INT: AttributeType read new AttributeType($1405); public static property FLOAT: AttributeType read new AttributeType($1406); public static property DOUBLE: AttributeType read new AttributeType($140A); public static property INT64_ARB: AttributeType read new AttributeType($140E); public static property INT64_NV: AttributeType read new AttributeType($140E); public static property UNSIGNED_INT64_ARB: AttributeType read new AttributeType($140F); public static property UNSIGNED_INT64_NV: AttributeType read new AttributeType($140F); public static property FLOAT_VEC2: AttributeType read new AttributeType($8B50); public static property FLOAT_VEC2_ARB: AttributeType read new AttributeType($8B50); public static property FLOAT_VEC3: AttributeType read new AttributeType($8B51); public static property FLOAT_VEC3_ARB: AttributeType read new AttributeType($8B51); public static property FLOAT_VEC4: AttributeType read new AttributeType($8B52); public static property FLOAT_VEC4_ARB: AttributeType read new AttributeType($8B52); public static property INT_VEC2: AttributeType read new AttributeType($8B53); public static property INT_VEC2_ARB: AttributeType read new AttributeType($8B53); public static property INT_VEC3: AttributeType read new AttributeType($8B54); public static property INT_VEC3_ARB: AttributeType read new AttributeType($8B54); public static property INT_VEC4: AttributeType read new AttributeType($8B55); public static property INT_VEC4_ARB: AttributeType read new AttributeType($8B55); public static property BOOL: AttributeType read new AttributeType($8B56); public static property BOOL_ARB: AttributeType read new AttributeType($8B56); public static property BOOL_VEC2: AttributeType read new AttributeType($8B57); public static property BOOL_VEC2_ARB: AttributeType read new AttributeType($8B57); public static property BOOL_VEC3: AttributeType read new AttributeType($8B58); public static property BOOL_VEC3_ARB: AttributeType read new AttributeType($8B58); public static property BOOL_VEC4: AttributeType read new AttributeType($8B59); public static property BOOL_VEC4_ARB: AttributeType read new AttributeType($8B59); public static property FLOAT_MAT2: AttributeType read new AttributeType($8B5A); public static property FLOAT_MAT2_ARB: AttributeType read new AttributeType($8B5A); public static property FLOAT_MAT3: AttributeType read new AttributeType($8B5B); public static property FLOAT_MAT3_ARB: AttributeType read new AttributeType($8B5B); public static property FLOAT_MAT4: AttributeType read new AttributeType($8B5C); public static property FLOAT_MAT4_ARB: AttributeType read new AttributeType($8B5C); public static property SAMPLER_1D: AttributeType read new AttributeType($8B5D); public static property SAMPLER_1D_ARB: AttributeType read new AttributeType($8B5D); public static property SAMPLER_2D: AttributeType read new AttributeType($8B5E); public static property SAMPLER_2D_ARB: AttributeType read new AttributeType($8B5E); public static property SAMPLER_3D: AttributeType read new AttributeType($8B5F); public static property SAMPLER_3D_ARB: AttributeType read new AttributeType($8B5F); public static property SAMPLER_3D_OES: AttributeType read new AttributeType($8B5F); public static property SAMPLER_CUBE: AttributeType read new AttributeType($8B60); public static property SAMPLER_CUBE_ARB: AttributeType read new AttributeType($8B60); public static property SAMPLER_1D_SHADOW: AttributeType read new AttributeType($8B61); public static property SAMPLER_1D_SHADOW_ARB: AttributeType read new AttributeType($8B61); public static property SAMPLER_2D_SHADOW: AttributeType read new AttributeType($8B62); public static property SAMPLER_2D_SHADOW_ARB: AttributeType read new AttributeType($8B62); public static property SAMPLER_2D_SHADOW_EXT: AttributeType read new AttributeType($8B62); public static property SAMPLER_2D_RECT: AttributeType read new AttributeType($8B63); public static property SAMPLER_2D_RECT_ARB: AttributeType read new AttributeType($8B63); public static property SAMPLER_2D_RECT_SHADOW: AttributeType read new AttributeType($8B64); public static property SAMPLER_2D_RECT_SHADOW_ARB: AttributeType read new AttributeType($8B64); public static property FLOAT_MAT2x3: AttributeType read new AttributeType($8B65); public static property FLOAT_MAT2x3_NV: AttributeType read new AttributeType($8B65); public static property FLOAT_MAT2x4: AttributeType read new AttributeType($8B66); public static property FLOAT_MAT2x4_NV: AttributeType read new AttributeType($8B66); public static property FLOAT_MAT3x2: AttributeType read new AttributeType($8B67); public static property FLOAT_MAT3x2_NV: AttributeType read new AttributeType($8B67); public static property FLOAT_MAT3x4: AttributeType read new AttributeType($8B68); public static property FLOAT_MAT3x4_NV: AttributeType read new AttributeType($8B68); public static property FLOAT_MAT4x2: AttributeType read new AttributeType($8B69); public static property FLOAT_MAT4x2_NV: AttributeType read new AttributeType($8B69); public static property FLOAT_MAT4x3: AttributeType read new AttributeType($8B6A); public static property FLOAT_MAT4x3_NV: AttributeType read new AttributeType($8B6A); public static property SAMPLER_BUFFER: AttributeType read new AttributeType($8DC2); public static property SAMPLER_1D_ARRAY_SHADOW: AttributeType read new AttributeType($8DC3); public static property SAMPLER_2D_ARRAY_SHADOW: AttributeType read new AttributeType($8DC4); public static property SAMPLER_CUBE_SHADOW: AttributeType read new AttributeType($8DC5); public static property UNSIGNED_INT_VEC2: AttributeType read new AttributeType($8DC6); public static property UNSIGNED_INT_VEC3: AttributeType read new AttributeType($8DC7); public static property UNSIGNED_INT_VEC4: AttributeType read new AttributeType($8DC8); public static property INT_SAMPLER_1D: AttributeType read new AttributeType($8DC9); public static property INT_SAMPLER_2D: AttributeType read new AttributeType($8DCA); public static property INT_SAMPLER_3D: AttributeType read new AttributeType($8DCB); public static property INT_SAMPLER_CUBE: AttributeType read new AttributeType($8DCC); public static property INT_SAMPLER_2D_RECT: AttributeType read new AttributeType($8DCD); public static property INT_SAMPLER_1D_ARRAY: AttributeType read new AttributeType($8DCE); public static property INT_SAMPLER_2D_ARRAY: AttributeType read new AttributeType($8DCF); public static property INT_SAMPLER_BUFFER: AttributeType read new AttributeType($8DD0); public static property UNSIGNED_INT_SAMPLER_1D: AttributeType read new AttributeType($8DD1); public static property UNSIGNED_INT_SAMPLER_2D: AttributeType read new AttributeType($8DD2); public static property UNSIGNED_INT_SAMPLER_3D: AttributeType read new AttributeType($8DD3); public static property UNSIGNED_INT_SAMPLER_CUBE: AttributeType read new AttributeType($8DD4); public static property UNSIGNED_INT_SAMPLER_2D_RECT: AttributeType read new AttributeType($8DD5); public static property UNSIGNED_INT_SAMPLER_1D_ARRAY: AttributeType read new AttributeType($8DD6); public static property UNSIGNED_INT_SAMPLER_2D_ARRAY: AttributeType read new AttributeType($8DD7); public static property UNSIGNED_INT_SAMPLER_BUFFER: AttributeType read new AttributeType($8DD8); public static property DOUBLE_MAT2: AttributeType read new AttributeType($8F46); public static property DOUBLE_MAT3: AttributeType read new AttributeType($8F47); public static property DOUBLE_MAT4: AttributeType read new AttributeType($8F48); public static property DOUBLE_MAT2x3: AttributeType read new AttributeType($8F49); public static property DOUBLE_MAT2x4: AttributeType read new AttributeType($8F4A); public static property DOUBLE_MAT3x2: AttributeType read new AttributeType($8F4B); public static property DOUBLE_MAT3x4: AttributeType read new AttributeType($8F4C); public static property DOUBLE_MAT4x2: AttributeType read new AttributeType($8F4D); public static property DOUBLE_MAT4x3: AttributeType read new AttributeType($8F4E); public static property INT64_VEC2_ARB: AttributeType read new AttributeType($8FE9); public static property INT64_VEC3_ARB: AttributeType read new AttributeType($8FEA); public static property INT64_VEC4_ARB: AttributeType read new AttributeType($8FEB); public static property UNSIGNED_INT64_VEC2_ARB: AttributeType read new AttributeType($8FF5); public static property UNSIGNED_INT64_VEC3_ARB: AttributeType read new AttributeType($8FF6); public static property UNSIGNED_INT64_VEC4_ARB: AttributeType read new AttributeType($8FF7); public static property DOUBLE_VEC2: AttributeType read new AttributeType($8FFC); public static property DOUBLE_VEC3: AttributeType read new AttributeType($8FFD); public static property DOUBLE_VEC4: AttributeType read new AttributeType($8FFE); public static property SAMPLER_CUBE_MAP_ARRAY: AttributeType read new AttributeType($900C); public static property SAMPLER_CUBE_MAP_ARRAY_SHADOW: AttributeType read new AttributeType($900D); public static property INT_SAMPLER_CUBE_MAP_ARRAY: AttributeType read new AttributeType($900E); public static property UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY: AttributeType read new AttributeType($900F); public static property IMAGE_1D: AttributeType read new AttributeType($904C); public static property IMAGE_2D: AttributeType read new AttributeType($904D); public static property IMAGE_3D: AttributeType read new AttributeType($904E); public static property IMAGE_2D_RECT: AttributeType read new AttributeType($904F); public static property IMAGE_CUBE: AttributeType read new AttributeType($9050); public static property IMAGE_BUFFER: AttributeType read new AttributeType($9051); public static property IMAGE_1D_ARRAY: AttributeType read new AttributeType($9052); public static property IMAGE_2D_ARRAY: AttributeType read new AttributeType($9053); public static property IMAGE_CUBE_MAP_ARRAY: AttributeType read new AttributeType($9054); public static property IMAGE_2D_MULTISAMPLE: AttributeType read new AttributeType($9055); public static property IMAGE_2D_MULTISAMPLE_ARRAY: AttributeType read new AttributeType($9056); public static property INT_IMAGE_1D: AttributeType read new AttributeType($9057); public static property INT_IMAGE_2D: AttributeType read new AttributeType($9058); public static property INT_IMAGE_3D: AttributeType read new AttributeType($9059); public static property INT_IMAGE_2D_RECT: AttributeType read new AttributeType($905A); public static property INT_IMAGE_CUBE: AttributeType read new AttributeType($905B); public static property INT_IMAGE_BUFFER: AttributeType read new AttributeType($905C); public static property INT_IMAGE_1D_ARRAY: AttributeType read new AttributeType($905D); public static property INT_IMAGE_2D_ARRAY: AttributeType read new AttributeType($905E); public static property INT_IMAGE_CUBE_MAP_ARRAY: AttributeType read new AttributeType($905F); public static property INT_IMAGE_2D_MULTISAMPLE: AttributeType read new AttributeType($9060); public static property INT_IMAGE_2D_MULTISAMPLE_ARRAY: AttributeType read new AttributeType($9061); public static property UNSIGNED_INT_IMAGE_1D: AttributeType read new AttributeType($9062); public static property UNSIGNED_INT_IMAGE_2D: AttributeType read new AttributeType($9063); public static property UNSIGNED_INT_IMAGE_3D: AttributeType read new AttributeType($9064); public static property UNSIGNED_INT_IMAGE_2D_RECT: AttributeType read new AttributeType($9065); public static property UNSIGNED_INT_IMAGE_CUBE: AttributeType read new AttributeType($9066); public static property UNSIGNED_INT_IMAGE_BUFFER: AttributeType read new AttributeType($9067); public static property UNSIGNED_INT_IMAGE_1D_ARRAY: AttributeType read new AttributeType($9068); public static property UNSIGNED_INT_IMAGE_2D_ARRAY: AttributeType read new AttributeType($9069); public static property UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY: AttributeType read new AttributeType($906A); public static property UNSIGNED_INT_IMAGE_2D_MULTISAMPLE: AttributeType read new AttributeType($906B); public static property UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY: AttributeType read new AttributeType($906C); public static property SAMPLER_2D_MULTISAMPLE: AttributeType read new AttributeType($9108); public static property INT_SAMPLER_2D_MULTISAMPLE: AttributeType read new AttributeType($9109); public static property UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE: AttributeType read new AttributeType($910A); public static property SAMPLER_2D_MULTISAMPLE_ARRAY: AttributeType read new AttributeType($910B); public static property INT_SAMPLER_2D_MULTISAMPLE_ARRAY: AttributeType read new AttributeType($910C); public static property UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: AttributeType read new AttributeType($910D); public function ToString: string; override; begin if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else if self.val = UInt32($140E) then Result := 'INT64_ARB' else if self.val = UInt32($140E) then Result := 'INT64_NV' else if self.val = UInt32($140F) then Result := 'UNSIGNED_INT64_ARB' else if self.val = UInt32($140F) then Result := 'UNSIGNED_INT64_NV' else if self.val = UInt32($8B50) then Result := 'FLOAT_VEC2' else if self.val = UInt32($8B50) then Result := 'FLOAT_VEC2_ARB' else if self.val = UInt32($8B51) then Result := 'FLOAT_VEC3' else if self.val = UInt32($8B51) then Result := 'FLOAT_VEC3_ARB' else if self.val = UInt32($8B52) then Result := 'FLOAT_VEC4' else if self.val = UInt32($8B52) then Result := 'FLOAT_VEC4_ARB' else if self.val = UInt32($8B53) then Result := 'INT_VEC2' else if self.val = UInt32($8B53) then Result := 'INT_VEC2_ARB' else if self.val = UInt32($8B54) then Result := 'INT_VEC3' else if self.val = UInt32($8B54) then Result := 'INT_VEC3_ARB' else if self.val = UInt32($8B55) then Result := 'INT_VEC4' else if self.val = UInt32($8B55) then Result := 'INT_VEC4_ARB' else if self.val = UInt32($8B56) then Result := 'BOOL' else if self.val = UInt32($8B56) then Result := 'BOOL_ARB' else if self.val = UInt32($8B57) then Result := 'BOOL_VEC2' else if self.val = UInt32($8B57) then Result := 'BOOL_VEC2_ARB' else if self.val = UInt32($8B58) then Result := 'BOOL_VEC3' else if self.val = UInt32($8B58) then Result := 'BOOL_VEC3_ARB' else if self.val = UInt32($8B59) then Result := 'BOOL_VEC4' else if self.val = UInt32($8B59) then Result := 'BOOL_VEC4_ARB' else if self.val = UInt32($8B5A) then Result := 'FLOAT_MAT2' else if self.val = UInt32($8B5A) then Result := 'FLOAT_MAT2_ARB' else if self.val = UInt32($8B5B) then Result := 'FLOAT_MAT3' else if self.val = UInt32($8B5B) then Result := 'FLOAT_MAT3_ARB' else if self.val = UInt32($8B5C) then Result := 'FLOAT_MAT4' else if self.val = UInt32($8B5C) then Result := 'FLOAT_MAT4_ARB' else if self.val = UInt32($8B5D) then Result := 'SAMPLER_1D' else if self.val = UInt32($8B5D) then Result := 'SAMPLER_1D_ARB' else if self.val = UInt32($8B5E) then Result := 'SAMPLER_2D' else if self.val = UInt32($8B5E) then Result := 'SAMPLER_2D_ARB' else if self.val = UInt32($8B5F) then Result := 'SAMPLER_3D' else if self.val = UInt32($8B5F) then Result := 'SAMPLER_3D_ARB' else if self.val = UInt32($8B5F) then Result := 'SAMPLER_3D_OES' else if self.val = UInt32($8B60) then Result := 'SAMPLER_CUBE' else if self.val = UInt32($8B60) then Result := 'SAMPLER_CUBE_ARB' else if self.val = UInt32($8B61) then Result := 'SAMPLER_1D_SHADOW' else if self.val = UInt32($8B61) then Result := 'SAMPLER_1D_SHADOW_ARB' else if self.val = UInt32($8B62) then Result := 'SAMPLER_2D_SHADOW' else if self.val = UInt32($8B62) then Result := 'SAMPLER_2D_SHADOW_ARB' else if self.val = UInt32($8B62) then Result := 'SAMPLER_2D_SHADOW_EXT' else if self.val = UInt32($8B63) then Result := 'SAMPLER_2D_RECT' else if self.val = UInt32($8B63) then Result := 'SAMPLER_2D_RECT_ARB' else if self.val = UInt32($8B64) then Result := 'SAMPLER_2D_RECT_SHADOW' else if self.val = UInt32($8B64) then Result := 'SAMPLER_2D_RECT_SHADOW_ARB' else if self.val = UInt32($8B65) then Result := 'FLOAT_MAT2x3' else if self.val = UInt32($8B65) then Result := 'FLOAT_MAT2x3_NV' else if self.val = UInt32($8B66) then Result := 'FLOAT_MAT2x4' else if self.val = UInt32($8B66) then Result := 'FLOAT_MAT2x4_NV' else if self.val = UInt32($8B67) then Result := 'FLOAT_MAT3x2' else if self.val = UInt32($8B67) then Result := 'FLOAT_MAT3x2_NV' else if self.val = UInt32($8B68) then Result := 'FLOAT_MAT3x4' else if self.val = UInt32($8B68) then Result := 'FLOAT_MAT3x4_NV' else if self.val = UInt32($8B69) then Result := 'FLOAT_MAT4x2' else if self.val = UInt32($8B69) then Result := 'FLOAT_MAT4x2_NV' else if self.val = UInt32($8B6A) then Result := 'FLOAT_MAT4x3' else if self.val = UInt32($8B6A) then Result := 'FLOAT_MAT4x3_NV' else if self.val = UInt32($8DC2) then Result := 'SAMPLER_BUFFER' else if self.val = UInt32($8DC3) then Result := 'SAMPLER_1D_ARRAY_SHADOW' else if self.val = UInt32($8DC4) then Result := 'SAMPLER_2D_ARRAY_SHADOW' else if self.val = UInt32($8DC5) then Result := 'SAMPLER_CUBE_SHADOW' else if self.val = UInt32($8DC6) then Result := 'UNSIGNED_INT_VEC2' else if self.val = UInt32($8DC7) then Result := 'UNSIGNED_INT_VEC3' else if self.val = UInt32($8DC8) then Result := 'UNSIGNED_INT_VEC4' else if self.val = UInt32($8DC9) then Result := 'INT_SAMPLER_1D' else if self.val = UInt32($8DCA) then Result := 'INT_SAMPLER_2D' else if self.val = UInt32($8DCB) then Result := 'INT_SAMPLER_3D' else if self.val = UInt32($8DCC) then Result := 'INT_SAMPLER_CUBE' else if self.val = UInt32($8DCD) then Result := 'INT_SAMPLER_2D_RECT' else if self.val = UInt32($8DCE) then Result := 'INT_SAMPLER_1D_ARRAY' else if self.val = UInt32($8DCF) then Result := 'INT_SAMPLER_2D_ARRAY' else if self.val = UInt32($8DD0) then Result := 'INT_SAMPLER_BUFFER' else if self.val = UInt32($8DD1) then Result := 'UNSIGNED_INT_SAMPLER_1D' else if self.val = UInt32($8DD2) then Result := 'UNSIGNED_INT_SAMPLER_2D' else if self.val = UInt32($8DD3) then Result := 'UNSIGNED_INT_SAMPLER_3D' else if self.val = UInt32($8DD4) then Result := 'UNSIGNED_INT_SAMPLER_CUBE' else if self.val = UInt32($8DD5) then Result := 'UNSIGNED_INT_SAMPLER_2D_RECT' else if self.val = UInt32($8DD6) then Result := 'UNSIGNED_INT_SAMPLER_1D_ARRAY' else if self.val = UInt32($8DD7) then Result := 'UNSIGNED_INT_SAMPLER_2D_ARRAY' else if self.val = UInt32($8DD8) then Result := 'UNSIGNED_INT_SAMPLER_BUFFER' else if self.val = UInt32($8F46) then Result := 'DOUBLE_MAT2' else if self.val = UInt32($8F47) then Result := 'DOUBLE_MAT3' else if self.val = UInt32($8F48) then Result := 'DOUBLE_MAT4' else if self.val = UInt32($8F49) then Result := 'DOUBLE_MAT2x3' else if self.val = UInt32($8F4A) then Result := 'DOUBLE_MAT2x4' else if self.val = UInt32($8F4B) then Result := 'DOUBLE_MAT3x2' else if self.val = UInt32($8F4C) then Result := 'DOUBLE_MAT3x4' else if self.val = UInt32($8F4D) then Result := 'DOUBLE_MAT4x2' else if self.val = UInt32($8F4E) then Result := 'DOUBLE_MAT4x3' else if self.val = UInt32($8FE9) then Result := 'INT64_VEC2_ARB' else if self.val = UInt32($8FEA) then Result := 'INT64_VEC3_ARB' else if self.val = UInt32($8FEB) then Result := 'INT64_VEC4_ARB' else if self.val = UInt32($8FF5) then Result := 'UNSIGNED_INT64_VEC2_ARB' else if self.val = UInt32($8FF6) then Result := 'UNSIGNED_INT64_VEC3_ARB' else if self.val = UInt32($8FF7) then Result := 'UNSIGNED_INT64_VEC4_ARB' else if self.val = UInt32($8FFC) then Result := 'DOUBLE_VEC2' else if self.val = UInt32($8FFD) then Result := 'DOUBLE_VEC3' else if self.val = UInt32($8FFE) then Result := 'DOUBLE_VEC4' else if self.val = UInt32($900C) then Result := 'SAMPLER_CUBE_MAP_ARRAY' else if self.val = UInt32($900D) then Result := 'SAMPLER_CUBE_MAP_ARRAY_SHADOW' else if self.val = UInt32($900E) then Result := 'INT_SAMPLER_CUBE_MAP_ARRAY' else if self.val = UInt32($900F) then Result := 'UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY' else if self.val = UInt32($904C) then Result := 'IMAGE_1D' else if self.val = UInt32($904D) then Result := 'IMAGE_2D' else if self.val = UInt32($904E) then Result := 'IMAGE_3D' else if self.val = UInt32($904F) then Result := 'IMAGE_2D_RECT' else if self.val = UInt32($9050) then Result := 'IMAGE_CUBE' else if self.val = UInt32($9051) then Result := 'IMAGE_BUFFER' else if self.val = UInt32($9052) then Result := 'IMAGE_1D_ARRAY' else if self.val = UInt32($9053) then Result := 'IMAGE_2D_ARRAY' else if self.val = UInt32($9054) then Result := 'IMAGE_CUBE_MAP_ARRAY' else if self.val = UInt32($9055) then Result := 'IMAGE_2D_MULTISAMPLE' else if self.val = UInt32($9056) then Result := 'IMAGE_2D_MULTISAMPLE_ARRAY' else if self.val = UInt32($9057) then Result := 'INT_IMAGE_1D' else if self.val = UInt32($9058) then Result := 'INT_IMAGE_2D' else if self.val = UInt32($9059) then Result := 'INT_IMAGE_3D' else if self.val = UInt32($905A) then Result := 'INT_IMAGE_2D_RECT' else if self.val = UInt32($905B) then Result := 'INT_IMAGE_CUBE' else if self.val = UInt32($905C) then Result := 'INT_IMAGE_BUFFER' else if self.val = UInt32($905D) then Result := 'INT_IMAGE_1D_ARRAY' else if self.val = UInt32($905E) then Result := 'INT_IMAGE_2D_ARRAY' else if self.val = UInt32($905F) then Result := 'INT_IMAGE_CUBE_MAP_ARRAY' else if self.val = UInt32($9060) then Result := 'INT_IMAGE_2D_MULTISAMPLE' else if self.val = UInt32($9061) then Result := 'INT_IMAGE_2D_MULTISAMPLE_ARRAY' else if self.val = UInt32($9062) then Result := 'UNSIGNED_INT_IMAGE_1D' else if self.val = UInt32($9063) then Result := 'UNSIGNED_INT_IMAGE_2D' else if self.val = UInt32($9064) then Result := 'UNSIGNED_INT_IMAGE_3D' else if self.val = UInt32($9065) then Result := 'UNSIGNED_INT_IMAGE_2D_RECT' else if self.val = UInt32($9066) then Result := 'UNSIGNED_INT_IMAGE_CUBE' else if self.val = UInt32($9067) then Result := 'UNSIGNED_INT_IMAGE_BUFFER' else if self.val = UInt32($9068) then Result := 'UNSIGNED_INT_IMAGE_1D_ARRAY' else if self.val = UInt32($9069) then Result := 'UNSIGNED_INT_IMAGE_2D_ARRAY' else if self.val = UInt32($906A) then Result := 'UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY' else if self.val = UInt32($906B) then Result := 'UNSIGNED_INT_IMAGE_2D_MULTISAMPLE' else if self.val = UInt32($906C) then Result := 'UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY' else if self.val = UInt32($9108) then Result := 'SAMPLER_2D_MULTISAMPLE' else if self.val = UInt32($9109) then Result := 'INT_SAMPLER_2D_MULTISAMPLE' else if self.val = UInt32($910A) then Result := 'UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE' else if self.val = UInt32($910B) then Result := 'SAMPLER_2D_MULTISAMPLE_ARRAY' else if self.val = UInt32($910C) then Result := 'INT_SAMPLER_2D_MULTISAMPLE_ARRAY' else if self.val = UInt32($910D) then Result := 'UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY' else Result := $'AttributeType[{self.val}]'; end; end; BindTransformFeedbackTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TRANSFORM_FEEDBACK: BindTransformFeedbackTarget read new BindTransformFeedbackTarget($8E22); public function ToString: string; override; begin if self.val = UInt32($8E22) then Result := 'TRANSFORM_FEEDBACK' else Result := $'BindTransformFeedbackTarget[{self.val}]'; end; end; BlendingFactor = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ZERO: BlendingFactor read new BlendingFactor($0000); public static property ONE: BlendingFactor read new BlendingFactor($0001); public static property SRC_COLOR: BlendingFactor read new BlendingFactor($0300); public static property ONE_MINUS_SRC_COLOR: BlendingFactor read new BlendingFactor($0301); public static property SRC_ALPHA: BlendingFactor read new BlendingFactor($0302); public static property ONE_MINUS_SRC_ALPHA: BlendingFactor read new BlendingFactor($0303); public static property DST_ALPHA: BlendingFactor read new BlendingFactor($0304); public static property ONE_MINUS_DST_ALPHA: BlendingFactor read new BlendingFactor($0305); public static property DST_COLOR: BlendingFactor read new BlendingFactor($0306); public static property ONE_MINUS_DST_COLOR: BlendingFactor read new BlendingFactor($0307); public static property SRC_ALPHA_SATURATE: BlendingFactor read new BlendingFactor($0308); public static property CONSTANT_COLOR: BlendingFactor read new BlendingFactor($8001); public static property ONE_MINUS_CONSTANT_COLOR: BlendingFactor read new BlendingFactor($8002); public static property CONSTANT_ALPHA: BlendingFactor read new BlendingFactor($8003); public static property ONE_MINUS_CONSTANT_ALPHA: BlendingFactor read new BlendingFactor($8004); public static property SRC1_ALPHA: BlendingFactor read new BlendingFactor($8589); public static property SRC1_COLOR: BlendingFactor read new BlendingFactor($88F9); public static property ONE_MINUS_SRC1_COLOR: BlendingFactor read new BlendingFactor($88FA); public static property ONE_MINUS_SRC1_ALPHA: BlendingFactor read new BlendingFactor($88FB); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'ZERO' else if self.val = UInt32($0001) then Result := 'ONE' else if self.val = UInt32($0300) then Result := 'SRC_COLOR' else if self.val = UInt32($0301) then Result := 'ONE_MINUS_SRC_COLOR' else if self.val = UInt32($0302) then Result := 'SRC_ALPHA' else if self.val = UInt32($0303) then Result := 'ONE_MINUS_SRC_ALPHA' else if self.val = UInt32($0304) then Result := 'DST_ALPHA' else if self.val = UInt32($0305) then Result := 'ONE_MINUS_DST_ALPHA' else if self.val = UInt32($0306) then Result := 'DST_COLOR' else if self.val = UInt32($0307) then Result := 'ONE_MINUS_DST_COLOR' else if self.val = UInt32($0308) then Result := 'SRC_ALPHA_SATURATE' else if self.val = UInt32($8001) then Result := 'CONSTANT_COLOR' else if self.val = UInt32($8002) then Result := 'ONE_MINUS_CONSTANT_COLOR' else if self.val = UInt32($8003) then Result := 'CONSTANT_ALPHA' else if self.val = UInt32($8004) then Result := 'ONE_MINUS_CONSTANT_ALPHA' else if self.val = UInt32($8589) then Result := 'SRC1_ALPHA' else if self.val = UInt32($88F9) then Result := 'SRC1_COLOR' else if self.val = UInt32($88FA) then Result := 'ONE_MINUS_SRC1_COLOR' else if self.val = UInt32($88FB) then Result := 'ONE_MINUS_SRC1_ALPHA' else Result := $'BlendingFactor[{self.val}]'; end; end; BlitFramebufferFilter = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NEAREST: BlitFramebufferFilter read new BlitFramebufferFilter($2600); public static property LINEAR: BlitFramebufferFilter read new BlitFramebufferFilter($2601); public function ToString: string; override; begin if self.val = UInt32($2600) then Result := 'NEAREST' else if self.val = UInt32($2601) then Result := 'LINEAR' else Result := $'BlitFramebufferFilter[{self.val}]'; end; end; Bool = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FALSE: Bool read new Bool($0000); public static property TRUE: Bool read new Bool($0001); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'FALSE' else if self.val = UInt32($0001) then Result := 'TRUE' else Result := $'Bool[{self.val}]'; end; public static function operator implicit(b: Bool): boolean := b.val<>Bool.FALSE.val; public static function operator implicit(b: boolean): Bool := new Bool(UInt32(b)); public static function operator not(b: Bool): Bool := b.val=Bool.FALSE.val ? Bool.TRUE : Bool.FALSE; end; Buffer = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property COLOR: Buffer read new Buffer($1800); public static property DEPTH: Buffer read new Buffer($1801); public static property STENCIL: Buffer read new Buffer($1802); public function ToString: string; override; begin if self.val = UInt32($1800) then Result := 'COLOR' else if self.val = UInt32($1801) then Result := 'DEPTH' else if self.val = UInt32($1802) then Result := 'STENCIL' else Result := $'Buffer[{self.val}]'; end; end; BufferStorageMask = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property MAP_READ_BIT: BufferStorageMask read new BufferStorageMask($0001); public static property MAP_READ_BIT_EXT: BufferStorageMask read new BufferStorageMask($0001); public static property MAP_WRITE_BIT: BufferStorageMask read new BufferStorageMask($0002); public static property MAP_WRITE_BIT_EXT: BufferStorageMask read new BufferStorageMask($0002); public static property MAP_PERSISTENT_BIT: BufferStorageMask read new BufferStorageMask($0040); public static property MAP_PERSISTENT_BIT_EXT: BufferStorageMask read new BufferStorageMask($0040); public static property MAP_COHERENT_BIT: BufferStorageMask read new BufferStorageMask($0080); public static property MAP_COHERENT_BIT_EXT: BufferStorageMask read new BufferStorageMask($0080); public static property DYNAMIC_STORAGE_BIT: BufferStorageMask read new BufferStorageMask($0100); public static property DYNAMIC_STORAGE_BIT_EXT: BufferStorageMask read new BufferStorageMask($0100); public static property CLIENT_STORAGE_BIT: BufferStorageMask read new BufferStorageMask($0200); public static property CLIENT_STORAGE_BIT_EXT: BufferStorageMask read new BufferStorageMask($0200); public static property SPARSE_STORAGE_BIT_ARB: BufferStorageMask read new BufferStorageMask($0400); public static property LGPU_SEPARATE_STORAGE_BIT_NVX: BufferStorageMask read new BufferStorageMask($0800); public static property PER_GPU_STORAGE_BIT_NV: BufferStorageMask read new BufferStorageMask($0800); public static property EXTERNAL_STORAGE_BIT_NVX: BufferStorageMask read new BufferStorageMask($2000); public static function operator+(f1,f2: BufferStorageMask) := new BufferStorageMask(f1.val or f2.val); public static function operator or(f1,f2: BufferStorageMask) := f1+f2; public property HAS_FLAG_MAP_READ_BIT: boolean read self.val and $0001 <> 0; public property HAS_FLAG_MAP_READ_BIT_EXT: boolean read self.val and $0001 <> 0; public property HAS_FLAG_MAP_WRITE_BIT: boolean read self.val and $0002 <> 0; public property HAS_FLAG_MAP_WRITE_BIT_EXT: boolean read self.val and $0002 <> 0; public property HAS_FLAG_MAP_PERSISTENT_BIT: boolean read self.val and $0040 <> 0; public property HAS_FLAG_MAP_PERSISTENT_BIT_EXT: boolean read self.val and $0040 <> 0; public property HAS_FLAG_MAP_COHERENT_BIT: boolean read self.val and $0080 <> 0; public property HAS_FLAG_MAP_COHERENT_BIT_EXT: boolean read self.val and $0080 <> 0; public property HAS_FLAG_DYNAMIC_STORAGE_BIT: boolean read self.val and $0100 <> 0; public property HAS_FLAG_DYNAMIC_STORAGE_BIT_EXT: boolean read self.val and $0100 <> 0; public property HAS_FLAG_CLIENT_STORAGE_BIT: boolean read self.val and $0200 <> 0; public property HAS_FLAG_CLIENT_STORAGE_BIT_EXT: boolean read self.val and $0200 <> 0; public property HAS_FLAG_SPARSE_STORAGE_BIT_ARB: boolean read self.val and $0400 <> 0; public property HAS_FLAG_LGPU_SEPARATE_STORAGE_BIT_NVX: boolean read self.val and $0800 <> 0; public property HAS_FLAG_PER_GPU_STORAGE_BIT_NV: boolean read self.val and $0800 <> 0; public property HAS_FLAG_EXTERNAL_STORAGE_BIT_NVX: boolean read self.val and $2000 <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0001) = UInt32($0001) then res += 'MAP_READ_BIT+'; if self.val and UInt32($0001) = UInt32($0001) then res += 'MAP_READ_BIT_EXT+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'MAP_WRITE_BIT+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'MAP_WRITE_BIT_EXT+'; if self.val and UInt32($0040) = UInt32($0040) then res += 'MAP_PERSISTENT_BIT+'; if self.val and UInt32($0040) = UInt32($0040) then res += 'MAP_PERSISTENT_BIT_EXT+'; if self.val and UInt32($0080) = UInt32($0080) then res += 'MAP_COHERENT_BIT+'; if self.val and UInt32($0080) = UInt32($0080) then res += 'MAP_COHERENT_BIT_EXT+'; if self.val and UInt32($0100) = UInt32($0100) then res += 'DYNAMIC_STORAGE_BIT+'; if self.val and UInt32($0100) = UInt32($0100) then res += 'DYNAMIC_STORAGE_BIT_EXT+'; if self.val and UInt32($0200) = UInt32($0200) then res += 'CLIENT_STORAGE_BIT+'; if self.val and UInt32($0200) = UInt32($0200) then res += 'CLIENT_STORAGE_BIT_EXT+'; if self.val and UInt32($0400) = UInt32($0400) then res += 'SPARSE_STORAGE_BIT_ARB+'; if self.val and UInt32($0800) = UInt32($0800) then res += 'LGPU_SEPARATE_STORAGE_BIT_NVX+'; if self.val and UInt32($0800) = UInt32($0800) then res += 'PER_GPU_STORAGE_BIT_NV+'; if self.val and UInt32($2000) = UInt32($2000) then res += 'EXTERNAL_STORAGE_BIT_NVX+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'BufferStorageMask[{self.val}]'; end; end; BufferStorageTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ARRAY_BUFFER: BufferStorageTarget read new BufferStorageTarget($8892); public static property ELEMENT_ARRAY_BUFFER: BufferStorageTarget read new BufferStorageTarget($8893); public static property PIXEL_PACK_BUFFER: BufferStorageTarget read new BufferStorageTarget($88EB); public static property PIXEL_UNPACK_BUFFER: BufferStorageTarget read new BufferStorageTarget($88EC); public static property UNIFORM_BUFFER: BufferStorageTarget read new BufferStorageTarget($8A11); public static property TEXTURE_BUFFER: BufferStorageTarget read new BufferStorageTarget($8C2A); public static property TRANSFORM_FEEDBACK_BUFFER: BufferStorageTarget read new BufferStorageTarget($8C8E); public static property COPY_READ_BUFFER: BufferStorageTarget read new BufferStorageTarget($8F36); public static property COPY_WRITE_BUFFER: BufferStorageTarget read new BufferStorageTarget($8F37); public static property DRAW_INDIRECT_BUFFER: BufferStorageTarget read new BufferStorageTarget($8F3F); public static property SHADER_STORAGE_BUFFER: BufferStorageTarget read new BufferStorageTarget($90D2); public static property DISPATCH_INDIRECT_BUFFER: BufferStorageTarget read new BufferStorageTarget($90EE); public static property QUERY_BUFFER: BufferStorageTarget read new BufferStorageTarget($9192); public static property ATOMIC_COUNTER_BUFFER: BufferStorageTarget read new BufferStorageTarget($92C0); public function ToString: string; override; begin if self.val = UInt32($8892) then Result := 'ARRAY_BUFFER' else if self.val = UInt32($8893) then Result := 'ELEMENT_ARRAY_BUFFER' else if self.val = UInt32($88EB) then Result := 'PIXEL_PACK_BUFFER' else if self.val = UInt32($88EC) then Result := 'PIXEL_UNPACK_BUFFER' else if self.val = UInt32($8A11) then Result := 'UNIFORM_BUFFER' else if self.val = UInt32($8C2A) then Result := 'TEXTURE_BUFFER' else if self.val = UInt32($8C8E) then Result := 'TRANSFORM_FEEDBACK_BUFFER' else if self.val = UInt32($8F36) then Result := 'COPY_READ_BUFFER' else if self.val = UInt32($8F37) then Result := 'COPY_WRITE_BUFFER' else if self.val = UInt32($8F3F) then Result := 'DRAW_INDIRECT_BUFFER' else if self.val = UInt32($90D2) then Result := 'SHADER_STORAGE_BUFFER' else if self.val = UInt32($90EE) then Result := 'DISPATCH_INDIRECT_BUFFER' else if self.val = UInt32($9192) then Result := 'QUERY_BUFFER' else if self.val = UInt32($92C0) then Result := 'ATOMIC_COUNTER_BUFFER' else Result := $'BufferStorageTarget[{self.val}]'; end; end; BufferTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PARAMETER_BUFFER: BufferTarget read new BufferTarget($80EE); public static property ARRAY_BUFFER: BufferTarget read new BufferTarget($8892); public static property ELEMENT_ARRAY_BUFFER: BufferTarget read new BufferTarget($8893); public static property PIXEL_PACK_BUFFER: BufferTarget read new BufferTarget($88EB); public static property PIXEL_UNPACK_BUFFER: BufferTarget read new BufferTarget($88EC); public static property UNIFORM_BUFFER: BufferTarget read new BufferTarget($8A11); public static property TEXTURE_BUFFER: BufferTarget read new BufferTarget($8C2A); public static property TRANSFORM_FEEDBACK_BUFFER: BufferTarget read new BufferTarget($8C8E); public static property COPY_READ_BUFFER: BufferTarget read new BufferTarget($8F36); public static property COPY_WRITE_BUFFER: BufferTarget read new BufferTarget($8F37); public static property DRAW_INDIRECT_BUFFER: BufferTarget read new BufferTarget($8F3F); public static property SHADER_STORAGE_BUFFER: BufferTarget read new BufferTarget($90D2); public static property DISPATCH_INDIRECT_BUFFER: BufferTarget read new BufferTarget($90EE); public static property QUERY_BUFFER: BufferTarget read new BufferTarget($9192); public static property ATOMIC_COUNTER_BUFFER: BufferTarget read new BufferTarget($92C0); public function ToString: string; override; begin if self.val = UInt32($80EE) then Result := 'PARAMETER_BUFFER' else if self.val = UInt32($8892) then Result := 'ARRAY_BUFFER' else if self.val = UInt32($8893) then Result := 'ELEMENT_ARRAY_BUFFER' else if self.val = UInt32($88EB) then Result := 'PIXEL_PACK_BUFFER' else if self.val = UInt32($88EC) then Result := 'PIXEL_UNPACK_BUFFER' else if self.val = UInt32($8A11) then Result := 'UNIFORM_BUFFER' else if self.val = UInt32($8C2A) then Result := 'TEXTURE_BUFFER' else if self.val = UInt32($8C8E) then Result := 'TRANSFORM_FEEDBACK_BUFFER' else if self.val = UInt32($8F36) then Result := 'COPY_READ_BUFFER' else if self.val = UInt32($8F37) then Result := 'COPY_WRITE_BUFFER' else if self.val = UInt32($8F3F) then Result := 'DRAW_INDIRECT_BUFFER' else if self.val = UInt32($90D2) then Result := 'SHADER_STORAGE_BUFFER' else if self.val = UInt32($90EE) then Result := 'DISPATCH_INDIRECT_BUFFER' else if self.val = UInt32($9192) then Result := 'QUERY_BUFFER' else if self.val = UInt32($92C0) then Result := 'ATOMIC_COUNTER_BUFFER' else Result := $'BufferTarget[{self.val}]'; end; end; ClearBufferMask = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property DEPTH_BUFFER_BIT: ClearBufferMask read new ClearBufferMask($0100); public static property ACCUM_BUFFER_BIT: ClearBufferMask read new ClearBufferMask($0200); public static property STENCIL_BUFFER_BIT: ClearBufferMask read new ClearBufferMask($0400); public static property COLOR_BUFFER_BIT: ClearBufferMask read new ClearBufferMask($4000); public static property COVERAGE_BUFFER_BIT_NV: ClearBufferMask read new ClearBufferMask($8000); public static function operator+(f1,f2: ClearBufferMask) := new ClearBufferMask(f1.val or f2.val); public static function operator or(f1,f2: ClearBufferMask) := f1+f2; public property HAS_FLAG_DEPTH_BUFFER_BIT: boolean read self.val and $0100 <> 0; public property HAS_FLAG_ACCUM_BUFFER_BIT: boolean read self.val and $0200 <> 0; public property HAS_FLAG_STENCIL_BUFFER_BIT: boolean read self.val and $0400 <> 0; public property HAS_FLAG_COLOR_BUFFER_BIT: boolean read self.val and $4000 <> 0; public property HAS_FLAG_COVERAGE_BUFFER_BIT_NV: boolean read self.val and $8000 <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0100) = UInt32($0100) then res += 'DEPTH_BUFFER_BIT+'; if self.val and UInt32($0200) = UInt32($0200) then res += 'ACCUM_BUFFER_BIT+'; if self.val and UInt32($0400) = UInt32($0400) then res += 'STENCIL_BUFFER_BIT+'; if self.val and UInt32($4000) = UInt32($4000) then res += 'COLOR_BUFFER_BIT+'; if self.val and UInt32($8000) = UInt32($8000) then res += 'COVERAGE_BUFFER_BIT_NV+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'ClearBufferMask[{self.val}]'; end; end; ClientAttribMask = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CLIENT_PIXEL_STORE_BIT: ClientAttribMask read new ClientAttribMask($0001); public static property CLIENT_VERTEX_ARRAY_BIT: ClientAttribMask read new ClientAttribMask($0002); public static property CLIENT_ALL_ATTRIB_BITS: ClientAttribMask read new ClientAttribMask($FFFFFFFF); public static function operator+(f1,f2: ClientAttribMask) := new ClientAttribMask(f1.val or f2.val); public static function operator or(f1,f2: ClientAttribMask) := f1+f2; public property HAS_FLAG_CLIENT_PIXEL_STORE_BIT: boolean read self.val and $0001 <> 0; public property HAS_FLAG_CLIENT_VERTEX_ARRAY_BIT: boolean read self.val and $0002 <> 0; public property HAS_FLAG_CLIENT_ALL_ATTRIB_BITS: boolean read self.val and $FFFFFFFF <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0001) = UInt32($0001) then res += 'CLIENT_PIXEL_STORE_BIT+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'CLIENT_VERTEX_ARRAY_BIT+'; if self.val and UInt32($FFFFFFFF) = UInt32($FFFFFFFF) then res += 'CLIENT_ALL_ATTRIB_BITS+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'ClientAttribMask[{self.val}]'; end; end; ClipControlDepth = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NEGATIVE_ONE_TO_ONE: ClipControlDepth read new ClipControlDepth($935E); public static property ZERO_TO_ONE: ClipControlDepth read new ClipControlDepth($935F); public function ToString: string; override; begin if self.val = UInt32($935E) then Result := 'NEGATIVE_ONE_TO_ONE' else if self.val = UInt32($935F) then Result := 'ZERO_TO_ONE' else Result := $'ClipControlDepth[{self.val}]'; end; end; ClipControlOrigin = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property LOWER_LEFT: ClipControlOrigin read new ClipControlOrigin($8CA1); public static property UPPER_LEFT: ClipControlOrigin read new ClipControlOrigin($8CA2); public function ToString: string; override; begin if self.val = UInt32($8CA1) then Result := 'LOWER_LEFT' else if self.val = UInt32($8CA2) then Result := 'UPPER_LEFT' else Result := $'ClipControlOrigin[{self.val}]'; end; end; ClipPlaneName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CLIP_DISTANCE0: ClipPlaneName read new ClipPlaneName($3000); public static property CLIP_PLANE0: ClipPlaneName read new ClipPlaneName($3000); public static property CLIP_DISTANCE1: ClipPlaneName read new ClipPlaneName($3001); public static property CLIP_PLANE1: ClipPlaneName read new ClipPlaneName($3001); public static property CLIP_DISTANCE2: ClipPlaneName read new ClipPlaneName($3002); public static property CLIP_PLANE2: ClipPlaneName read new ClipPlaneName($3002); public static property CLIP_DISTANCE3: ClipPlaneName read new ClipPlaneName($3003); public static property CLIP_PLANE3: ClipPlaneName read new ClipPlaneName($3003); public static property CLIP_DISTANCE4: ClipPlaneName read new ClipPlaneName($3004); public static property CLIP_PLANE4: ClipPlaneName read new ClipPlaneName($3004); public static property CLIP_DISTANCE5: ClipPlaneName read new ClipPlaneName($3005); public static property CLIP_PLANE5: ClipPlaneName read new ClipPlaneName($3005); public static property CLIP_DISTANCE6: ClipPlaneName read new ClipPlaneName($3006); public static property CLIP_DISTANCE7: ClipPlaneName read new ClipPlaneName($3007); public function ToString: string; override; begin if self.val = UInt32($3000) then Result := 'CLIP_DISTANCE0' else if self.val = UInt32($3000) then Result := 'CLIP_PLANE0' else if self.val = UInt32($3001) then Result := 'CLIP_DISTANCE1' else if self.val = UInt32($3001) then Result := 'CLIP_PLANE1' else if self.val = UInt32($3002) then Result := 'CLIP_DISTANCE2' else if self.val = UInt32($3002) then Result := 'CLIP_PLANE2' else if self.val = UInt32($3003) then Result := 'CLIP_DISTANCE3' else if self.val = UInt32($3003) then Result := 'CLIP_PLANE3' else if self.val = UInt32($3004) then Result := 'CLIP_DISTANCE4' else if self.val = UInt32($3004) then Result := 'CLIP_PLANE4' else if self.val = UInt32($3005) then Result := 'CLIP_DISTANCE5' else if self.val = UInt32($3005) then Result := 'CLIP_PLANE5' else if self.val = UInt32($3006) then Result := 'CLIP_DISTANCE6' else if self.val = UInt32($3007) then Result := 'CLIP_DISTANCE7' else Result := $'ClipPlaneName[{self.val}]'; end; end; ColorBuffer = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NONE: ColorBuffer read new ColorBuffer($0000); public static property FRONT_LEFT: ColorBuffer read new ColorBuffer($0400); public static property FRONT_RIGHT: ColorBuffer read new ColorBuffer($0401); public static property BACK_LEFT: ColorBuffer read new ColorBuffer($0402); public static property BACK_RIGHT: ColorBuffer read new ColorBuffer($0403); public static property FRONT: ColorBuffer read new ColorBuffer($0404); public static property BACK: ColorBuffer read new ColorBuffer($0405); public static property LEFT: ColorBuffer read new ColorBuffer($0406); public static property RIGHT: ColorBuffer read new ColorBuffer($0407); public static property FRONT_AND_BACK: ColorBuffer read new ColorBuffer($0408); public static property COLOR_ATTACHMENT0: ColorBuffer read new ColorBuffer($8CE0); public static property COLOR_ATTACHMENT1: ColorBuffer read new ColorBuffer($8CE1); public static property COLOR_ATTACHMENT2: ColorBuffer read new ColorBuffer($8CE2); public static property COLOR_ATTACHMENT3: ColorBuffer read new ColorBuffer($8CE3); public static property COLOR_ATTACHMENT4: ColorBuffer read new ColorBuffer($8CE4); public static property COLOR_ATTACHMENT5: ColorBuffer read new ColorBuffer($8CE5); public static property COLOR_ATTACHMENT6: ColorBuffer read new ColorBuffer($8CE6); public static property COLOR_ATTACHMENT7: ColorBuffer read new ColorBuffer($8CE7); public static property COLOR_ATTACHMENT8: ColorBuffer read new ColorBuffer($8CE8); public static property COLOR_ATTACHMENT9: ColorBuffer read new ColorBuffer($8CE9); public static property COLOR_ATTACHMENT10: ColorBuffer read new ColorBuffer($8CEA); public static property COLOR_ATTACHMENT11: ColorBuffer read new ColorBuffer($8CEB); public static property COLOR_ATTACHMENT12: ColorBuffer read new ColorBuffer($8CEC); public static property COLOR_ATTACHMENT13: ColorBuffer read new ColorBuffer($8CED); public static property COLOR_ATTACHMENT14: ColorBuffer read new ColorBuffer($8CEE); public static property COLOR_ATTACHMENT15: ColorBuffer read new ColorBuffer($8CEF); public static property COLOR_ATTACHMENT16: ColorBuffer read new ColorBuffer($8CF0); public static property COLOR_ATTACHMENT17: ColorBuffer read new ColorBuffer($8CF1); public static property COLOR_ATTACHMENT18: ColorBuffer read new ColorBuffer($8CF2); public static property COLOR_ATTACHMENT19: ColorBuffer read new ColorBuffer($8CF3); public static property COLOR_ATTACHMENT20: ColorBuffer read new ColorBuffer($8CF4); public static property COLOR_ATTACHMENT21: ColorBuffer read new ColorBuffer($8CF5); public static property COLOR_ATTACHMENT22: ColorBuffer read new ColorBuffer($8CF6); public static property COLOR_ATTACHMENT23: ColorBuffer read new ColorBuffer($8CF7); public static property COLOR_ATTACHMENT24: ColorBuffer read new ColorBuffer($8CF8); public static property COLOR_ATTACHMENT25: ColorBuffer read new ColorBuffer($8CF9); public static property COLOR_ATTACHMENT26: ColorBuffer read new ColorBuffer($8CFA); public static property COLOR_ATTACHMENT27: ColorBuffer read new ColorBuffer($8CFB); public static property COLOR_ATTACHMENT28: ColorBuffer read new ColorBuffer($8CFC); public static property COLOR_ATTACHMENT29: ColorBuffer read new ColorBuffer($8CFD); public static property COLOR_ATTACHMENT30: ColorBuffer read new ColorBuffer($8CFE); public static property COLOR_ATTACHMENT31: ColorBuffer read new ColorBuffer($8CFF); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'NONE' else if self.val = UInt32($0400) then Result := 'FRONT_LEFT' else if self.val = UInt32($0401) then Result := 'FRONT_RIGHT' else if self.val = UInt32($0402) then Result := 'BACK_LEFT' else if self.val = UInt32($0403) then Result := 'BACK_RIGHT' else if self.val = UInt32($0404) then Result := 'FRONT' else if self.val = UInt32($0405) then Result := 'BACK' else if self.val = UInt32($0406) then Result := 'LEFT' else if self.val = UInt32($0407) then Result := 'RIGHT' else if self.val = UInt32($0408) then Result := 'FRONT_AND_BACK' else if self.val = UInt32($8CE0) then Result := 'COLOR_ATTACHMENT0' else if self.val = UInt32($8CE1) then Result := 'COLOR_ATTACHMENT1' else if self.val = UInt32($8CE2) then Result := 'COLOR_ATTACHMENT2' else if self.val = UInt32($8CE3) then Result := 'COLOR_ATTACHMENT3' else if self.val = UInt32($8CE4) then Result := 'COLOR_ATTACHMENT4' else if self.val = UInt32($8CE5) then Result := 'COLOR_ATTACHMENT5' else if self.val = UInt32($8CE6) then Result := 'COLOR_ATTACHMENT6' else if self.val = UInt32($8CE7) then Result := 'COLOR_ATTACHMENT7' else if self.val = UInt32($8CE8) then Result := 'COLOR_ATTACHMENT8' else if self.val = UInt32($8CE9) then Result := 'COLOR_ATTACHMENT9' else if self.val = UInt32($8CEA) then Result := 'COLOR_ATTACHMENT10' else if self.val = UInt32($8CEB) then Result := 'COLOR_ATTACHMENT11' else if self.val = UInt32($8CEC) then Result := 'COLOR_ATTACHMENT12' else if self.val = UInt32($8CED) then Result := 'COLOR_ATTACHMENT13' else if self.val = UInt32($8CEE) then Result := 'COLOR_ATTACHMENT14' else if self.val = UInt32($8CEF) then Result := 'COLOR_ATTACHMENT15' else if self.val = UInt32($8CF0) then Result := 'COLOR_ATTACHMENT16' else if self.val = UInt32($8CF1) then Result := 'COLOR_ATTACHMENT17' else if self.val = UInt32($8CF2) then Result := 'COLOR_ATTACHMENT18' else if self.val = UInt32($8CF3) then Result := 'COLOR_ATTACHMENT19' else if self.val = UInt32($8CF4) then Result := 'COLOR_ATTACHMENT20' else if self.val = UInt32($8CF5) then Result := 'COLOR_ATTACHMENT21' else if self.val = UInt32($8CF6) then Result := 'COLOR_ATTACHMENT22' else if self.val = UInt32($8CF7) then Result := 'COLOR_ATTACHMENT23' else if self.val = UInt32($8CF8) then Result := 'COLOR_ATTACHMENT24' else if self.val = UInt32($8CF9) then Result := 'COLOR_ATTACHMENT25' else if self.val = UInt32($8CFA) then Result := 'COLOR_ATTACHMENT26' else if self.val = UInt32($8CFB) then Result := 'COLOR_ATTACHMENT27' else if self.val = UInt32($8CFC) then Result := 'COLOR_ATTACHMENT28' else if self.val = UInt32($8CFD) then Result := 'COLOR_ATTACHMENT29' else if self.val = UInt32($8CFE) then Result := 'COLOR_ATTACHMENT30' else if self.val = UInt32($8CFF) then Result := 'COLOR_ATTACHMENT31' else Result := $'ColorBuffer[{self.val}]'; end; end; ColorMaterialParameter = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property AMBIENT: ColorMaterialParameter read new ColorMaterialParameter($1200); public static property DIFFUSE: ColorMaterialParameter read new ColorMaterialParameter($1201); public static property SPECULAR: ColorMaterialParameter read new ColorMaterialParameter($1202); public static property EMISSION: ColorMaterialParameter read new ColorMaterialParameter($1600); public static property AMBIENT_AND_DIFFUSE: ColorMaterialParameter read new ColorMaterialParameter($1602); public function ToString: string; override; begin if self.val = UInt32($1200) then Result := 'AMBIENT' else if self.val = UInt32($1201) then Result := 'DIFFUSE' else if self.val = UInt32($1202) then Result := 'SPECULAR' else if self.val = UInt32($1600) then Result := 'EMISSION' else if self.val = UInt32($1602) then Result := 'AMBIENT_AND_DIFFUSE' else Result := $'ColorMaterialParameter[{self.val}]'; end; end; ColorPointerType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BYTE: ColorPointerType read new ColorPointerType($1400); public static property UNSIGNED_BYTE: ColorPointerType read new ColorPointerType($1401); public static property UNSIGNED_SHORT: ColorPointerType read new ColorPointerType($1403); public static property UNSIGNED_INT: ColorPointerType read new ColorPointerType($1405); public function ToString: string; override; begin if self.val = UInt32($1400) then Result := 'BYTE' else if self.val = UInt32($1401) then Result := 'UNSIGNED_BYTE' else if self.val = UInt32($1403) then Result := 'UNSIGNED_SHORT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else Result := $'ColorPointerType[{self.val}]'; end; end; ColorTableTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property COLOR_TABLE: ColorTableTarget read new ColorTableTarget($80D0); public static property POST_CONVOLUTION_COLOR_TABLE: ColorTableTarget read new ColorTableTarget($80D1); public static property POST_COLOR_MATRIX_COLOR_TABLE: ColorTableTarget read new ColorTableTarget($80D2); public static property PROXY_COLOR_TABLE: ColorTableTarget read new ColorTableTarget($80D3); public static property PROXY_POST_CONVOLUTION_COLOR_TABLE: ColorTableTarget read new ColorTableTarget($80D4); public static property PROXY_POST_COLOR_MATRIX_COLOR_TABLE: ColorTableTarget read new ColorTableTarget($80D5); public function ToString: string; override; begin if self.val = UInt32($80D0) then Result := 'COLOR_TABLE' else if self.val = UInt32($80D1) then Result := 'POST_CONVOLUTION_COLOR_TABLE' else if self.val = UInt32($80D2) then Result := 'POST_COLOR_MATRIX_COLOR_TABLE' else if self.val = UInt32($80D3) then Result := 'PROXY_COLOR_TABLE' else if self.val = UInt32($80D4) then Result := 'PROXY_POST_CONVOLUTION_COLOR_TABLE' else if self.val = UInt32($80D5) then Result := 'PROXY_POST_COLOR_MATRIX_COLOR_TABLE' else Result := $'ColorTableTarget[{self.val}]'; end; end; ConditionalRenderMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property QUERY_WAIT: ConditionalRenderMode read new ConditionalRenderMode($8E13); public static property QUERY_NO_WAIT: ConditionalRenderMode read new ConditionalRenderMode($8E14); public static property QUERY_BY_REGION_WAIT: ConditionalRenderMode read new ConditionalRenderMode($8E15); public static property QUERY_BY_REGION_NO_WAIT: ConditionalRenderMode read new ConditionalRenderMode($8E16); public static property QUERY_WAIT_INVERTED: ConditionalRenderMode read new ConditionalRenderMode($8E17); public static property QUERY_NO_WAIT_INVERTED: ConditionalRenderMode read new ConditionalRenderMode($8E18); public static property QUERY_BY_REGION_WAIT_INVERTED: ConditionalRenderMode read new ConditionalRenderMode($8E19); public static property QUERY_BY_REGION_NO_WAIT_INVERTED: ConditionalRenderMode read new ConditionalRenderMode($8E1A); public function ToString: string; override; begin if self.val = UInt32($8E13) then Result := 'QUERY_WAIT' else if self.val = UInt32($8E14) then Result := 'QUERY_NO_WAIT' else if self.val = UInt32($8E15) then Result := 'QUERY_BY_REGION_WAIT' else if self.val = UInt32($8E16) then Result := 'QUERY_BY_REGION_NO_WAIT' else if self.val = UInt32($8E17) then Result := 'QUERY_WAIT_INVERTED' else if self.val = UInt32($8E18) then Result := 'QUERY_NO_WAIT_INVERTED' else if self.val = UInt32($8E19) then Result := 'QUERY_BY_REGION_WAIT_INVERTED' else if self.val = UInt32($8E1A) then Result := 'QUERY_BY_REGION_NO_WAIT_INVERTED' else Result := $'ConditionalRenderMode[{self.val}]'; end; end; ConvolutionTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CONVOLUTION_1D: ConvolutionTarget read new ConvolutionTarget($8010); public static property CONVOLUTION_2D: ConvolutionTarget read new ConvolutionTarget($8011); public function ToString: string; override; begin if self.val = UInt32($8010) then Result := 'CONVOLUTION_1D' else if self.val = UInt32($8011) then Result := 'CONVOLUTION_2D' else Result := $'ConvolutionTarget[{self.val}]'; end; end; CopyBufferSubDataTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ARRAY_BUFFER: CopyBufferSubDataTarget read new CopyBufferSubDataTarget($8892); public static property ELEMENT_ARRAY_BUFFER: CopyBufferSubDataTarget read new CopyBufferSubDataTarget($8893); public static property PIXEL_PACK_BUFFER: CopyBufferSubDataTarget read new CopyBufferSubDataTarget($88EB); public static property PIXEL_UNPACK_BUFFER: CopyBufferSubDataTarget read new CopyBufferSubDataTarget($88EC); public static property UNIFORM_BUFFER: CopyBufferSubDataTarget read new CopyBufferSubDataTarget($8A11); public static property TEXTURE_BUFFER: CopyBufferSubDataTarget read new CopyBufferSubDataTarget($8C2A); public static property TRANSFORM_FEEDBACK_BUFFER: CopyBufferSubDataTarget read new CopyBufferSubDataTarget($8C8E); public static property COPY_READ_BUFFER: CopyBufferSubDataTarget read new CopyBufferSubDataTarget($8F36); public static property COPY_WRITE_BUFFER: CopyBufferSubDataTarget read new CopyBufferSubDataTarget($8F37); public static property DRAW_INDIRECT_BUFFER: CopyBufferSubDataTarget read new CopyBufferSubDataTarget($8F3F); public static property SHADER_STORAGE_BUFFER: CopyBufferSubDataTarget read new CopyBufferSubDataTarget($90D2); public static property DISPATCH_INDIRECT_BUFFER: CopyBufferSubDataTarget read new CopyBufferSubDataTarget($90EE); public static property QUERY_BUFFER: CopyBufferSubDataTarget read new CopyBufferSubDataTarget($9192); public static property ATOMIC_COUNTER_BUFFER: CopyBufferSubDataTarget read new CopyBufferSubDataTarget($92C0); public function ToString: string; override; begin if self.val = UInt32($8892) then Result := 'ARRAY_BUFFER' else if self.val = UInt32($8893) then Result := 'ELEMENT_ARRAY_BUFFER' else if self.val = UInt32($88EB) then Result := 'PIXEL_PACK_BUFFER' else if self.val = UInt32($88EC) then Result := 'PIXEL_UNPACK_BUFFER' else if self.val = UInt32($8A11) then Result := 'UNIFORM_BUFFER' else if self.val = UInt32($8C2A) then Result := 'TEXTURE_BUFFER' else if self.val = UInt32($8C8E) then Result := 'TRANSFORM_FEEDBACK_BUFFER' else if self.val = UInt32($8F36) then Result := 'COPY_READ_BUFFER' else if self.val = UInt32($8F37) then Result := 'COPY_WRITE_BUFFER' else if self.val = UInt32($8F3F) then Result := 'DRAW_INDIRECT_BUFFER' else if self.val = UInt32($90D2) then Result := 'SHADER_STORAGE_BUFFER' else if self.val = UInt32($90EE) then Result := 'DISPATCH_INDIRECT_BUFFER' else if self.val = UInt32($9192) then Result := 'QUERY_BUFFER' else if self.val = UInt32($92C0) then Result := 'ATOMIC_COUNTER_BUFFER' else Result := $'CopyBufferSubDataTarget[{self.val}]'; end; end; CopyImageSubDataTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE_1D: CopyImageSubDataTarget read new CopyImageSubDataTarget($0DE0); public static property TEXTURE_2D: CopyImageSubDataTarget read new CopyImageSubDataTarget($0DE1); public static property TEXTURE_3D: CopyImageSubDataTarget read new CopyImageSubDataTarget($806F); public static property TEXTURE_RECTANGLE: CopyImageSubDataTarget read new CopyImageSubDataTarget($84F5); public static property TEXTURE_CUBE_MAP: CopyImageSubDataTarget read new CopyImageSubDataTarget($8513); public static property TEXTURE_1D_ARRAY: CopyImageSubDataTarget read new CopyImageSubDataTarget($8C18); public static property TEXTURE_2D_ARRAY: CopyImageSubDataTarget read new CopyImageSubDataTarget($8C1A); public static property RENDERBUFFER: CopyImageSubDataTarget read new CopyImageSubDataTarget($8D41); public static property TEXTURE_CUBE_MAP_ARRAY: CopyImageSubDataTarget read new CopyImageSubDataTarget($9009); public static property TEXTURE_2D_MULTISAMPLE: CopyImageSubDataTarget read new CopyImageSubDataTarget($9100); public static property TEXTURE_2D_MULTISAMPLE_ARRAY: CopyImageSubDataTarget read new CopyImageSubDataTarget($9102); public function ToString: string; override; begin if self.val = UInt32($0DE0) then Result := 'TEXTURE_1D' else if self.val = UInt32($0DE1) then Result := 'TEXTURE_2D' else if self.val = UInt32($806F) then Result := 'TEXTURE_3D' else if self.val = UInt32($84F5) then Result := 'TEXTURE_RECTANGLE' else if self.val = UInt32($8513) then Result := 'TEXTURE_CUBE_MAP' else if self.val = UInt32($8C18) then Result := 'TEXTURE_1D_ARRAY' else if self.val = UInt32($8C1A) then Result := 'TEXTURE_2D_ARRAY' else if self.val = UInt32($8D41) then Result := 'RENDERBUFFER' else if self.val = UInt32($9009) then Result := 'TEXTURE_CUBE_MAP_ARRAY' else if self.val = UInt32($9100) then Result := 'TEXTURE_2D_MULTISAMPLE' else if self.val = UInt32($9102) then Result := 'TEXTURE_2D_MULTISAMPLE_ARRAY' else Result := $'CopyImageSubDataTarget[{self.val}]'; end; end; CullFaceMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FRONT: CullFaceMode read new CullFaceMode($0404); public static property BACK: CullFaceMode read new CullFaceMode($0405); public static property FRONT_AND_BACK: CullFaceMode read new CullFaceMode($0408); public function ToString: string; override; begin if self.val = UInt32($0404) then Result := 'FRONT' else if self.val = UInt32($0405) then Result := 'BACK' else if self.val = UInt32($0408) then Result := 'FRONT_AND_BACK' else Result := $'CullFaceMode[{self.val}]'; end; end; DebugSeverity = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property DONT_CARE: DebugSeverity read new DebugSeverity($1100); public static property DEBUG_SEVERITY_NOTIFICATION: DebugSeverity read new DebugSeverity($826B); public static property DEBUG_SEVERITY_HIGH: DebugSeverity read new DebugSeverity($9146); public static property DEBUG_SEVERITY_MEDIUM: DebugSeverity read new DebugSeverity($9147); public static property DEBUG_SEVERITY_LOW: DebugSeverity read new DebugSeverity($9148); public function ToString: string; override; begin if self.val = UInt32($1100) then Result := 'DONT_CARE' else if self.val = UInt32($826B) then Result := 'DEBUG_SEVERITY_NOTIFICATION' else if self.val = UInt32($9146) then Result := 'DEBUG_SEVERITY_HIGH' else if self.val = UInt32($9147) then Result := 'DEBUG_SEVERITY_MEDIUM' else if self.val = UInt32($9148) then Result := 'DEBUG_SEVERITY_LOW' else Result := $'DebugSeverity[{self.val}]'; end; end; DebugSource = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property DONT_CARE: DebugSource read new DebugSource($1100); public static property DEBUG_SOURCE_API: DebugSource read new DebugSource($8246); public static property DEBUG_SOURCE_WINDOW_SYSTEM: DebugSource read new DebugSource($8247); public static property DEBUG_SOURCE_SHADER_COMPILER: DebugSource read new DebugSource($8248); public static property DEBUG_SOURCE_THIRD_PARTY: DebugSource read new DebugSource($8249); public static property DEBUG_SOURCE_APPLICATION: DebugSource read new DebugSource($824A); public static property DEBUG_SOURCE_OTHER: DebugSource read new DebugSource($824B); public function ToString: string; override; begin if self.val = UInt32($1100) then Result := 'DONT_CARE' else if self.val = UInt32($8246) then Result := 'DEBUG_SOURCE_API' else if self.val = UInt32($8247) then Result := 'DEBUG_SOURCE_WINDOW_SYSTEM' else if self.val = UInt32($8248) then Result := 'DEBUG_SOURCE_SHADER_COMPILER' else if self.val = UInt32($8249) then Result := 'DEBUG_SOURCE_THIRD_PARTY' else if self.val = UInt32($824A) then Result := 'DEBUG_SOURCE_APPLICATION' else if self.val = UInt32($824B) then Result := 'DEBUG_SOURCE_OTHER' else Result := $'DebugSource[{self.val}]'; end; end; DebugType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property DONT_CARE: DebugType read new DebugType($1100); public static property DEBUG_TYPE_ERROR: DebugType read new DebugType($824C); public static property DEBUG_TYPE_DEPRECATED_BEHAVIOR: DebugType read new DebugType($824D); public static property DEBUG_TYPE_UNDEFINED_BEHAVIOR: DebugType read new DebugType($824E); public static property DEBUG_TYPE_PORTABILITY: DebugType read new DebugType($824F); public static property DEBUG_TYPE_PERFORMANCE: DebugType read new DebugType($8250); public static property DEBUG_TYPE_OTHER: DebugType read new DebugType($8251); public static property DEBUG_TYPE_MARKER: DebugType read new DebugType($8268); public static property DEBUG_TYPE_PUSH_GROUP: DebugType read new DebugType($8269); public static property DEBUG_TYPE_POP_GROUP: DebugType read new DebugType($826A); public function ToString: string; override; begin if self.val = UInt32($1100) then Result := 'DONT_CARE' else if self.val = UInt32($824C) then Result := 'DEBUG_TYPE_ERROR' else if self.val = UInt32($824D) then Result := 'DEBUG_TYPE_DEPRECATED_BEHAVIOR' else if self.val = UInt32($824E) then Result := 'DEBUG_TYPE_UNDEFINED_BEHAVIOR' else if self.val = UInt32($824F) then Result := 'DEBUG_TYPE_PORTABILITY' else if self.val = UInt32($8250) then Result := 'DEBUG_TYPE_PERFORMANCE' else if self.val = UInt32($8251) then Result := 'DEBUG_TYPE_OTHER' else if self.val = UInt32($8268) then Result := 'DEBUG_TYPE_MARKER' else if self.val = UInt32($8269) then Result := 'DEBUG_TYPE_PUSH_GROUP' else if self.val = UInt32($826A) then Result := 'DEBUG_TYPE_POP_GROUP' else Result := $'DebugType[{self.val}]'; end; end; DepthFunction = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NEVER: DepthFunction read new DepthFunction($0200); public static property LESS: DepthFunction read new DepthFunction($0201); public static property EQUAL: DepthFunction read new DepthFunction($0202); public static property LEQUAL: DepthFunction read new DepthFunction($0203); public static property GREATER: DepthFunction read new DepthFunction($0204); public static property NOTEQUAL: DepthFunction read new DepthFunction($0205); public static property GEQUAL: DepthFunction read new DepthFunction($0206); public static property ALWAYS: DepthFunction read new DepthFunction($0207); public function ToString: string; override; begin if self.val = UInt32($0200) then Result := 'NEVER' else if self.val = UInt32($0201) then Result := 'LESS' else if self.val = UInt32($0202) then Result := 'EQUAL' else if self.val = UInt32($0203) then Result := 'LEQUAL' else if self.val = UInt32($0204) then Result := 'GREATER' else if self.val = UInt32($0205) then Result := 'NOTEQUAL' else if self.val = UInt32($0206) then Result := 'GEQUAL' else if self.val = UInt32($0207) then Result := 'ALWAYS' else Result := $'DepthFunction[{self.val}]'; end; end; DrawBufferMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NONE: DrawBufferMode read new DrawBufferMode($0000); public static property NONE_OES: DrawBufferMode read new DrawBufferMode($0000); public static property FRONT_LEFT: DrawBufferMode read new DrawBufferMode($0400); public static property FRONT_RIGHT: DrawBufferMode read new DrawBufferMode($0401); public static property BACK_LEFT: DrawBufferMode read new DrawBufferMode($0402); public static property BACK_RIGHT: DrawBufferMode read new DrawBufferMode($0403); public static property FRONT: DrawBufferMode read new DrawBufferMode($0404); public static property BACK: DrawBufferMode read new DrawBufferMode($0405); public static property LEFT: DrawBufferMode read new DrawBufferMode($0406); public static property RIGHT: DrawBufferMode read new DrawBufferMode($0407); public static property FRONT_AND_BACK: DrawBufferMode read new DrawBufferMode($0408); public static property AUX0: DrawBufferMode read new DrawBufferMode($0409); public static property AUX1: DrawBufferMode read new DrawBufferMode($040A); public static property AUX2: DrawBufferMode read new DrawBufferMode($040B); public static property AUX3: DrawBufferMode read new DrawBufferMode($040C); public static property COLOR_ATTACHMENT0: DrawBufferMode read new DrawBufferMode($8CE0); public static property COLOR_ATTACHMENT1: DrawBufferMode read new DrawBufferMode($8CE1); public static property COLOR_ATTACHMENT2: DrawBufferMode read new DrawBufferMode($8CE2); public static property COLOR_ATTACHMENT3: DrawBufferMode read new DrawBufferMode($8CE3); public static property COLOR_ATTACHMENT4: DrawBufferMode read new DrawBufferMode($8CE4); public static property COLOR_ATTACHMENT5: DrawBufferMode read new DrawBufferMode($8CE5); public static property COLOR_ATTACHMENT6: DrawBufferMode read new DrawBufferMode($8CE6); public static property COLOR_ATTACHMENT7: DrawBufferMode read new DrawBufferMode($8CE7); public static property COLOR_ATTACHMENT8: DrawBufferMode read new DrawBufferMode($8CE8); public static property COLOR_ATTACHMENT9: DrawBufferMode read new DrawBufferMode($8CE9); public static property COLOR_ATTACHMENT10: DrawBufferMode read new DrawBufferMode($8CEA); public static property COLOR_ATTACHMENT11: DrawBufferMode read new DrawBufferMode($8CEB); public static property COLOR_ATTACHMENT12: DrawBufferMode read new DrawBufferMode($8CEC); public static property COLOR_ATTACHMENT13: DrawBufferMode read new DrawBufferMode($8CED); public static property COLOR_ATTACHMENT14: DrawBufferMode read new DrawBufferMode($8CEE); public static property COLOR_ATTACHMENT15: DrawBufferMode read new DrawBufferMode($8CEF); public static property COLOR_ATTACHMENT16: DrawBufferMode read new DrawBufferMode($8CF0); public static property COLOR_ATTACHMENT17: DrawBufferMode read new DrawBufferMode($8CF1); public static property COLOR_ATTACHMENT18: DrawBufferMode read new DrawBufferMode($8CF2); public static property COLOR_ATTACHMENT19: DrawBufferMode read new DrawBufferMode($8CF3); public static property COLOR_ATTACHMENT20: DrawBufferMode read new DrawBufferMode($8CF4); public static property COLOR_ATTACHMENT21: DrawBufferMode read new DrawBufferMode($8CF5); public static property COLOR_ATTACHMENT22: DrawBufferMode read new DrawBufferMode($8CF6); public static property COLOR_ATTACHMENT23: DrawBufferMode read new DrawBufferMode($8CF7); public static property COLOR_ATTACHMENT24: DrawBufferMode read new DrawBufferMode($8CF8); public static property COLOR_ATTACHMENT25: DrawBufferMode read new DrawBufferMode($8CF9); public static property COLOR_ATTACHMENT26: DrawBufferMode read new DrawBufferMode($8CFA); public static property COLOR_ATTACHMENT27: DrawBufferMode read new DrawBufferMode($8CFB); public static property COLOR_ATTACHMENT28: DrawBufferMode read new DrawBufferMode($8CFC); public static property COLOR_ATTACHMENT29: DrawBufferMode read new DrawBufferMode($8CFD); public static property COLOR_ATTACHMENT30: DrawBufferMode read new DrawBufferMode($8CFE); public static property COLOR_ATTACHMENT31: DrawBufferMode read new DrawBufferMode($8CFF); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'NONE' else if self.val = UInt32($0000) then Result := 'NONE_OES' else if self.val = UInt32($0400) then Result := 'FRONT_LEFT' else if self.val = UInt32($0401) then Result := 'FRONT_RIGHT' else if self.val = UInt32($0402) then Result := 'BACK_LEFT' else if self.val = UInt32($0403) then Result := 'BACK_RIGHT' else if self.val = UInt32($0404) then Result := 'FRONT' else if self.val = UInt32($0405) then Result := 'BACK' else if self.val = UInt32($0406) then Result := 'LEFT' else if self.val = UInt32($0407) then Result := 'RIGHT' else if self.val = UInt32($0408) then Result := 'FRONT_AND_BACK' else if self.val = UInt32($0409) then Result := 'AUX0' else if self.val = UInt32($040A) then Result := 'AUX1' else if self.val = UInt32($040B) then Result := 'AUX2' else if self.val = UInt32($040C) then Result := 'AUX3' else if self.val = UInt32($8CE0) then Result := 'COLOR_ATTACHMENT0' else if self.val = UInt32($8CE1) then Result := 'COLOR_ATTACHMENT1' else if self.val = UInt32($8CE2) then Result := 'COLOR_ATTACHMENT2' else if self.val = UInt32($8CE3) then Result := 'COLOR_ATTACHMENT3' else if self.val = UInt32($8CE4) then Result := 'COLOR_ATTACHMENT4' else if self.val = UInt32($8CE5) then Result := 'COLOR_ATTACHMENT5' else if self.val = UInt32($8CE6) then Result := 'COLOR_ATTACHMENT6' else if self.val = UInt32($8CE7) then Result := 'COLOR_ATTACHMENT7' else if self.val = UInt32($8CE8) then Result := 'COLOR_ATTACHMENT8' else if self.val = UInt32($8CE9) then Result := 'COLOR_ATTACHMENT9' else if self.val = UInt32($8CEA) then Result := 'COLOR_ATTACHMENT10' else if self.val = UInt32($8CEB) then Result := 'COLOR_ATTACHMENT11' else if self.val = UInt32($8CEC) then Result := 'COLOR_ATTACHMENT12' else if self.val = UInt32($8CED) then Result := 'COLOR_ATTACHMENT13' else if self.val = UInt32($8CEE) then Result := 'COLOR_ATTACHMENT14' else if self.val = UInt32($8CEF) then Result := 'COLOR_ATTACHMENT15' else if self.val = UInt32($8CF0) then Result := 'COLOR_ATTACHMENT16' else if self.val = UInt32($8CF1) then Result := 'COLOR_ATTACHMENT17' else if self.val = UInt32($8CF2) then Result := 'COLOR_ATTACHMENT18' else if self.val = UInt32($8CF3) then Result := 'COLOR_ATTACHMENT19' else if self.val = UInt32($8CF4) then Result := 'COLOR_ATTACHMENT20' else if self.val = UInt32($8CF5) then Result := 'COLOR_ATTACHMENT21' else if self.val = UInt32($8CF6) then Result := 'COLOR_ATTACHMENT22' else if self.val = UInt32($8CF7) then Result := 'COLOR_ATTACHMENT23' else if self.val = UInt32($8CF8) then Result := 'COLOR_ATTACHMENT24' else if self.val = UInt32($8CF9) then Result := 'COLOR_ATTACHMENT25' else if self.val = UInt32($8CFA) then Result := 'COLOR_ATTACHMENT26' else if self.val = UInt32($8CFB) then Result := 'COLOR_ATTACHMENT27' else if self.val = UInt32($8CFC) then Result := 'COLOR_ATTACHMENT28' else if self.val = UInt32($8CFD) then Result := 'COLOR_ATTACHMENT29' else if self.val = UInt32($8CFE) then Result := 'COLOR_ATTACHMENT30' else if self.val = UInt32($8CFF) then Result := 'COLOR_ATTACHMENT31' else Result := $'DrawBufferMode[{self.val}]'; end; end; DrawElementsType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property UNSIGNED_BYTE: DrawElementsType read new DrawElementsType($1401); public static property UNSIGNED_SHORT: DrawElementsType read new DrawElementsType($1403); public static property UNSIGNED_INT: DrawElementsType read new DrawElementsType($1405); public function ToString: string; override; begin if self.val = UInt32($1401) then Result := 'UNSIGNED_BYTE' else if self.val = UInt32($1403) then Result := 'UNSIGNED_SHORT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else Result := $'DrawElementsType[{self.val}]'; end; end; EnableCap = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property POINT_SMOOTH: EnableCap read new EnableCap($0B10); public static property LINE_SMOOTH: EnableCap read new EnableCap($0B20); public static property LINE_STIPPLE: EnableCap read new EnableCap($0B24); public static property POLYGON_SMOOTH: EnableCap read new EnableCap($0B41); public static property POLYGON_STIPPLE: EnableCap read new EnableCap($0B42); public static property CULL_FACE: EnableCap read new EnableCap($0B44); public static property LIGHTING: EnableCap read new EnableCap($0B50); public static property COLOR_MATERIAL: EnableCap read new EnableCap($0B57); public static property FOG: EnableCap read new EnableCap($0B60); public static property DEPTH_TEST: EnableCap read new EnableCap($0B71); public static property STENCIL_TEST: EnableCap read new EnableCap($0B90); public static property NORMALIZE: EnableCap read new EnableCap($0BA1); public static property ALPHA_TEST: EnableCap read new EnableCap($0BC0); public static property DITHER: EnableCap read new EnableCap($0BD0); public static property BLEND: EnableCap read new EnableCap($0BE2); public static property INDEX_LOGIC_OP: EnableCap read new EnableCap($0BF1); public static property COLOR_LOGIC_OP: EnableCap read new EnableCap($0BF2); public static property SCISSOR_TEST: EnableCap read new EnableCap($0C11); public static property TEXTURE_GEN_S: EnableCap read new EnableCap($0C60); public static property TEXTURE_GEN_T: EnableCap read new EnableCap($0C61); public static property TEXTURE_GEN_R: EnableCap read new EnableCap($0C62); public static property TEXTURE_GEN_Q: EnableCap read new EnableCap($0C63); public static property AUTO_NORMAL: EnableCap read new EnableCap($0D80); public static property MAP1_COLOR_4: EnableCap read new EnableCap($0D90); public static property MAP1_INDEX: EnableCap read new EnableCap($0D91); public static property MAP1_NORMAL: EnableCap read new EnableCap($0D92); public static property MAP1_TEXTURE_COORD_1: EnableCap read new EnableCap($0D93); public static property MAP1_TEXTURE_COORD_2: EnableCap read new EnableCap($0D94); public static property MAP1_TEXTURE_COORD_3: EnableCap read new EnableCap($0D95); public static property MAP1_TEXTURE_COORD_4: EnableCap read new EnableCap($0D96); public static property MAP1_VERTEX_3: EnableCap read new EnableCap($0D97); public static property MAP1_VERTEX_4: EnableCap read new EnableCap($0D98); public static property MAP2_COLOR_4: EnableCap read new EnableCap($0DB0); public static property MAP2_INDEX: EnableCap read new EnableCap($0DB1); public static property MAP2_NORMAL: EnableCap read new EnableCap($0DB2); public static property MAP2_TEXTURE_COORD_1: EnableCap read new EnableCap($0DB3); public static property MAP2_TEXTURE_COORD_2: EnableCap read new EnableCap($0DB4); public static property MAP2_TEXTURE_COORD_3: EnableCap read new EnableCap($0DB5); public static property MAP2_TEXTURE_COORD_4: EnableCap read new EnableCap($0DB6); public static property MAP2_VERTEX_3: EnableCap read new EnableCap($0DB7); public static property MAP2_VERTEX_4: EnableCap read new EnableCap($0DB8); public static property TEXTURE_1D: EnableCap read new EnableCap($0DE0); public static property TEXTURE_2D: EnableCap read new EnableCap($0DE1); public static property POLYGON_OFFSET_POINT: EnableCap read new EnableCap($2A01); public static property POLYGON_OFFSET_LINE: EnableCap read new EnableCap($2A02); public static property CLIP_DISTANCE0: EnableCap read new EnableCap($3000); public static property CLIP_PLANE0: EnableCap read new EnableCap($3000); public static property CLIP_DISTANCE1: EnableCap read new EnableCap($3001); public static property CLIP_PLANE1: EnableCap read new EnableCap($3001); public static property CLIP_DISTANCE2: EnableCap read new EnableCap($3002); public static property CLIP_PLANE2: EnableCap read new EnableCap($3002); public static property CLIP_DISTANCE3: EnableCap read new EnableCap($3003); public static property CLIP_PLANE3: EnableCap read new EnableCap($3003); public static property CLIP_DISTANCE4: EnableCap read new EnableCap($3004); public static property CLIP_PLANE4: EnableCap read new EnableCap($3004); public static property CLIP_DISTANCE5: EnableCap read new EnableCap($3005); public static property CLIP_PLANE5: EnableCap read new EnableCap($3005); public static property CLIP_DISTANCE6: EnableCap read new EnableCap($3006); public static property CLIP_DISTANCE7: EnableCap read new EnableCap($3007); public static property LIGHT0: EnableCap read new EnableCap($4000); public static property LIGHT1: EnableCap read new EnableCap($4001); public static property LIGHT2: EnableCap read new EnableCap($4002); public static property LIGHT3: EnableCap read new EnableCap($4003); public static property LIGHT4: EnableCap read new EnableCap($4004); public static property LIGHT5: EnableCap read new EnableCap($4005); public static property LIGHT6: EnableCap read new EnableCap($4006); public static property LIGHT7: EnableCap read new EnableCap($4007); public static property CONVOLUTION_1D_EXT: EnableCap read new EnableCap($8010); public static property CONVOLUTION_2D_EXT: EnableCap read new EnableCap($8011); public static property SEPARABLE_2D_EXT: EnableCap read new EnableCap($8012); public static property HISTOGRAM_EXT: EnableCap read new EnableCap($8024); public static property MINMAX_EXT: EnableCap read new EnableCap($802E); public static property POLYGON_OFFSET_FILL: EnableCap read new EnableCap($8037); public static property RESCALE_NORMAL_EXT: EnableCap read new EnableCap($803A); public static property TEXTURE_3D_EXT: EnableCap read new EnableCap($806F); public static property VERTEX_ARRAY: EnableCap read new EnableCap($8074); public static property NORMAL_ARRAY: EnableCap read new EnableCap($8075); public static property COLOR_ARRAY: EnableCap read new EnableCap($8076); public static property INDEX_ARRAY: EnableCap read new EnableCap($8077); public static property TEXTURE_COORD_ARRAY: EnableCap read new EnableCap($8078); public static property EDGE_FLAG_ARRAY: EnableCap read new EnableCap($8079); public static property INTERLACE_SGIX: EnableCap read new EnableCap($8094); public static property MULTISAMPLE: EnableCap read new EnableCap($809D); public static property MULTISAMPLE_SGIS: EnableCap read new EnableCap($809D); public static property SAMPLE_ALPHA_TO_COVERAGE: EnableCap read new EnableCap($809E); public static property SAMPLE_ALPHA_TO_MASK_SGIS: EnableCap read new EnableCap($809E); public static property SAMPLE_ALPHA_TO_ONE: EnableCap read new EnableCap($809F); public static property SAMPLE_ALPHA_TO_ONE_SGIS: EnableCap read new EnableCap($809F); public static property SAMPLE_COVERAGE: EnableCap read new EnableCap($80A0); public static property SAMPLE_MASK_SGIS: EnableCap read new EnableCap($80A0); public static property TEXTURE_COLOR_TABLE_SGI: EnableCap read new EnableCap($80BC); public static property COLOR_TABLE: EnableCap read new EnableCap($80D0); public static property COLOR_TABLE_SGI: EnableCap read new EnableCap($80D0); public static property POST_CONVOLUTION_COLOR_TABLE: EnableCap read new EnableCap($80D1); public static property POST_CONVOLUTION_COLOR_TABLE_SGI: EnableCap read new EnableCap($80D1); public static property POST_COLOR_MATRIX_COLOR_TABLE: EnableCap read new EnableCap($80D2); public static property POST_COLOR_MATRIX_COLOR_TABLE_SGI: EnableCap read new EnableCap($80D2); public static property TEXTURE_4D_SGIS: EnableCap read new EnableCap($8134); public static property PIXEL_TEX_GEN_SGIX: EnableCap read new EnableCap($8139); public static property SPRITE_SGIX: EnableCap read new EnableCap($8148); public static property REFERENCE_PLANE_SGIX: EnableCap read new EnableCap($817D); public static property IR_INSTRUMENT1_SGIX: EnableCap read new EnableCap($817F); public static property CALLIGRAPHIC_FRAGMENT_SGIX: EnableCap read new EnableCap($8183); public static property FRAMEZOOM_SGIX: EnableCap read new EnableCap($818B); public static property FOG_OFFSET_SGIX: EnableCap read new EnableCap($8198); public static property SHARED_TEXTURE_PALETTE_EXT: EnableCap read new EnableCap($81FB); public static property DEBUG_OUTPUT_SYNCHRONOUS: EnableCap read new EnableCap($8242); public static property ASYNC_HISTOGRAM_SGIX: EnableCap read new EnableCap($832C); public static property PIXEL_TEXTURE_SGIS: EnableCap read new EnableCap($8353); public static property ASYNC_TEX_IMAGE_SGIX: EnableCap read new EnableCap($835C); public static property ASYNC_DRAW_PIXELS_SGIX: EnableCap read new EnableCap($835D); public static property ASYNC_READ_PIXELS_SGIX: EnableCap read new EnableCap($835E); public static property FRAGMENT_LIGHTING_SGIX: EnableCap read new EnableCap($8400); public static property FRAGMENT_COLOR_MATERIAL_SGIX: EnableCap read new EnableCap($8401); public static property FRAGMENT_LIGHT0_SGIX: EnableCap read new EnableCap($840C); public static property FRAGMENT_LIGHT1_SGIX: EnableCap read new EnableCap($840D); public static property FRAGMENT_LIGHT2_SGIX: EnableCap read new EnableCap($840E); public static property FRAGMENT_LIGHT3_SGIX: EnableCap read new EnableCap($840F); public static property FRAGMENT_LIGHT4_SGIX: EnableCap read new EnableCap($8410); public static property FRAGMENT_LIGHT5_SGIX: EnableCap read new EnableCap($8411); public static property FRAGMENT_LIGHT6_SGIX: EnableCap read new EnableCap($8412); public static property FRAGMENT_LIGHT7_SGIX: EnableCap read new EnableCap($8413); public static property TEXTURE_RECTANGLE: EnableCap read new EnableCap($84F5); public static property TEXTURE_RECTANGLE_ARB: EnableCap read new EnableCap($84F5); public static property TEXTURE_RECTANGLE_NV: EnableCap read new EnableCap($84F5); public static property TEXTURE_CUBE_MAP: EnableCap read new EnableCap($8513); public static property TEXTURE_CUBE_MAP_ARB: EnableCap read new EnableCap($8513); public static property TEXTURE_CUBE_MAP_EXT: EnableCap read new EnableCap($8513); public static property TEXTURE_CUBE_MAP_OES: EnableCap read new EnableCap($8513); public static property PROGRAM_POINT_SIZE: EnableCap read new EnableCap($8642); public static property DEPTH_CLAMP: EnableCap read new EnableCap($864F); public static property TEXTURE_CUBE_MAP_SEAMLESS: EnableCap read new EnableCap($884F); public static property SAMPLE_SHADING: EnableCap read new EnableCap($8C36); public static property RASTERIZER_DISCARD: EnableCap read new EnableCap($8C89); public static property PRIMITIVE_RESTART_FIXED_INDEX: EnableCap read new EnableCap($8D69); public static property FRAMEBUFFER_SRGB: EnableCap read new EnableCap($8DB9); public static property SAMPLE_MASK: EnableCap read new EnableCap($8E51); public static property FETCH_PER_SAMPLE_ARM: EnableCap read new EnableCap($8F65); public static property PRIMITIVE_RESTART: EnableCap read new EnableCap($8F9D); public static property DEBUG_OUTPUT: EnableCap read new EnableCap($92E0); public static property SHADING_RATE_IMAGE_PER_PRIMITIVE_NV: EnableCap read new EnableCap($95B1); public static property SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM: EnableCap read new EnableCap($96A5); public function ToString: string; override; begin if self.val = UInt32($0B10) then Result := 'POINT_SMOOTH' else if self.val = UInt32($0B20) then Result := 'LINE_SMOOTH' else if self.val = UInt32($0B24) then Result := 'LINE_STIPPLE' else if self.val = UInt32($0B41) then Result := 'POLYGON_SMOOTH' else if self.val = UInt32($0B42) then Result := 'POLYGON_STIPPLE' else if self.val = UInt32($0B44) then Result := 'CULL_FACE' else if self.val = UInt32($0B50) then Result := 'LIGHTING' else if self.val = UInt32($0B57) then Result := 'COLOR_MATERIAL' else if self.val = UInt32($0B60) then Result := 'FOG' else if self.val = UInt32($0B71) then Result := 'DEPTH_TEST' else if self.val = UInt32($0B90) then Result := 'STENCIL_TEST' else if self.val = UInt32($0BA1) then Result := 'NORMALIZE' else if self.val = UInt32($0BC0) then Result := 'ALPHA_TEST' else if self.val = UInt32($0BD0) then Result := 'DITHER' else if self.val = UInt32($0BE2) then Result := 'BLEND' else if self.val = UInt32($0BF1) then Result := 'INDEX_LOGIC_OP' else if self.val = UInt32($0BF2) then Result := 'COLOR_LOGIC_OP' else if self.val = UInt32($0C11) then Result := 'SCISSOR_TEST' else if self.val = UInt32($0C60) then Result := 'TEXTURE_GEN_S' else if self.val = UInt32($0C61) then Result := 'TEXTURE_GEN_T' else if self.val = UInt32($0C62) then Result := 'TEXTURE_GEN_R' else if self.val = UInt32($0C63) then Result := 'TEXTURE_GEN_Q' else if self.val = UInt32($0D80) then Result := 'AUTO_NORMAL' else if self.val = UInt32($0D90) then Result := 'MAP1_COLOR_4' else if self.val = UInt32($0D91) then Result := 'MAP1_INDEX' else if self.val = UInt32($0D92) then Result := 'MAP1_NORMAL' else if self.val = UInt32($0D93) then Result := 'MAP1_TEXTURE_COORD_1' else if self.val = UInt32($0D94) then Result := 'MAP1_TEXTURE_COORD_2' else if self.val = UInt32($0D95) then Result := 'MAP1_TEXTURE_COORD_3' else if self.val = UInt32($0D96) then Result := 'MAP1_TEXTURE_COORD_4' else if self.val = UInt32($0D97) then Result := 'MAP1_VERTEX_3' else if self.val = UInt32($0D98) then Result := 'MAP1_VERTEX_4' else if self.val = UInt32($0DB0) then Result := 'MAP2_COLOR_4' else if self.val = UInt32($0DB1) then Result := 'MAP2_INDEX' else if self.val = UInt32($0DB2) then Result := 'MAP2_NORMAL' else if self.val = UInt32($0DB3) then Result := 'MAP2_TEXTURE_COORD_1' else if self.val = UInt32($0DB4) then Result := 'MAP2_TEXTURE_COORD_2' else if self.val = UInt32($0DB5) then Result := 'MAP2_TEXTURE_COORD_3' else if self.val = UInt32($0DB6) then Result := 'MAP2_TEXTURE_COORD_4' else if self.val = UInt32($0DB7) then Result := 'MAP2_VERTEX_3' else if self.val = UInt32($0DB8) then Result := 'MAP2_VERTEX_4' else if self.val = UInt32($0DE0) then Result := 'TEXTURE_1D' else if self.val = UInt32($0DE1) then Result := 'TEXTURE_2D' else if self.val = UInt32($2A01) then Result := 'POLYGON_OFFSET_POINT' else if self.val = UInt32($2A02) then Result := 'POLYGON_OFFSET_LINE' else if self.val = UInt32($3000) then Result := 'CLIP_DISTANCE0' else if self.val = UInt32($3000) then Result := 'CLIP_PLANE0' else if self.val = UInt32($3001) then Result := 'CLIP_DISTANCE1' else if self.val = UInt32($3001) then Result := 'CLIP_PLANE1' else if self.val = UInt32($3002) then Result := 'CLIP_DISTANCE2' else if self.val = UInt32($3002) then Result := 'CLIP_PLANE2' else if self.val = UInt32($3003) then Result := 'CLIP_DISTANCE3' else if self.val = UInt32($3003) then Result := 'CLIP_PLANE3' else if self.val = UInt32($3004) then Result := 'CLIP_DISTANCE4' else if self.val = UInt32($3004) then Result := 'CLIP_PLANE4' else if self.val = UInt32($3005) then Result := 'CLIP_DISTANCE5' else if self.val = UInt32($3005) then Result := 'CLIP_PLANE5' else if self.val = UInt32($3006) then Result := 'CLIP_DISTANCE6' else if self.val = UInt32($3007) then Result := 'CLIP_DISTANCE7' else if self.val = UInt32($4000) then Result := 'LIGHT0' else if self.val = UInt32($4001) then Result := 'LIGHT1' else if self.val = UInt32($4002) then Result := 'LIGHT2' else if self.val = UInt32($4003) then Result := 'LIGHT3' else if self.val = UInt32($4004) then Result := 'LIGHT4' else if self.val = UInt32($4005) then Result := 'LIGHT5' else if self.val = UInt32($4006) then Result := 'LIGHT6' else if self.val = UInt32($4007) then Result := 'LIGHT7' else if self.val = UInt32($8010) then Result := 'CONVOLUTION_1D_EXT' else if self.val = UInt32($8011) then Result := 'CONVOLUTION_2D_EXT' else if self.val = UInt32($8012) then Result := 'SEPARABLE_2D_EXT' else if self.val = UInt32($8024) then Result := 'HISTOGRAM_EXT' else if self.val = UInt32($802E) then Result := 'MINMAX_EXT' else if self.val = UInt32($8037) then Result := 'POLYGON_OFFSET_FILL' else if self.val = UInt32($803A) then Result := 'RESCALE_NORMAL_EXT' else if self.val = UInt32($806F) then Result := 'TEXTURE_3D_EXT' else if self.val = UInt32($8074) then Result := 'VERTEX_ARRAY' else if self.val = UInt32($8075) then Result := 'NORMAL_ARRAY' else if self.val = UInt32($8076) then Result := 'COLOR_ARRAY' else if self.val = UInt32($8077) then Result := 'INDEX_ARRAY' else if self.val = UInt32($8078) then Result := 'TEXTURE_COORD_ARRAY' else if self.val = UInt32($8079) then Result := 'EDGE_FLAG_ARRAY' else if self.val = UInt32($8094) then Result := 'INTERLACE_SGIX' else if self.val = UInt32($809D) then Result := 'MULTISAMPLE' else if self.val = UInt32($809D) then Result := 'MULTISAMPLE_SGIS' else if self.val = UInt32($809E) then Result := 'SAMPLE_ALPHA_TO_COVERAGE' else if self.val = UInt32($809E) then Result := 'SAMPLE_ALPHA_TO_MASK_SGIS' else if self.val = UInt32($809F) then Result := 'SAMPLE_ALPHA_TO_ONE' else if self.val = UInt32($809F) then Result := 'SAMPLE_ALPHA_TO_ONE_SGIS' else if self.val = UInt32($80A0) then Result := 'SAMPLE_COVERAGE' else if self.val = UInt32($80A0) then Result := 'SAMPLE_MASK_SGIS' else if self.val = UInt32($80BC) then Result := 'TEXTURE_COLOR_TABLE_SGI' else if self.val = UInt32($80D0) then Result := 'COLOR_TABLE' else if self.val = UInt32($80D0) then Result := 'COLOR_TABLE_SGI' else if self.val = UInt32($80D1) then Result := 'POST_CONVOLUTION_COLOR_TABLE' else if self.val = UInt32($80D1) then Result := 'POST_CONVOLUTION_COLOR_TABLE_SGI' else if self.val = UInt32($80D2) then Result := 'POST_COLOR_MATRIX_COLOR_TABLE' else if self.val = UInt32($80D2) then Result := 'POST_COLOR_MATRIX_COLOR_TABLE_SGI' else if self.val = UInt32($8134) then Result := 'TEXTURE_4D_SGIS' else if self.val = UInt32($8139) then Result := 'PIXEL_TEX_GEN_SGIX' else if self.val = UInt32($8148) then Result := 'SPRITE_SGIX' else if self.val = UInt32($817D) then Result := 'REFERENCE_PLANE_SGIX' else if self.val = UInt32($817F) then Result := 'IR_INSTRUMENT1_SGIX' else if self.val = UInt32($8183) then Result := 'CALLIGRAPHIC_FRAGMENT_SGIX' else if self.val = UInt32($818B) then Result := 'FRAMEZOOM_SGIX' else if self.val = UInt32($8198) then Result := 'FOG_OFFSET_SGIX' else if self.val = UInt32($81FB) then Result := 'SHARED_TEXTURE_PALETTE_EXT' else if self.val = UInt32($8242) then Result := 'DEBUG_OUTPUT_SYNCHRONOUS' else if self.val = UInt32($832C) then Result := 'ASYNC_HISTOGRAM_SGIX' else if self.val = UInt32($8353) then Result := 'PIXEL_TEXTURE_SGIS' else if self.val = UInt32($835C) then Result := 'ASYNC_TEX_IMAGE_SGIX' else if self.val = UInt32($835D) then Result := 'ASYNC_DRAW_PIXELS_SGIX' else if self.val = UInt32($835E) then Result := 'ASYNC_READ_PIXELS_SGIX' else if self.val = UInt32($8400) then Result := 'FRAGMENT_LIGHTING_SGIX' else if self.val = UInt32($8401) then Result := 'FRAGMENT_COLOR_MATERIAL_SGIX' else if self.val = UInt32($840C) then Result := 'FRAGMENT_LIGHT0_SGIX' else if self.val = UInt32($840D) then Result := 'FRAGMENT_LIGHT1_SGIX' else if self.val = UInt32($840E) then Result := 'FRAGMENT_LIGHT2_SGIX' else if self.val = UInt32($840F) then Result := 'FRAGMENT_LIGHT3_SGIX' else if self.val = UInt32($8410) then Result := 'FRAGMENT_LIGHT4_SGIX' else if self.val = UInt32($8411) then Result := 'FRAGMENT_LIGHT5_SGIX' else if self.val = UInt32($8412) then Result := 'FRAGMENT_LIGHT6_SGIX' else if self.val = UInt32($8413) then Result := 'FRAGMENT_LIGHT7_SGIX' else if self.val = UInt32($84F5) then Result := 'TEXTURE_RECTANGLE' else if self.val = UInt32($84F5) then Result := 'TEXTURE_RECTANGLE_ARB' else if self.val = UInt32($84F5) then Result := 'TEXTURE_RECTANGLE_NV' else if self.val = UInt32($8513) then Result := 'TEXTURE_CUBE_MAP' else if self.val = UInt32($8513) then Result := 'TEXTURE_CUBE_MAP_ARB' else if self.val = UInt32($8513) then Result := 'TEXTURE_CUBE_MAP_EXT' else if self.val = UInt32($8513) then Result := 'TEXTURE_CUBE_MAP_OES' else if self.val = UInt32($8642) then Result := 'PROGRAM_POINT_SIZE' else if self.val = UInt32($864F) then Result := 'DEPTH_CLAMP' else if self.val = UInt32($884F) then Result := 'TEXTURE_CUBE_MAP_SEAMLESS' else if self.val = UInt32($8C36) then Result := 'SAMPLE_SHADING' else if self.val = UInt32($8C89) then Result := 'RASTERIZER_DISCARD' else if self.val = UInt32($8D69) then Result := 'PRIMITIVE_RESTART_FIXED_INDEX' else if self.val = UInt32($8DB9) then Result := 'FRAMEBUFFER_SRGB' else if self.val = UInt32($8E51) then Result := 'SAMPLE_MASK' else if self.val = UInt32($8F65) then Result := 'FETCH_PER_SAMPLE_ARM' else if self.val = UInt32($8F9D) then Result := 'PRIMITIVE_RESTART' else if self.val = UInt32($92E0) then Result := 'DEBUG_OUTPUT' else if self.val = UInt32($95B1) then Result := 'SHADING_RATE_IMAGE_PER_PRIMITIVE_NV' else if self.val = UInt32($96A5) then Result := 'SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM' else Result := $'EnableCap[{self.val}]'; end; end; ErrorCode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NO_ERROR: ErrorCode read new ErrorCode($0000); public static property INVALID_ENUM: ErrorCode read new ErrorCode($0500); public static property INVALID_VALUE: ErrorCode read new ErrorCode($0501); public static property INVALID_OPERATION: ErrorCode read new ErrorCode($0502); public static property STACK_OVERFLOW: ErrorCode read new ErrorCode($0503); public static property STACK_UNDERFLOW: ErrorCode read new ErrorCode($0504); public static property OUT_OF_MEMORY: ErrorCode read new ErrorCode($0505); public static property INVALID_FRAMEBUFFER_OPERATION: ErrorCode read new ErrorCode($0506); public static property INVALID_FRAMEBUFFER_OPERATION_EXT: ErrorCode read new ErrorCode($0506); public static property INVALID_FRAMEBUFFER_OPERATION_OES: ErrorCode read new ErrorCode($0506); public static property TABLE_TOO_LARGE: ErrorCode read new ErrorCode($8031); public static property TABLE_TOO_LARGE_EXT: ErrorCode read new ErrorCode($8031); public static property TEXTURE_TOO_LARGE_EXT: ErrorCode read new ErrorCode($8065); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'NO_ERROR' else if self.val = UInt32($0500) then Result := 'INVALID_ENUM' else if self.val = UInt32($0501) then Result := 'INVALID_VALUE' else if self.val = UInt32($0502) then Result := 'INVALID_OPERATION' else if self.val = UInt32($0503) then Result := 'STACK_OVERFLOW' else if self.val = UInt32($0504) then Result := 'STACK_UNDERFLOW' else if self.val = UInt32($0505) then Result := 'OUT_OF_MEMORY' else if self.val = UInt32($0506) then Result := 'INVALID_FRAMEBUFFER_OPERATION' else if self.val = UInt32($0506) then Result := 'INVALID_FRAMEBUFFER_OPERATION_EXT' else if self.val = UInt32($0506) then Result := 'INVALID_FRAMEBUFFER_OPERATION_OES' else if self.val = UInt32($8031) then Result := 'TABLE_TOO_LARGE' else if self.val = UInt32($8031) then Result := 'TABLE_TOO_LARGE_EXT' else if self.val = UInt32($8065) then Result := 'TEXTURE_TOO_LARGE_EXT' else Result := $'ErrorCode[{self.val}]'; end; end; ExternalHandleType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property HANDLE_TYPE_OPAQUE_FD_EXT: ExternalHandleType read new ExternalHandleType($9586); public static property HANDLE_TYPE_OPAQUE_WIN32_EXT: ExternalHandleType read new ExternalHandleType($9587); public static property HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT: ExternalHandleType read new ExternalHandleType($9588); public static property HANDLE_TYPE_D3D12_TILEPOOL_EXT: ExternalHandleType read new ExternalHandleType($9589); public static property HANDLE_TYPE_D3D12_RESOURCE_EXT: ExternalHandleType read new ExternalHandleType($958A); public static property HANDLE_TYPE_D3D11_IMAGE_EXT: ExternalHandleType read new ExternalHandleType($958B); public static property HANDLE_TYPE_D3D11_IMAGE_KMT_EXT: ExternalHandleType read new ExternalHandleType($958C); public static property HANDLE_TYPE_D3D12_FENCE_EXT: ExternalHandleType read new ExternalHandleType($9594); public function ToString: string; override; begin if self.val = UInt32($9586) then Result := 'HANDLE_TYPE_OPAQUE_FD_EXT' else if self.val = UInt32($9587) then Result := 'HANDLE_TYPE_OPAQUE_WIN32_EXT' else if self.val = UInt32($9588) then Result := 'HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT' else if self.val = UInt32($9589) then Result := 'HANDLE_TYPE_D3D12_TILEPOOL_EXT' else if self.val = UInt32($958A) then Result := 'HANDLE_TYPE_D3D12_RESOURCE_EXT' else if self.val = UInt32($958B) then Result := 'HANDLE_TYPE_D3D11_IMAGE_EXT' else if self.val = UInt32($958C) then Result := 'HANDLE_TYPE_D3D11_IMAGE_KMT_EXT' else if self.val = UInt32($9594) then Result := 'HANDLE_TYPE_D3D12_FENCE_EXT' else Result := $'ExternalHandleType[{self.val}]'; end; end; FeedbackType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property GL_2D: FeedbackType read new FeedbackType($0600); public static property GL_3D: FeedbackType read new FeedbackType($0601); public static property GL_3D_COLOR: FeedbackType read new FeedbackType($0602); public static property GL_3D_COLOR_TEXTURE: FeedbackType read new FeedbackType($0603); public static property GL_4D_COLOR_TEXTURE: FeedbackType read new FeedbackType($0604); public function ToString: string; override; begin if self.val = UInt32($0600) then Result := 'GL_2D' else if self.val = UInt32($0601) then Result := 'GL_3D' else if self.val = UInt32($0602) then Result := 'GL_3D_COLOR' else if self.val = UInt32($0603) then Result := 'GL_3D_COLOR_TEXTURE' else if self.val = UInt32($0604) then Result := 'GL_4D_COLOR_TEXTURE' else Result := $'FeedbackType[{self.val}]'; end; end; FogCoordinatePointerType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FLOAT: FogCoordinatePointerType read new FogCoordinatePointerType($1406); public static property DOUBLE: FogCoordinatePointerType read new FogCoordinatePointerType($140A); public function ToString: string; override; begin if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else Result := $'FogCoordinatePointerType[{self.val}]'; end; end; FogParameter = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FOG_INDEX: FogParameter read new FogParameter($0B61); public static property FOG_DENSITY: FogParameter read new FogParameter($0B62); public static property FOG_START: FogParameter read new FogParameter($0B63); public static property FOG_END: FogParameter read new FogParameter($0B64); public static property FOG_MODE: FogParameter read new FogParameter($0B65); public static property FOG_COLOR: FogParameter read new FogParameter($0B66); public static property FOG_OFFSET_VALUE_SGIX: FogParameter read new FogParameter($8199); public function ToString: string; override; begin if self.val = UInt32($0B61) then Result := 'FOG_INDEX' else if self.val = UInt32($0B62) then Result := 'FOG_DENSITY' else if self.val = UInt32($0B63) then Result := 'FOG_START' else if self.val = UInt32($0B64) then Result := 'FOG_END' else if self.val = UInt32($0B65) then Result := 'FOG_MODE' else if self.val = UInt32($0B66) then Result := 'FOG_COLOR' else if self.val = UInt32($8199) then Result := 'FOG_OFFSET_VALUE_SGIX' else Result := $'FogParameter[{self.val}]'; end; end; FogPName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FOG_INDEX: FogPName read new FogPName($0B61); public static property FOG_DENSITY: FogPName read new FogPName($0B62); public static property FOG_START: FogPName read new FogPName($0B63); public static property FOG_END: FogPName read new FogPName($0B64); public static property FOG_MODE: FogPName read new FogPName($0B65); public static property FOG_COORD_SRC: FogPName read new FogPName($8450); public function ToString: string; override; begin if self.val = UInt32($0B61) then Result := 'FOG_INDEX' else if self.val = UInt32($0B62) then Result := 'FOG_DENSITY' else if self.val = UInt32($0B63) then Result := 'FOG_START' else if self.val = UInt32($0B64) then Result := 'FOG_END' else if self.val = UInt32($0B65) then Result := 'FOG_MODE' else if self.val = UInt32($8450) then Result := 'FOG_COORD_SRC' else Result := $'FogPName[{self.val}]'; end; end; FramebufferAttachment = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property DEPTH_STENCIL_ATTACHMENT: FramebufferAttachment read new FramebufferAttachment($821A); public static property COLOR_ATTACHMENT0: FramebufferAttachment read new FramebufferAttachment($8CE0); public static property COLOR_ATTACHMENT1: FramebufferAttachment read new FramebufferAttachment($8CE1); public static property COLOR_ATTACHMENT2: FramebufferAttachment read new FramebufferAttachment($8CE2); public static property COLOR_ATTACHMENT3: FramebufferAttachment read new FramebufferAttachment($8CE3); public static property COLOR_ATTACHMENT4: FramebufferAttachment read new FramebufferAttachment($8CE4); public static property COLOR_ATTACHMENT5: FramebufferAttachment read new FramebufferAttachment($8CE5); public static property COLOR_ATTACHMENT6: FramebufferAttachment read new FramebufferAttachment($8CE6); public static property COLOR_ATTACHMENT7: FramebufferAttachment read new FramebufferAttachment($8CE7); public static property COLOR_ATTACHMENT8: FramebufferAttachment read new FramebufferAttachment($8CE8); public static property COLOR_ATTACHMENT9: FramebufferAttachment read new FramebufferAttachment($8CE9); public static property COLOR_ATTACHMENT10: FramebufferAttachment read new FramebufferAttachment($8CEA); public static property COLOR_ATTACHMENT11: FramebufferAttachment read new FramebufferAttachment($8CEB); public static property COLOR_ATTACHMENT12: FramebufferAttachment read new FramebufferAttachment($8CEC); public static property COLOR_ATTACHMENT13: FramebufferAttachment read new FramebufferAttachment($8CED); public static property COLOR_ATTACHMENT14: FramebufferAttachment read new FramebufferAttachment($8CEE); public static property COLOR_ATTACHMENT15: FramebufferAttachment read new FramebufferAttachment($8CEF); public static property COLOR_ATTACHMENT16: FramebufferAttachment read new FramebufferAttachment($8CF0); public static property COLOR_ATTACHMENT17: FramebufferAttachment read new FramebufferAttachment($8CF1); public static property COLOR_ATTACHMENT18: FramebufferAttachment read new FramebufferAttachment($8CF2); public static property COLOR_ATTACHMENT19: FramebufferAttachment read new FramebufferAttachment($8CF3); public static property COLOR_ATTACHMENT20: FramebufferAttachment read new FramebufferAttachment($8CF4); public static property COLOR_ATTACHMENT21: FramebufferAttachment read new FramebufferAttachment($8CF5); public static property COLOR_ATTACHMENT22: FramebufferAttachment read new FramebufferAttachment($8CF6); public static property COLOR_ATTACHMENT23: FramebufferAttachment read new FramebufferAttachment($8CF7); public static property COLOR_ATTACHMENT24: FramebufferAttachment read new FramebufferAttachment($8CF8); public static property COLOR_ATTACHMENT25: FramebufferAttachment read new FramebufferAttachment($8CF9); public static property COLOR_ATTACHMENT26: FramebufferAttachment read new FramebufferAttachment($8CFA); public static property COLOR_ATTACHMENT27: FramebufferAttachment read new FramebufferAttachment($8CFB); public static property COLOR_ATTACHMENT28: FramebufferAttachment read new FramebufferAttachment($8CFC); public static property COLOR_ATTACHMENT29: FramebufferAttachment read new FramebufferAttachment($8CFD); public static property COLOR_ATTACHMENT30: FramebufferAttachment read new FramebufferAttachment($8CFE); public static property COLOR_ATTACHMENT31: FramebufferAttachment read new FramebufferAttachment($8CFF); public static property DEPTH_ATTACHMENT: FramebufferAttachment read new FramebufferAttachment($8D00); public static property STENCIL_ATTACHMENT: FramebufferAttachment read new FramebufferAttachment($8D20); public function ToString: string; override; begin if self.val = UInt32($821A) then Result := 'DEPTH_STENCIL_ATTACHMENT' else if self.val = UInt32($8CE0) then Result := 'COLOR_ATTACHMENT0' else if self.val = UInt32($8CE1) then Result := 'COLOR_ATTACHMENT1' else if self.val = UInt32($8CE2) then Result := 'COLOR_ATTACHMENT2' else if self.val = UInt32($8CE3) then Result := 'COLOR_ATTACHMENT3' else if self.val = UInt32($8CE4) then Result := 'COLOR_ATTACHMENT4' else if self.val = UInt32($8CE5) then Result := 'COLOR_ATTACHMENT5' else if self.val = UInt32($8CE6) then Result := 'COLOR_ATTACHMENT6' else if self.val = UInt32($8CE7) then Result := 'COLOR_ATTACHMENT7' else if self.val = UInt32($8CE8) then Result := 'COLOR_ATTACHMENT8' else if self.val = UInt32($8CE9) then Result := 'COLOR_ATTACHMENT9' else if self.val = UInt32($8CEA) then Result := 'COLOR_ATTACHMENT10' else if self.val = UInt32($8CEB) then Result := 'COLOR_ATTACHMENT11' else if self.val = UInt32($8CEC) then Result := 'COLOR_ATTACHMENT12' else if self.val = UInt32($8CED) then Result := 'COLOR_ATTACHMENT13' else if self.val = UInt32($8CEE) then Result := 'COLOR_ATTACHMENT14' else if self.val = UInt32($8CEF) then Result := 'COLOR_ATTACHMENT15' else if self.val = UInt32($8CF0) then Result := 'COLOR_ATTACHMENT16' else if self.val = UInt32($8CF1) then Result := 'COLOR_ATTACHMENT17' else if self.val = UInt32($8CF2) then Result := 'COLOR_ATTACHMENT18' else if self.val = UInt32($8CF3) then Result := 'COLOR_ATTACHMENT19' else if self.val = UInt32($8CF4) then Result := 'COLOR_ATTACHMENT20' else if self.val = UInt32($8CF5) then Result := 'COLOR_ATTACHMENT21' else if self.val = UInt32($8CF6) then Result := 'COLOR_ATTACHMENT22' else if self.val = UInt32($8CF7) then Result := 'COLOR_ATTACHMENT23' else if self.val = UInt32($8CF8) then Result := 'COLOR_ATTACHMENT24' else if self.val = UInt32($8CF9) then Result := 'COLOR_ATTACHMENT25' else if self.val = UInt32($8CFA) then Result := 'COLOR_ATTACHMENT26' else if self.val = UInt32($8CFB) then Result := 'COLOR_ATTACHMENT27' else if self.val = UInt32($8CFC) then Result := 'COLOR_ATTACHMENT28' else if self.val = UInt32($8CFD) then Result := 'COLOR_ATTACHMENT29' else if self.val = UInt32($8CFE) then Result := 'COLOR_ATTACHMENT30' else if self.val = UInt32($8CFF) then Result := 'COLOR_ATTACHMENT31' else if self.val = UInt32($8D00) then Result := 'DEPTH_ATTACHMENT' else if self.val = UInt32($8D20) then Result := 'STENCIL_ATTACHMENT' else Result := $'FramebufferAttachment[{self.val}]'; end; end; FramebufferAttachmentParameterName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8210); public static property FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8210); public static property FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8211); public static property FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8211); public static property FRAMEBUFFER_ATTACHMENT_RED_SIZE: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8212); public static property FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8213); public static property FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8214); public static property FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8215); public static property FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8216); public static property FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8217); public static property FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD0); public static property FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD0); public static property FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD0); public static property FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD1); public static property FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD1); public static property FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD1); public static property FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD2); public static property FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD2); public static property FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD2); public static property FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD3); public static property FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD3); public static property FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD3); public static property FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD4); public static property FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD4); public static property FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD4); public static property FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8CD4); public static property FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8D6C); public static property FRAMEBUFFER_ATTACHMENT_LAYERED: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8DA7); public static property FRAMEBUFFER_ATTACHMENT_LAYERED_ARB: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8DA7); public static property FRAMEBUFFER_ATTACHMENT_LAYERED_EXT: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8DA7); public static property FRAMEBUFFER_ATTACHMENT_LAYERED_OES: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($8DA7); public static property FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($913F); public static property FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($9630); public static property FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR: FramebufferAttachmentParameterName read new FramebufferAttachmentParameterName($9632); public function ToString: string; override; begin if self.val = UInt32($8210) then Result := 'FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING' else if self.val = UInt32($8210) then Result := 'FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT' else if self.val = UInt32($8211) then Result := 'FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE' else if self.val = UInt32($8211) then Result := 'FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT' else if self.val = UInt32($8212) then Result := 'FRAMEBUFFER_ATTACHMENT_RED_SIZE' else if self.val = UInt32($8213) then Result := 'FRAMEBUFFER_ATTACHMENT_GREEN_SIZE' else if self.val = UInt32($8214) then Result := 'FRAMEBUFFER_ATTACHMENT_BLUE_SIZE' else if self.val = UInt32($8215) then Result := 'FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE' else if self.val = UInt32($8216) then Result := 'FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE' else if self.val = UInt32($8217) then Result := 'FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE' else if self.val = UInt32($8CD0) then Result := 'FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE' else if self.val = UInt32($8CD0) then Result := 'FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT' else if self.val = UInt32($8CD0) then Result := 'FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES' else if self.val = UInt32($8CD1) then Result := 'FRAMEBUFFER_ATTACHMENT_OBJECT_NAME' else if self.val = UInt32($8CD1) then Result := 'FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT' else if self.val = UInt32($8CD1) then Result := 'FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES' else if self.val = UInt32($8CD2) then Result := 'FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL' else if self.val = UInt32($8CD2) then Result := 'FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT' else if self.val = UInt32($8CD2) then Result := 'FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES' else if self.val = UInt32($8CD3) then Result := 'FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE' else if self.val = UInt32($8CD3) then Result := 'FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT' else if self.val = UInt32($8CD3) then Result := 'FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES' else if self.val = UInt32($8CD4) then Result := 'FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT' else if self.val = UInt32($8CD4) then Result := 'FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES' else if self.val = UInt32($8CD4) then Result := 'FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER' else if self.val = UInt32($8CD4) then Result := 'FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT' else if self.val = UInt32($8D6C) then Result := 'FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT' else if self.val = UInt32($8DA7) then Result := 'FRAMEBUFFER_ATTACHMENT_LAYERED' else if self.val = UInt32($8DA7) then Result := 'FRAMEBUFFER_ATTACHMENT_LAYERED_ARB' else if self.val = UInt32($8DA7) then Result := 'FRAMEBUFFER_ATTACHMENT_LAYERED_EXT' else if self.val = UInt32($8DA7) then Result := 'FRAMEBUFFER_ATTACHMENT_LAYERED_OES' else if self.val = UInt32($913F) then Result := 'FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG' else if self.val = UInt32($9630) then Result := 'FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR' else if self.val = UInt32($9632) then Result := 'FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR' else Result := $'FramebufferAttachmentParameterName[{self.val}]'; end; end; FramebufferParameterName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FRAMEBUFFER_DEFAULT_WIDTH: FramebufferParameterName read new FramebufferParameterName($9310); public static property FRAMEBUFFER_DEFAULT_HEIGHT: FramebufferParameterName read new FramebufferParameterName($9311); public static property FRAMEBUFFER_DEFAULT_LAYERS: FramebufferParameterName read new FramebufferParameterName($9312); public static property FRAMEBUFFER_DEFAULT_SAMPLES: FramebufferParameterName read new FramebufferParameterName($9313); public static property FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS: FramebufferParameterName read new FramebufferParameterName($9314); public function ToString: string; override; begin if self.val = UInt32($9310) then Result := 'FRAMEBUFFER_DEFAULT_WIDTH' else if self.val = UInt32($9311) then Result := 'FRAMEBUFFER_DEFAULT_HEIGHT' else if self.val = UInt32($9312) then Result := 'FRAMEBUFFER_DEFAULT_LAYERS' else if self.val = UInt32($9313) then Result := 'FRAMEBUFFER_DEFAULT_SAMPLES' else if self.val = UInt32($9314) then Result := 'FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS' else Result := $'FramebufferParameterName[{self.val}]'; end; end; FramebufferStatus = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FRAMEBUFFER_UNDEFINED: FramebufferStatus read new FramebufferStatus($8219); public static property FRAMEBUFFER_COMPLETE: FramebufferStatus read new FramebufferStatus($8CD5); public static property FRAMEBUFFER_INCOMPLETE_ATTACHMENT: FramebufferStatus read new FramebufferStatus($8CD6); public static property FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: FramebufferStatus read new FramebufferStatus($8CD7); public static property FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: FramebufferStatus read new FramebufferStatus($8CDB); public static property FRAMEBUFFER_INCOMPLETE_READ_BUFFER: FramebufferStatus read new FramebufferStatus($8CDC); public static property FRAMEBUFFER_UNSUPPORTED: FramebufferStatus read new FramebufferStatus($8CDD); public static property FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: FramebufferStatus read new FramebufferStatus($8D56); public static property FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: FramebufferStatus read new FramebufferStatus($8DA8); public function ToString: string; override; begin if self.val = UInt32($8219) then Result := 'FRAMEBUFFER_UNDEFINED' else if self.val = UInt32($8CD5) then Result := 'FRAMEBUFFER_COMPLETE' else if self.val = UInt32($8CD6) then Result := 'FRAMEBUFFER_INCOMPLETE_ATTACHMENT' else if self.val = UInt32($8CD7) then Result := 'FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT' else if self.val = UInt32($8CDB) then Result := 'FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER' else if self.val = UInt32($8CDC) then Result := 'FRAMEBUFFER_INCOMPLETE_READ_BUFFER' else if self.val = UInt32($8CDD) then Result := 'FRAMEBUFFER_UNSUPPORTED' else if self.val = UInt32($8D56) then Result := 'FRAMEBUFFER_INCOMPLETE_MULTISAMPLE' else if self.val = UInt32($8DA8) then Result := 'FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS' else Result := $'FramebufferStatus[{self.val}]'; end; end; FramebufferTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property READ_FRAMEBUFFER: FramebufferTarget read new FramebufferTarget($8CA8); public static property DRAW_FRAMEBUFFER: FramebufferTarget read new FramebufferTarget($8CA9); public static property FRAMEBUFFER: FramebufferTarget read new FramebufferTarget($8D40); public static property FRAMEBUFFER_OES: FramebufferTarget read new FramebufferTarget($8D40); public function ToString: string; override; begin if self.val = UInt32($8CA8) then Result := 'READ_FRAMEBUFFER' else if self.val = UInt32($8CA9) then Result := 'DRAW_FRAMEBUFFER' else if self.val = UInt32($8D40) then Result := 'FRAMEBUFFER' else if self.val = UInt32($8D40) then Result := 'FRAMEBUFFER_OES' else Result := $'FramebufferTarget[{self.val}]'; end; end; FrontFaceDirection = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CW: FrontFaceDirection read new FrontFaceDirection($0900); public static property CCW: FrontFaceDirection read new FrontFaceDirection($0901); public function ToString: string; override; begin if self.val = UInt32($0900) then Result := 'CW' else if self.val = UInt32($0901) then Result := 'CCW' else Result := $'FrontFaceDirection[{self.val}]'; end; end; GDI_LayerPlaneFlags = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property DOUBLEBUFFER: GDI_LayerPlaneFlags read new GDI_LayerPlaneFlags($0001); public static property STEREO: GDI_LayerPlaneFlags read new GDI_LayerPlaneFlags($0002); public static property SUPPORT_GDI: GDI_LayerPlaneFlags read new GDI_LayerPlaneFlags($0010); public static property SUPPORT_OPENGL: GDI_LayerPlaneFlags read new GDI_LayerPlaneFlags($0020); public static property SHARE_DEPTH: GDI_LayerPlaneFlags read new GDI_LayerPlaneFlags($0040); public static property SHARE_STENCIL: GDI_LayerPlaneFlags read new GDI_LayerPlaneFlags($0080); public static property SHARE_ACCUM: GDI_LayerPlaneFlags read new GDI_LayerPlaneFlags($0100); public static property SWAP_EXCHANGE: GDI_LayerPlaneFlags read new GDI_LayerPlaneFlags($0200); public static property SWAP_COPY: GDI_LayerPlaneFlags read new GDI_LayerPlaneFlags($0400); public static property TRANSPARENT: GDI_LayerPlaneFlags read new GDI_LayerPlaneFlags($1000); public static function operator+(f1,f2: GDI_LayerPlaneFlags) := new GDI_LayerPlaneFlags(f1.val or f2.val); public static function operator or(f1,f2: GDI_LayerPlaneFlags) := f1+f2; public property HAS_FLAG_DOUBLEBUFFER: boolean read self.val and $0001 <> 0; public property HAS_FLAG_STEREO: boolean read self.val and $0002 <> 0; public property HAS_FLAG_SUPPORT_GDI: boolean read self.val and $0010 <> 0; public property HAS_FLAG_SUPPORT_OPENGL: boolean read self.val and $0020 <> 0; public property HAS_FLAG_SHARE_DEPTH: boolean read self.val and $0040 <> 0; public property HAS_FLAG_SHARE_STENCIL: boolean read self.val and $0080 <> 0; public property HAS_FLAG_SHARE_ACCUM: boolean read self.val and $0100 <> 0; public property HAS_FLAG_SWAP_EXCHANGE: boolean read self.val and $0200 <> 0; public property HAS_FLAG_SWAP_COPY: boolean read self.val and $0400 <> 0; public property HAS_FLAG_TRANSPARENT: boolean read self.val and $1000 <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0001) = UInt32($0001) then res += 'DOUBLEBUFFER+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'STEREO+'; if self.val and UInt32($0010) = UInt32($0010) then res += 'SUPPORT_GDI+'; if self.val and UInt32($0020) = UInt32($0020) then res += 'SUPPORT_OPENGL+'; if self.val and UInt32($0040) = UInt32($0040) then res += 'SHARE_DEPTH+'; if self.val and UInt32($0080) = UInt32($0080) then res += 'SHARE_STENCIL+'; if self.val and UInt32($0100) = UInt32($0100) then res += 'SHARE_ACCUM+'; if self.val and UInt32($0200) = UInt32($0200) then res += 'SWAP_EXCHANGE+'; if self.val and UInt32($0400) = UInt32($0400) then res += 'SWAP_COPY+'; if self.val and UInt32($1000) = UInt32($1000) then res += 'TRANSPARENT+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'GDI_LayerPlaneFlags[{self.val}]'; end; end; GDI_PixelDataType = record public val: Byte; public constructor(val: Byte) := self.val := val; public static property RGBA: GDI_PixelDataType read new GDI_PixelDataType($0000); public static property COLORINDEX: GDI_PixelDataType read new GDI_PixelDataType($0001); public function ToString: string; override; begin if self.val = Byte($0000) then Result := 'RGBA' else if self.val = Byte($0001) then Result := 'COLORINDEX' else Result := $'GDI_PixelDataType[{self.val}]'; end; end; GDI_PixelFormatFlags = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property DOUBLEBUFFER: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($0001); public static property STEREO: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($0002); public static property DRAW_TO_WINDOW: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($0004); public static property DRAW_TO_BITMAP: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($0008); public static property SUPPORT_GDI: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($0010); public static property SUPPORT_OPENGL: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($0020); public static property GENERIC_FORMAT: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($0040); public static property NEED_PALETTE: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($0080); public static property NEED_SYSTEM_PALETTE: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($0100); public static property SWAP_EXCHANGE: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($0200); public static property SWAP_COPY: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($0400); public static property SWAP_LAYER_BUFFERS: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($0800); public static property GENERIC_ACCELERATED: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($1000); public static property SUPPORT_DIRECTDRAW: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($2000); public static property DEPTH_DONTCARE: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($20000000); public static property DOUBLEBUFFER_DONTCARE: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($40000000); public static property STEREO_DONTCARE: GDI_PixelFormatFlags read new GDI_PixelFormatFlags($80000000); public static function operator+(f1,f2: GDI_PixelFormatFlags) := new GDI_PixelFormatFlags(f1.val or f2.val); public static function operator or(f1,f2: GDI_PixelFormatFlags) := f1+f2; public property HAS_FLAG_DOUBLEBUFFER: boolean read self.val and $0001 <> 0; public property HAS_FLAG_STEREO: boolean read self.val and $0002 <> 0; public property HAS_FLAG_DRAW_TO_WINDOW: boolean read self.val and $0004 <> 0; public property HAS_FLAG_DRAW_TO_BITMAP: boolean read self.val and $0008 <> 0; public property HAS_FLAG_SUPPORT_GDI: boolean read self.val and $0010 <> 0; public property HAS_FLAG_SUPPORT_OPENGL: boolean read self.val and $0020 <> 0; public property HAS_FLAG_GENERIC_FORMAT: boolean read self.val and $0040 <> 0; public property HAS_FLAG_NEED_PALETTE: boolean read self.val and $0080 <> 0; public property HAS_FLAG_NEED_SYSTEM_PALETTE: boolean read self.val and $0100 <> 0; public property HAS_FLAG_SWAP_EXCHANGE: boolean read self.val and $0200 <> 0; public property HAS_FLAG_SWAP_COPY: boolean read self.val and $0400 <> 0; public property HAS_FLAG_SWAP_LAYER_BUFFERS: boolean read self.val and $0800 <> 0; public property HAS_FLAG_GENERIC_ACCELERATED: boolean read self.val and $1000 <> 0; public property HAS_FLAG_SUPPORT_DIRECTDRAW: boolean read self.val and $2000 <> 0; public property HAS_FLAG_DEPTH_DONTCARE: boolean read self.val and $20000000 <> 0; public property HAS_FLAG_DOUBLEBUFFER_DONTCARE: boolean read self.val and $40000000 <> 0; public property HAS_FLAG_STEREO_DONTCARE: boolean read self.val and $80000000 <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0001) = UInt32($0001) then res += 'DOUBLEBUFFER+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'STEREO+'; if self.val and UInt32($0004) = UInt32($0004) then res += 'DRAW_TO_WINDOW+'; if self.val and UInt32($0008) = UInt32($0008) then res += 'DRAW_TO_BITMAP+'; if self.val and UInt32($0010) = UInt32($0010) then res += 'SUPPORT_GDI+'; if self.val and UInt32($0020) = UInt32($0020) then res += 'SUPPORT_OPENGL+'; if self.val and UInt32($0040) = UInt32($0040) then res += 'GENERIC_FORMAT+'; if self.val and UInt32($0080) = UInt32($0080) then res += 'NEED_PALETTE+'; if self.val and UInt32($0100) = UInt32($0100) then res += 'NEED_SYSTEM_PALETTE+'; if self.val and UInt32($0200) = UInt32($0200) then res += 'SWAP_EXCHANGE+'; if self.val and UInt32($0400) = UInt32($0400) then res += 'SWAP_COPY+'; if self.val and UInt32($0800) = UInt32($0800) then res += 'SWAP_LAYER_BUFFERS+'; if self.val and UInt32($1000) = UInt32($1000) then res += 'GENERIC_ACCELERATED+'; if self.val and UInt32($2000) = UInt32($2000) then res += 'SUPPORT_DIRECTDRAW+'; if self.val and UInt32($20000000) = UInt32($20000000) then res += 'DEPTH_DONTCARE+'; if self.val and UInt32($40000000) = UInt32($40000000) then res += 'DOUBLEBUFFER_DONTCARE+'; if self.val and UInt32($80000000) = UInt32($80000000) then res += 'STEREO_DONTCARE+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'GDI_PixelFormatFlags[{self.val}]'; end; end; GetFramebufferParameter = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property DOUBLEBUFFER: GetFramebufferParameter read new GetFramebufferParameter($0C32); public static property STEREO: GetFramebufferParameter read new GetFramebufferParameter($0C33); public static property SAMPLE_BUFFERS: GetFramebufferParameter read new GetFramebufferParameter($80A8); public static property SAMPLES: GetFramebufferParameter read new GetFramebufferParameter($80A9); public static property IMPLEMENTATION_COLOR_READ_TYPE: GetFramebufferParameter read new GetFramebufferParameter($8B9A); public static property IMPLEMENTATION_COLOR_READ_FORMAT: GetFramebufferParameter read new GetFramebufferParameter($8B9B); public static property FRAMEBUFFER_DEFAULT_WIDTH: GetFramebufferParameter read new GetFramebufferParameter($9310); public static property FRAMEBUFFER_DEFAULT_HEIGHT: GetFramebufferParameter read new GetFramebufferParameter($9311); public static property FRAMEBUFFER_DEFAULT_LAYERS: GetFramebufferParameter read new GetFramebufferParameter($9312); public static property FRAMEBUFFER_DEFAULT_SAMPLES: GetFramebufferParameter read new GetFramebufferParameter($9313); public static property FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS: GetFramebufferParameter read new GetFramebufferParameter($9314); public function ToString: string; override; begin if self.val = UInt32($0C32) then Result := 'DOUBLEBUFFER' else if self.val = UInt32($0C33) then Result := 'STEREO' else if self.val = UInt32($80A8) then Result := 'SAMPLE_BUFFERS' else if self.val = UInt32($80A9) then Result := 'SAMPLES' else if self.val = UInt32($8B9A) then Result := 'IMPLEMENTATION_COLOR_READ_TYPE' else if self.val = UInt32($8B9B) then Result := 'IMPLEMENTATION_COLOR_READ_FORMAT' else if self.val = UInt32($9310) then Result := 'FRAMEBUFFER_DEFAULT_WIDTH' else if self.val = UInt32($9311) then Result := 'FRAMEBUFFER_DEFAULT_HEIGHT' else if self.val = UInt32($9312) then Result := 'FRAMEBUFFER_DEFAULT_LAYERS' else if self.val = UInt32($9313) then Result := 'FRAMEBUFFER_DEFAULT_SAMPLES' else if self.val = UInt32($9314) then Result := 'FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS' else Result := $'GetFramebufferParameter[{self.val}]'; end; end; GetMapQuery = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property COEFF: GetMapQuery read new GetMapQuery($0A00); public static property ORDER: GetMapQuery read new GetMapQuery($0A01); public static property DOMAIN: GetMapQuery read new GetMapQuery($0A02); public function ToString: string; override; begin if self.val = UInt32($0A00) then Result := 'COEFF' else if self.val = UInt32($0A01) then Result := 'ORDER' else if self.val = UInt32($0A02) then Result := 'DOMAIN' else Result := $'GetMapQuery[{self.val}]'; end; end; GetPName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CURRENT_COLOR: GetPName read new GetPName($0B00); public static property CURRENT_INDEX: GetPName read new GetPName($0B01); public static property CURRENT_NORMAL: GetPName read new GetPName($0B02); public static property CURRENT_TEXTURE_COORDS: GetPName read new GetPName($0B03); public static property CURRENT_RASTER_COLOR: GetPName read new GetPName($0B04); public static property CURRENT_RASTER_INDEX: GetPName read new GetPName($0B05); public static property CURRENT_RASTER_TEXTURE_COORDS: GetPName read new GetPName($0B06); public static property CURRENT_RASTER_POSITION: GetPName read new GetPName($0B07); public static property CURRENT_RASTER_POSITION_VALID: GetPName read new GetPName($0B08); public static property CURRENT_RASTER_DISTANCE: GetPName read new GetPName($0B09); public static property POINT_SMOOTH: GetPName read new GetPName($0B10); public static property POINT_SIZE: GetPName read new GetPName($0B11); public static property POINT_SIZE_RANGE: GetPName read new GetPName($0B12); public static property SMOOTH_POINT_SIZE_RANGE: GetPName read new GetPName($0B12); public static property POINT_SIZE_GRANULARITY: GetPName read new GetPName($0B13); public static property SMOOTH_POINT_SIZE_GRANULARITY: GetPName read new GetPName($0B13); public static property LINE_SMOOTH: GetPName read new GetPName($0B20); public static property LINE_WIDTH: GetPName read new GetPName($0B21); public static property LINE_WIDTH_RANGE: GetPName read new GetPName($0B22); public static property SMOOTH_LINE_WIDTH_RANGE: GetPName read new GetPName($0B22); public static property LINE_WIDTH_GRANULARITY: GetPName read new GetPName($0B23); public static property SMOOTH_LINE_WIDTH_GRANULARITY: GetPName read new GetPName($0B23); public static property LINE_STIPPLE: GetPName read new GetPName($0B24); public static property LINE_STIPPLE_PATTERN: GetPName read new GetPName($0B25); public static property LINE_STIPPLE_REPEAT: GetPName read new GetPName($0B26); public static property LIST_MODE: GetPName read new GetPName($0B30); public static property MAX_LIST_NESTING: GetPName read new GetPName($0B31); public static property LIST_BASE: GetPName read new GetPName($0B32); public static property LIST_INDEX: GetPName read new GetPName($0B33); public static property POLYGON_MODE: GetPName read new GetPName($0B40); public static property POLYGON_SMOOTH: GetPName read new GetPName($0B41); public static property POLYGON_STIPPLE: GetPName read new GetPName($0B42); public static property EDGE_FLAG: GetPName read new GetPName($0B43); public static property CULL_FACE: GetPName read new GetPName($0B44); public static property CULL_FACE_MODE: GetPName read new GetPName($0B45); public static property FRONT_FACE: GetPName read new GetPName($0B46); public static property LIGHTING: GetPName read new GetPName($0B50); public static property LIGHT_MODEL_LOCAL_VIEWER: GetPName read new GetPName($0B51); public static property LIGHT_MODEL_TWO_SIDE: GetPName read new GetPName($0B52); public static property LIGHT_MODEL_AMBIENT: GetPName read new GetPName($0B53); public static property SHADE_MODEL: GetPName read new GetPName($0B54); public static property COLOR_MATERIAL_FACE: GetPName read new GetPName($0B55); public static property COLOR_MATERIAL_PARAMETER: GetPName read new GetPName($0B56); public static property COLOR_MATERIAL: GetPName read new GetPName($0B57); public static property FOG: GetPName read new GetPName($0B60); public static property FOG_INDEX: GetPName read new GetPName($0B61); public static property FOG_DENSITY: GetPName read new GetPName($0B62); public static property FOG_START: GetPName read new GetPName($0B63); public static property FOG_END: GetPName read new GetPName($0B64); public static property FOG_MODE: GetPName read new GetPName($0B65); public static property FOG_COLOR: GetPName read new GetPName($0B66); public static property DEPTH_RANGE: GetPName read new GetPName($0B70); public static property DEPTH_TEST: GetPName read new GetPName($0B71); public static property DEPTH_WRITEMASK: GetPName read new GetPName($0B72); public static property DEPTH_CLEAR_VALUE: GetPName read new GetPName($0B73); public static property DEPTH_FUNC: GetPName read new GetPName($0B74); public static property ACCUM_CLEAR_VALUE: GetPName read new GetPName($0B80); public static property STENCIL_TEST: GetPName read new GetPName($0B90); public static property STENCIL_CLEAR_VALUE: GetPName read new GetPName($0B91); public static property STENCIL_FUNC: GetPName read new GetPName($0B92); public static property STENCIL_VALUE_MASK: GetPName read new GetPName($0B93); public static property STENCIL_FAIL: GetPName read new GetPName($0B94); public static property STENCIL_PASS_DEPTH_FAIL: GetPName read new GetPName($0B95); public static property STENCIL_PASS_DEPTH_PASS: GetPName read new GetPName($0B96); public static property STENCIL_REF: GetPName read new GetPName($0B97); public static property STENCIL_WRITEMASK: GetPName read new GetPName($0B98); public static property MATRIX_MODE: GetPName read new GetPName($0BA0); public static property NORMALIZE: GetPName read new GetPName($0BA1); public static property VIEWPORT: GetPName read new GetPName($0BA2); public static property MODELVIEW_STACK_DEPTH: GetPName read new GetPName($0BA3); public static property MODELVIEW0_STACK_DEPTH_EXT: GetPName read new GetPName($0BA3); public static property PROJECTION_STACK_DEPTH: GetPName read new GetPName($0BA4); public static property TEXTURE_STACK_DEPTH: GetPName read new GetPName($0BA5); public static property MODELVIEW_MATRIX: GetPName read new GetPName($0BA6); public static property MODELVIEW0_MATRIX_EXT: GetPName read new GetPName($0BA6); public static property PROJECTION_MATRIX: GetPName read new GetPName($0BA7); public static property TEXTURE_MATRIX: GetPName read new GetPName($0BA8); public static property ATTRIB_STACK_DEPTH: GetPName read new GetPName($0BB0); public static property CLIENT_ATTRIB_STACK_DEPTH: GetPName read new GetPName($0BB1); public static property ALPHA_TEST: GetPName read new GetPName($0BC0); public static property ALPHA_TEST_QCOM: GetPName read new GetPName($0BC0); public static property ALPHA_TEST_FUNC: GetPName read new GetPName($0BC1); public static property ALPHA_TEST_FUNC_QCOM: GetPName read new GetPName($0BC1); public static property ALPHA_TEST_REF: GetPName read new GetPName($0BC2); public static property ALPHA_TEST_REF_QCOM: GetPName read new GetPName($0BC2); public static property DITHER: GetPName read new GetPName($0BD0); public static property BLEND_DST: GetPName read new GetPName($0BE0); public static property BLEND_SRC: GetPName read new GetPName($0BE1); public static property BLEND: GetPName read new GetPName($0BE2); public static property LOGIC_OP_MODE: GetPName read new GetPName($0BF0); public static property INDEX_LOGIC_OP: GetPName read new GetPName($0BF1); public static property LOGIC_OP: GetPName read new GetPName($0BF1); public static property COLOR_LOGIC_OP: GetPName read new GetPName($0BF2); public static property AUX_BUFFERS: GetPName read new GetPName($0C00); public static property DRAW_BUFFER: GetPName read new GetPName($0C01); public static property DRAW_BUFFER_EXT: GetPName read new GetPName($0C01); public static property READ_BUFFER: GetPName read new GetPName($0C02); public static property READ_BUFFER_EXT: GetPName read new GetPName($0C02); public static property READ_BUFFER_NV: GetPName read new GetPName($0C02); public static property SCISSOR_BOX: GetPName read new GetPName($0C10); public static property SCISSOR_TEST: GetPName read new GetPName($0C11); public static property INDEX_CLEAR_VALUE: GetPName read new GetPName($0C20); public static property INDEX_WRITEMASK: GetPName read new GetPName($0C21); public static property COLOR_CLEAR_VALUE: GetPName read new GetPName($0C22); public static property COLOR_WRITEMASK: GetPName read new GetPName($0C23); public static property INDEX_MODE: GetPName read new GetPName($0C30); public static property RGBA_MODE: GetPName read new GetPName($0C31); public static property DOUBLEBUFFER: GetPName read new GetPName($0C32); public static property STEREO: GetPName read new GetPName($0C33); public static property RENDER_MODE: GetPName read new GetPName($0C40); public static property PERSPECTIVE_CORRECTION_HINT: GetPName read new GetPName($0C50); public static property POINT_SMOOTH_HINT: GetPName read new GetPName($0C51); public static property LINE_SMOOTH_HINT: GetPName read new GetPName($0C52); public static property POLYGON_SMOOTH_HINT: GetPName read new GetPName($0C53); public static property FOG_HINT: GetPName read new GetPName($0C54); public static property TEXTURE_GEN_S: GetPName read new GetPName($0C60); public static property TEXTURE_GEN_T: GetPName read new GetPName($0C61); public static property TEXTURE_GEN_R: GetPName read new GetPName($0C62); public static property TEXTURE_GEN_Q: GetPName read new GetPName($0C63); public static property PIXEL_MAP_I_TO_I_SIZE: GetPName read new GetPName($0CB0); public static property PIXEL_MAP_S_TO_S_SIZE: GetPName read new GetPName($0CB1); public static property PIXEL_MAP_I_TO_R_SIZE: GetPName read new GetPName($0CB2); public static property PIXEL_MAP_I_TO_G_SIZE: GetPName read new GetPName($0CB3); public static property PIXEL_MAP_I_TO_B_SIZE: GetPName read new GetPName($0CB4); public static property PIXEL_MAP_I_TO_A_SIZE: GetPName read new GetPName($0CB5); public static property PIXEL_MAP_R_TO_R_SIZE: GetPName read new GetPName($0CB6); public static property PIXEL_MAP_G_TO_G_SIZE: GetPName read new GetPName($0CB7); public static property PIXEL_MAP_B_TO_B_SIZE: GetPName read new GetPName($0CB8); public static property PIXEL_MAP_A_TO_A_SIZE: GetPName read new GetPName($0CB9); public static property UNPACK_SWAP_BYTES: GetPName read new GetPName($0CF0); public static property UNPACK_LSB_FIRST: GetPName read new GetPName($0CF1); public static property UNPACK_ROW_LENGTH: GetPName read new GetPName($0CF2); public static property UNPACK_SKIP_ROWS: GetPName read new GetPName($0CF3); public static property UNPACK_SKIP_PIXELS: GetPName read new GetPName($0CF4); public static property UNPACK_ALIGNMENT: GetPName read new GetPName($0CF5); public static property PACK_SWAP_BYTES: GetPName read new GetPName($0D00); public static property PACK_LSB_FIRST: GetPName read new GetPName($0D01); public static property PACK_ROW_LENGTH: GetPName read new GetPName($0D02); public static property PACK_SKIP_ROWS: GetPName read new GetPName($0D03); public static property PACK_SKIP_PIXELS: GetPName read new GetPName($0D04); public static property PACK_ALIGNMENT: GetPName read new GetPName($0D05); public static property MAP_COLOR: GetPName read new GetPName($0D10); public static property MAP_STENCIL: GetPName read new GetPName($0D11); public static property INDEX_SHIFT: GetPName read new GetPName($0D12); public static property INDEX_OFFSET: GetPName read new GetPName($0D13); public static property RED_SCALE: GetPName read new GetPName($0D14); public static property RED_BIAS: GetPName read new GetPName($0D15); public static property ZOOM_X: GetPName read new GetPName($0D16); public static property ZOOM_Y: GetPName read new GetPName($0D17); public static property GREEN_SCALE: GetPName read new GetPName($0D18); public static property GREEN_BIAS: GetPName read new GetPName($0D19); public static property BLUE_SCALE: GetPName read new GetPName($0D1A); public static property BLUE_BIAS: GetPName read new GetPName($0D1B); public static property ALPHA_SCALE: GetPName read new GetPName($0D1C); public static property ALPHA_BIAS: GetPName read new GetPName($0D1D); public static property DEPTH_SCALE: GetPName read new GetPName($0D1E); public static property DEPTH_BIAS: GetPName read new GetPName($0D1F); public static property MAX_EVAL_ORDER: GetPName read new GetPName($0D30); public static property MAX_LIGHTS: GetPName read new GetPName($0D31); public static property MAX_CLIP_DISTANCES: GetPName read new GetPName($0D32); public static property MAX_CLIP_PLANES: GetPName read new GetPName($0D32); public static property MAX_TEXTURE_SIZE: GetPName read new GetPName($0D33); public static property MAX_PIXEL_MAP_TABLE: GetPName read new GetPName($0D34); public static property MAX_ATTRIB_STACK_DEPTH: GetPName read new GetPName($0D35); public static property MAX_MODELVIEW_STACK_DEPTH: GetPName read new GetPName($0D36); public static property MAX_NAME_STACK_DEPTH: GetPName read new GetPName($0D37); public static property MAX_PROJECTION_STACK_DEPTH: GetPName read new GetPName($0D38); public static property MAX_TEXTURE_STACK_DEPTH: GetPName read new GetPName($0D39); public static property MAX_VIEWPORT_DIMS: GetPName read new GetPName($0D3A); public static property MAX_CLIENT_ATTRIB_STACK_DEPTH: GetPName read new GetPName($0D3B); public static property SUBPIXEL_BITS: GetPName read new GetPName($0D50); public static property INDEX_BITS: GetPName read new GetPName($0D51); public static property RED_BITS: GetPName read new GetPName($0D52); public static property GREEN_BITS: GetPName read new GetPName($0D53); public static property BLUE_BITS: GetPName read new GetPName($0D54); public static property ALPHA_BITS: GetPName read new GetPName($0D55); public static property DEPTH_BITS: GetPName read new GetPName($0D56); public static property STENCIL_BITS: GetPName read new GetPName($0D57); public static property ACCUM_RED_BITS: GetPName read new GetPName($0D58); public static property ACCUM_GREEN_BITS: GetPName read new GetPName($0D59); public static property ACCUM_BLUE_BITS: GetPName read new GetPName($0D5A); public static property ACCUM_ALPHA_BITS: GetPName read new GetPName($0D5B); public static property NAME_STACK_DEPTH: GetPName read new GetPName($0D70); public static property AUTO_NORMAL: GetPName read new GetPName($0D80); public static property MAP1_COLOR_4: GetPName read new GetPName($0D90); public static property MAP1_INDEX: GetPName read new GetPName($0D91); public static property MAP1_NORMAL: GetPName read new GetPName($0D92); public static property MAP1_TEXTURE_COORD_1: GetPName read new GetPName($0D93); public static property MAP1_TEXTURE_COORD_2: GetPName read new GetPName($0D94); public static property MAP1_TEXTURE_COORD_3: GetPName read new GetPName($0D95); public static property MAP1_TEXTURE_COORD_4: GetPName read new GetPName($0D96); public static property MAP1_VERTEX_3: GetPName read new GetPName($0D97); public static property MAP1_VERTEX_4: GetPName read new GetPName($0D98); public static property MAP2_COLOR_4: GetPName read new GetPName($0DB0); public static property MAP2_INDEX: GetPName read new GetPName($0DB1); public static property MAP2_NORMAL: GetPName read new GetPName($0DB2); public static property MAP2_TEXTURE_COORD_1: GetPName read new GetPName($0DB3); public static property MAP2_TEXTURE_COORD_2: GetPName read new GetPName($0DB4); public static property MAP2_TEXTURE_COORD_3: GetPName read new GetPName($0DB5); public static property MAP2_TEXTURE_COORD_4: GetPName read new GetPName($0DB6); public static property MAP2_VERTEX_3: GetPName read new GetPName($0DB7); public static property MAP2_VERTEX_4: GetPName read new GetPName($0DB8); public static property MAP1_GRID_DOMAIN: GetPName read new GetPName($0DD0); public static property MAP1_GRID_SEGMENTS: GetPName read new GetPName($0DD1); public static property MAP2_GRID_DOMAIN: GetPName read new GetPName($0DD2); public static property MAP2_GRID_SEGMENTS: GetPName read new GetPName($0DD3); public static property TEXTURE_1D: GetPName read new GetPName($0DE0); public static property TEXTURE_2D: GetPName read new GetPName($0DE1); public static property FEEDBACK_BUFFER_SIZE: GetPName read new GetPName($0DF1); public static property FEEDBACK_BUFFER_TYPE: GetPName read new GetPName($0DF2); public static property SELECTION_BUFFER_SIZE: GetPName read new GetPName($0DF4); public static property POLYGON_OFFSET_UNITS: GetPName read new GetPName($2A00); public static property POLYGON_OFFSET_POINT: GetPName read new GetPName($2A01); public static property POLYGON_OFFSET_LINE: GetPName read new GetPName($2A02); public static property CLIP_PLANE0: GetPName read new GetPName($3000); public static property CLIP_PLANE1: GetPName read new GetPName($3001); public static property CLIP_PLANE2: GetPName read new GetPName($3002); public static property CLIP_PLANE3: GetPName read new GetPName($3003); public static property CLIP_PLANE4: GetPName read new GetPName($3004); public static property CLIP_PLANE5: GetPName read new GetPName($3005); public static property LIGHT0: GetPName read new GetPName($4000); public static property LIGHT1: GetPName read new GetPName($4001); public static property LIGHT2: GetPName read new GetPName($4002); public static property LIGHT3: GetPName read new GetPName($4003); public static property LIGHT4: GetPName read new GetPName($4004); public static property LIGHT5: GetPName read new GetPName($4005); public static property LIGHT6: GetPName read new GetPName($4006); public static property LIGHT7: GetPName read new GetPName($4007); public static property BLEND_COLOR: GetPName read new GetPName($8005); public static property BLEND_COLOR_EXT: GetPName read new GetPName($8005); public static property BLEND_EQUATION_EXT: GetPName read new GetPName($8009); public static property BLEND_EQUATION_RGB: GetPName read new GetPName($8009); public static property PACK_CMYK_HINT_EXT: GetPName read new GetPName($800E); public static property UNPACK_CMYK_HINT_EXT: GetPName read new GetPName($800F); public static property CONVOLUTION_1D_EXT: GetPName read new GetPName($8010); public static property CONVOLUTION_2D_EXT: GetPName read new GetPName($8011); public static property SEPARABLE_2D_EXT: GetPName read new GetPName($8012); public static property POST_CONVOLUTION_RED_SCALE_EXT: GetPName read new GetPName($801C); public static property POST_CONVOLUTION_GREEN_SCALE_EXT: GetPName read new GetPName($801D); public static property POST_CONVOLUTION_BLUE_SCALE_EXT: GetPName read new GetPName($801E); public static property POST_CONVOLUTION_ALPHA_SCALE_EXT: GetPName read new GetPName($801F); public static property POST_CONVOLUTION_RED_BIAS_EXT: GetPName read new GetPName($8020); public static property POST_CONVOLUTION_GREEN_BIAS_EXT: GetPName read new GetPName($8021); public static property POST_CONVOLUTION_BLUE_BIAS_EXT: GetPName read new GetPName($8022); public static property POST_CONVOLUTION_ALPHA_BIAS_EXT: GetPName read new GetPName($8023); public static property HISTOGRAM_EXT: GetPName read new GetPName($8024); public static property MINMAX_EXT: GetPName read new GetPName($802E); public static property POLYGON_OFFSET_FILL: GetPName read new GetPName($8037); public static property POLYGON_OFFSET_FACTOR: GetPName read new GetPName($8038); public static property POLYGON_OFFSET_BIAS_EXT: GetPName read new GetPName($8039); public static property RESCALE_NORMAL_EXT: GetPName read new GetPName($803A); public static property TEXTURE_BINDING_1D: GetPName read new GetPName($8068); public static property TEXTURE_BINDING_2D: GetPName read new GetPName($8069); public static property TEXTURE_3D_BINDING_EXT: GetPName read new GetPName($806A); public static property TEXTURE_BINDING_3D: GetPName read new GetPName($806A); public static property PACK_SKIP_IMAGES: GetPName read new GetPName($806B); public static property PACK_SKIP_IMAGES_EXT: GetPName read new GetPName($806B); public static property PACK_IMAGE_HEIGHT: GetPName read new GetPName($806C); public static property PACK_IMAGE_HEIGHT_EXT: GetPName read new GetPName($806C); public static property UNPACK_SKIP_IMAGES: GetPName read new GetPName($806D); public static property UNPACK_SKIP_IMAGES_EXT: GetPName read new GetPName($806D); public static property UNPACK_IMAGE_HEIGHT: GetPName read new GetPName($806E); public static property UNPACK_IMAGE_HEIGHT_EXT: GetPName read new GetPName($806E); public static property TEXTURE_3D_EXT: GetPName read new GetPName($806F); public static property MAX_3D_TEXTURE_SIZE: GetPName read new GetPName($8073); public static property MAX_3D_TEXTURE_SIZE_EXT: GetPName read new GetPName($8073); public static property VERTEX_ARRAY: GetPName read new GetPName($8074); public static property NORMAL_ARRAY: GetPName read new GetPName($8075); public static property COLOR_ARRAY: GetPName read new GetPName($8076); public static property INDEX_ARRAY: GetPName read new GetPName($8077); public static property TEXTURE_COORD_ARRAY: GetPName read new GetPName($8078); public static property EDGE_FLAG_ARRAY: GetPName read new GetPName($8079); public static property VERTEX_ARRAY_SIZE: GetPName read new GetPName($807A); public static property VERTEX_ARRAY_TYPE: GetPName read new GetPName($807B); public static property VERTEX_ARRAY_STRIDE: GetPName read new GetPName($807C); public static property VERTEX_ARRAY_COUNT_EXT: GetPName read new GetPName($807D); public static property NORMAL_ARRAY_TYPE: GetPName read new GetPName($807E); public static property NORMAL_ARRAY_STRIDE: GetPName read new GetPName($807F); public static property NORMAL_ARRAY_COUNT_EXT: GetPName read new GetPName($8080); public static property COLOR_ARRAY_SIZE: GetPName read new GetPName($8081); public static property COLOR_ARRAY_TYPE: GetPName read new GetPName($8082); public static property COLOR_ARRAY_STRIDE: GetPName read new GetPName($8083); public static property COLOR_ARRAY_COUNT_EXT: GetPName read new GetPName($8084); public static property INDEX_ARRAY_TYPE: GetPName read new GetPName($8085); public static property INDEX_ARRAY_STRIDE: GetPName read new GetPName($8086); public static property INDEX_ARRAY_COUNT_EXT: GetPName read new GetPName($8087); public static property TEXTURE_COORD_ARRAY_SIZE: GetPName read new GetPName($8088); public static property TEXTURE_COORD_ARRAY_TYPE: GetPName read new GetPName($8089); public static property TEXTURE_COORD_ARRAY_STRIDE: GetPName read new GetPName($808A); public static property TEXTURE_COORD_ARRAY_COUNT_EXT: GetPName read new GetPName($808B); public static property EDGE_FLAG_ARRAY_STRIDE: GetPName read new GetPName($808C); public static property EDGE_FLAG_ARRAY_COUNT_EXT: GetPName read new GetPName($808D); public static property INTERLACE_SGIX: GetPName read new GetPName($8094); public static property DETAIL_TEXTURE_2D_BINDING_SGIS: GetPName read new GetPName($8096); public static property MULTISAMPLE_SGIS: GetPName read new GetPName($809D); public static property SAMPLE_ALPHA_TO_MASK_SGIS: GetPName read new GetPName($809E); public static property SAMPLE_ALPHA_TO_ONE_SGIS: GetPName read new GetPName($809F); public static property SAMPLE_MASK_SGIS: GetPName read new GetPName($80A0); public static property SAMPLE_BUFFERS: GetPName read new GetPName($80A8); public static property SAMPLE_BUFFERS_SGIS: GetPName read new GetPName($80A8); public static property SAMPLES: GetPName read new GetPName($80A9); public static property SAMPLES_SGIS: GetPName read new GetPName($80A9); public static property SAMPLE_COVERAGE_VALUE: GetPName read new GetPName($80AA); public static property SAMPLE_MASK_VALUE_SGIS: GetPName read new GetPName($80AA); public static property SAMPLE_COVERAGE_INVERT: GetPName read new GetPName($80AB); public static property SAMPLE_MASK_INVERT_SGIS: GetPName read new GetPName($80AB); public static property SAMPLE_PATTERN_SGIS: GetPName read new GetPName($80AC); public static property COLOR_MATRIX_SGI: GetPName read new GetPName($80B1); public static property COLOR_MATRIX_STACK_DEPTH_SGI: GetPName read new GetPName($80B2); public static property MAX_COLOR_MATRIX_STACK_DEPTH_SGI: GetPName read new GetPName($80B3); public static property POST_COLOR_MATRIX_RED_SCALE_SGI: GetPName read new GetPName($80B4); public static property POST_COLOR_MATRIX_GREEN_SCALE_SGI: GetPName read new GetPName($80B5); public static property POST_COLOR_MATRIX_BLUE_SCALE_SGI: GetPName read new GetPName($80B6); public static property POST_COLOR_MATRIX_ALPHA_SCALE_SGI: GetPName read new GetPName($80B7); public static property POST_COLOR_MATRIX_RED_BIAS_SGI: GetPName read new GetPName($80B8); public static property POST_COLOR_MATRIX_GREEN_BIAS_SGI: GetPName read new GetPName($80B9); public static property POST_COLOR_MATRIX_BLUE_BIAS_SGI: GetPName read new GetPName($80BA); public static property POST_COLOR_MATRIX_ALPHA_BIAS_SGI: GetPName read new GetPName($80BB); public static property TEXTURE_COLOR_TABLE_SGI: GetPName read new GetPName($80BC); public static property BLEND_DST_RGB: GetPName read new GetPName($80C8); public static property BLEND_SRC_RGB: GetPName read new GetPName($80C9); public static property BLEND_DST_ALPHA: GetPName read new GetPName($80CA); public static property BLEND_SRC_ALPHA: GetPName read new GetPName($80CB); public static property COLOR_TABLE_SGI: GetPName read new GetPName($80D0); public static property POST_CONVOLUTION_COLOR_TABLE_SGI: GetPName read new GetPName($80D1); public static property POST_COLOR_MATRIX_COLOR_TABLE_SGI: GetPName read new GetPName($80D2); public static property MAX_ELEMENTS_VERTICES: GetPName read new GetPName($80E8); public static property MAX_ELEMENTS_INDICES: GetPName read new GetPName($80E9); public static property POINT_SIZE_MIN_SGIS: GetPName read new GetPName($8126); public static property POINT_SIZE_MAX_SGIS: GetPName read new GetPName($8127); public static property POINT_FADE_THRESHOLD_SIZE: GetPName read new GetPName($8128); public static property POINT_FADE_THRESHOLD_SIZE_SGIS: GetPName read new GetPName($8128); public static property DISTANCE_ATTENUATION_SGIS: GetPName read new GetPName($8129); public static property FOG_FUNC_POINTS_SGIS: GetPName read new GetPName($812B); public static property MAX_FOG_FUNC_POINTS_SGIS: GetPName read new GetPName($812C); public static property PACK_SKIP_VOLUMES_SGIS: GetPName read new GetPName($8130); public static property PACK_IMAGE_DEPTH_SGIS: GetPName read new GetPName($8131); public static property UNPACK_SKIP_VOLUMES_SGIS: GetPName read new GetPName($8132); public static property UNPACK_IMAGE_DEPTH_SGIS: GetPName read new GetPName($8133); public static property TEXTURE_4D_SGIS: GetPName read new GetPName($8134); public static property MAX_4D_TEXTURE_SIZE_SGIS: GetPName read new GetPName($8138); public static property PIXEL_TEX_GEN_SGIX: GetPName read new GetPName($8139); public static property PIXEL_TILE_BEST_ALIGNMENT_SGIX: GetPName read new GetPName($813E); public static property PIXEL_TILE_CACHE_INCREMENT_SGIX: GetPName read new GetPName($813F); public static property PIXEL_TILE_WIDTH_SGIX: GetPName read new GetPName($8140); public static property PIXEL_TILE_HEIGHT_SGIX: GetPName read new GetPName($8141); public static property PIXEL_TILE_GRID_WIDTH_SGIX: GetPName read new GetPName($8142); public static property PIXEL_TILE_GRID_HEIGHT_SGIX: GetPName read new GetPName($8143); public static property PIXEL_TILE_GRID_DEPTH_SGIX: GetPName read new GetPName($8144); public static property PIXEL_TILE_CACHE_SIZE_SGIX: GetPName read new GetPName($8145); public static property SPRITE_SGIX: GetPName read new GetPName($8148); public static property SPRITE_MODE_SGIX: GetPName read new GetPName($8149); public static property SPRITE_AXIS_SGIX: GetPName read new GetPName($814A); public static property SPRITE_TRANSLATION_SGIX: GetPName read new GetPName($814B); public static property TEXTURE_4D_BINDING_SGIS: GetPName read new GetPName($814F); public static property MAX_CLIPMAP_DEPTH_SGIX: GetPName read new GetPName($8177); public static property MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX: GetPName read new GetPName($8178); public static property POST_TEXTURE_FILTER_BIAS_RANGE_SGIX: GetPName read new GetPName($817B); public static property POST_TEXTURE_FILTER_SCALE_RANGE_SGIX: GetPName read new GetPName($817C); public static property REFERENCE_PLANE_SGIX: GetPName read new GetPName($817D); public static property REFERENCE_PLANE_EQUATION_SGIX: GetPName read new GetPName($817E); public static property IR_INSTRUMENT1_SGIX: GetPName read new GetPName($817F); public static property INSTRUMENT_MEASUREMENTS_SGIX: GetPName read new GetPName($8181); public static property CALLIGRAPHIC_FRAGMENT_SGIX: GetPName read new GetPName($8183); public static property FRAMEZOOM_SGIX: GetPName read new GetPName($818B); public static property FRAMEZOOM_FACTOR_SGIX: GetPName read new GetPName($818C); public static property MAX_FRAMEZOOM_FACTOR_SGIX: GetPName read new GetPName($818D); public static property GENERATE_MIPMAP_HINT_SGIS: GetPName read new GetPName($8192); public static property DEFORMATIONS_MASK_SGIX: GetPName read new GetPName($8196); public static property FOG_OFFSET_SGIX: GetPName read new GetPName($8198); public static property FOG_OFFSET_VALUE_SGIX: GetPName read new GetPName($8199); public static property LIGHT_MODEL_COLOR_CONTROL: GetPName read new GetPName($81F8); public static property SHARED_TEXTURE_PALETTE_EXT: GetPName read new GetPName($81FB); public static property MAJOR_VERSION: GetPName read new GetPName($821B); public static property MINOR_VERSION: GetPName read new GetPName($821C); public static property NUM_EXTENSIONS: GetPName read new GetPName($821D); public static property CONTEXT_FLAGS: GetPName read new GetPName($821E); public static property PROGRAM_PIPELINE_BINDING: GetPName read new GetPName($825A); public static property MAX_VIEWPORTS: GetPName read new GetPName($825B); public static property VIEWPORT_SUBPIXEL_BITS: GetPName read new GetPName($825C); public static property VIEWPORT_BOUNDS_RANGE: GetPName read new GetPName($825D); public static property LAYER_PROVOKING_VERTEX: GetPName read new GetPName($825E); public static property VIEWPORT_INDEX_PROVOKING_VERTEX: GetPName read new GetPName($825F); public static property MAX_COMPUTE_UNIFORM_COMPONENTS: GetPName read new GetPName($8263); public static property MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS: GetPName read new GetPName($8264); public static property MAX_COMPUTE_ATOMIC_COUNTERS: GetPName read new GetPName($8265); public static property MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS: GetPName read new GetPName($8266); public static property MAX_DEBUG_GROUP_STACK_DEPTH: GetPName read new GetPName($826C); public static property DEBUG_GROUP_STACK_DEPTH: GetPName read new GetPName($826D); public static property MAX_UNIFORM_LOCATIONS: GetPName read new GetPName($826E); public static property VERTEX_BINDING_DIVISOR: GetPName read new GetPName($82D6); public static property VERTEX_BINDING_OFFSET: GetPName read new GetPName($82D7); public static property VERTEX_BINDING_STRIDE: GetPName read new GetPName($82D8); public static property MAX_VERTEX_ATTRIB_RELATIVE_OFFSET: GetPName read new GetPName($82D9); public static property MAX_VERTEX_ATTRIB_BINDINGS: GetPName read new GetPName($82DA); public static property MAX_LABEL_LENGTH: GetPName read new GetPName($82E8); public static property CONVOLUTION_HINT_SGIX: GetPName read new GetPName($8316); public static property ASYNC_MARKER_SGIX: GetPName read new GetPName($8329); public static property PIXEL_TEX_GEN_MODE_SGIX: GetPName read new GetPName($832B); public static property ASYNC_HISTOGRAM_SGIX: GetPName read new GetPName($832C); public static property MAX_ASYNC_HISTOGRAM_SGIX: GetPName read new GetPName($832D); public static property PIXEL_TEXTURE_SGIS: GetPName read new GetPName($8353); public static property ASYNC_TEX_IMAGE_SGIX: GetPName read new GetPName($835C); public static property ASYNC_DRAW_PIXELS_SGIX: GetPName read new GetPName($835D); public static property ASYNC_READ_PIXELS_SGIX: GetPName read new GetPName($835E); public static property MAX_ASYNC_TEX_IMAGE_SGIX: GetPName read new GetPName($835F); public static property MAX_ASYNC_DRAW_PIXELS_SGIX: GetPName read new GetPName($8360); public static property MAX_ASYNC_READ_PIXELS_SGIX: GetPName read new GetPName($8361); public static property VERTEX_PRECLIP_SGIX: GetPName read new GetPName($83EE); public static property VERTEX_PRECLIP_HINT_SGIX: GetPName read new GetPName($83EF); public static property FRAGMENT_LIGHTING_SGIX: GetPName read new GetPName($8400); public static property FRAGMENT_COLOR_MATERIAL_SGIX: GetPName read new GetPName($8401); public static property FRAGMENT_COLOR_MATERIAL_FACE_SGIX: GetPName read new GetPName($8402); public static property FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX: GetPName read new GetPName($8403); public static property MAX_FRAGMENT_LIGHTS_SGIX: GetPName read new GetPName($8404); public static property MAX_ACTIVE_LIGHTS_SGIX: GetPName read new GetPName($8405); public static property LIGHT_ENV_MODE_SGIX: GetPName read new GetPName($8407); public static property FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX: GetPName read new GetPName($8408); public static property FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX: GetPName read new GetPName($8409); public static property FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX: GetPName read new GetPName($840A); public static property FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX: GetPName read new GetPName($840B); public static property FRAGMENT_LIGHT0_SGIX: GetPName read new GetPName($840C); public static property PACK_RESAMPLE_SGIX: GetPName read new GetPName($842E); public static property UNPACK_RESAMPLE_SGIX: GetPName read new GetPName($842F); public static property ALIASED_POINT_SIZE_RANGE: GetPName read new GetPName($846D); public static property ALIASED_LINE_WIDTH_RANGE: GetPName read new GetPName($846E); public static property ACTIVE_TEXTURE: GetPName read new GetPName($84E0); public static property MAX_RENDERBUFFER_SIZE: GetPName read new GetPName($84E8); public static property TEXTURE_COMPRESSION_HINT: GetPName read new GetPName($84EF); public static property TEXTURE_BINDING_RECTANGLE: GetPName read new GetPName($84F6); public static property TEXTURE_BINDING_RECTANGLE_ARB: GetPName read new GetPName($84F6); public static property TEXTURE_BINDING_RECTANGLE_NV: GetPName read new GetPName($84F6); public static property MAX_RECTANGLE_TEXTURE_SIZE: GetPName read new GetPName($84F8); public static property MAX_TEXTURE_LOD_BIAS: GetPName read new GetPName($84FD); public static property TEXTURE_BINDING_CUBE_MAP: GetPName read new GetPName($8514); public static property TEXTURE_BINDING_CUBE_MAP_ARB: GetPName read new GetPName($8514); public static property TEXTURE_BINDING_CUBE_MAP_EXT: GetPName read new GetPName($8514); public static property TEXTURE_BINDING_CUBE_MAP_OES: GetPName read new GetPName($8514); public static property MAX_CUBE_MAP_TEXTURE_SIZE: GetPName read new GetPName($851C); public static property PACK_SUBSAMPLE_RATE_SGIX: GetPName read new GetPName($85A0); public static property UNPACK_SUBSAMPLE_RATE_SGIX: GetPName read new GetPName($85A1); public static property VERTEX_ARRAY_BINDING: GetPName read new GetPName($85B5); public static property PROGRAM_POINT_SIZE: GetPName read new GetPName($8642); public static property NUM_COMPRESSED_TEXTURE_FORMATS: GetPName read new GetPName($86A2); public static property COMPRESSED_TEXTURE_FORMATS: GetPName read new GetPName($86A3); public static property NUM_PROGRAM_BINARY_FORMATS: GetPName read new GetPName($87FE); public static property PROGRAM_BINARY_FORMATS: GetPName read new GetPName($87FF); public static property STENCIL_BACK_FUNC: GetPName read new GetPName($8800); public static property STENCIL_BACK_FAIL: GetPName read new GetPName($8801); public static property STENCIL_BACK_PASS_DEPTH_FAIL: GetPName read new GetPName($8802); public static property STENCIL_BACK_PASS_DEPTH_PASS: GetPName read new GetPName($8803); public static property MAX_DRAW_BUFFERS: GetPName read new GetPName($8824); public static property BLEND_EQUATION_ALPHA: GetPName read new GetPName($883D); public static property MAX_VERTEX_ATTRIBS: GetPName read new GetPName($8869); public static property MAX_TEXTURE_IMAGE_UNITS: GetPName read new GetPName($8872); public static property ARRAY_BUFFER_BINDING: GetPName read new GetPName($8894); public static property ELEMENT_ARRAY_BUFFER_BINDING: GetPName read new GetPName($8895); public static property PIXEL_PACK_BUFFER_BINDING: GetPName read new GetPName($88ED); public static property PIXEL_UNPACK_BUFFER_BINDING: GetPName read new GetPName($88EF); public static property MAX_DUAL_SOURCE_DRAW_BUFFERS: GetPName read new GetPName($88FC); public static property MAX_ARRAY_TEXTURE_LAYERS: GetPName read new GetPName($88FF); public static property MIN_PROGRAM_TEXEL_OFFSET: GetPName read new GetPName($8904); public static property MAX_PROGRAM_TEXEL_OFFSET: GetPName read new GetPName($8905); public static property SAMPLER_BINDING: GetPName read new GetPName($8919); public static property UNIFORM_BUFFER_BINDING: GetPName read new GetPName($8A28); public static property UNIFORM_BUFFER_START: GetPName read new GetPName($8A29); public static property UNIFORM_BUFFER_SIZE: GetPName read new GetPName($8A2A); public static property MAX_VERTEX_UNIFORM_BLOCKS: GetPName read new GetPName($8A2B); public static property MAX_GEOMETRY_UNIFORM_BLOCKS: GetPName read new GetPName($8A2C); public static property MAX_FRAGMENT_UNIFORM_BLOCKS: GetPName read new GetPName($8A2D); public static property MAX_COMBINED_UNIFORM_BLOCKS: GetPName read new GetPName($8A2E); public static property MAX_UNIFORM_BUFFER_BINDINGS: GetPName read new GetPName($8A2F); public static property MAX_UNIFORM_BLOCK_SIZE: GetPName read new GetPName($8A30); public static property MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GetPName read new GetPName($8A31); public static property MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: GetPName read new GetPName($8A32); public static property MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GetPName read new GetPName($8A33); public static property UNIFORM_BUFFER_OFFSET_ALIGNMENT: GetPName read new GetPName($8A34); public static property MAX_FRAGMENT_UNIFORM_COMPONENTS: GetPName read new GetPName($8B49); public static property MAX_VERTEX_UNIFORM_COMPONENTS: GetPName read new GetPName($8B4A); public static property MAX_VARYING_COMPONENTS: GetPName read new GetPName($8B4B); public static property MAX_VARYING_FLOATS: GetPName read new GetPName($8B4B); public static property MAX_VERTEX_TEXTURE_IMAGE_UNITS: GetPName read new GetPName($8B4C); public static property MAX_COMBINED_TEXTURE_IMAGE_UNITS: GetPName read new GetPName($8B4D); public static property FRAGMENT_SHADER_DERIVATIVE_HINT: GetPName read new GetPName($8B8B); public static property CURRENT_PROGRAM: GetPName read new GetPName($8B8D); public static property IMPLEMENTATION_COLOR_READ_TYPE: GetPName read new GetPName($8B9A); public static property IMPLEMENTATION_COLOR_READ_FORMAT: GetPName read new GetPName($8B9B); public static property TEXTURE_BINDING_1D_ARRAY: GetPName read new GetPName($8C1C); public static property TEXTURE_BINDING_2D_ARRAY: GetPName read new GetPName($8C1D); public static property MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: GetPName read new GetPName($8C29); public static property MAX_TEXTURE_BUFFER_SIZE: GetPName read new GetPName($8C2B); public static property TEXTURE_BINDING_BUFFER: GetPName read new GetPName($8C2C); public static property TRANSFORM_FEEDBACK_BUFFER_START: GetPName read new GetPName($8C84); public static property TRANSFORM_FEEDBACK_BUFFER_SIZE: GetPName read new GetPName($8C85); public static property TRANSFORM_FEEDBACK_BUFFER_BINDING: GetPName read new GetPName($8C8F); public static property MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM: GetPName read new GetPName($8C90); public static property MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM: GetPName read new GetPName($8C91); public static property STENCIL_BACK_REF: GetPName read new GetPName($8CA3); public static property STENCIL_BACK_VALUE_MASK: GetPName read new GetPName($8CA4); public static property STENCIL_BACK_WRITEMASK: GetPName read new GetPName($8CA5); public static property DRAW_FRAMEBUFFER_BINDING: GetPName read new GetPName($8CA6); public static property RENDERBUFFER_BINDING: GetPName read new GetPName($8CA7); public static property READ_FRAMEBUFFER_BINDING: GetPName read new GetPName($8CAA); public static property MAX_COLOR_ATTACHMENTS: GetPName read new GetPName($8CDF); public static property MAX_COLOR_ATTACHMENTS_EXT: GetPName read new GetPName($8CDF); public static property MAX_COLOR_ATTACHMENTS_NV: GetPName read new GetPName($8CDF); public static property MAX_ELEMENT_INDEX: GetPName read new GetPName($8D6B); public static property MAX_GEOMETRY_UNIFORM_COMPONENTS: GetPName read new GetPName($8DDF); public static property SHADER_BINARY_FORMATS: GetPName read new GetPName($8DF8); public static property NUM_SHADER_BINARY_FORMATS: GetPName read new GetPName($8DF9); public static property SHADER_COMPILER: GetPName read new GetPName($8DFA); public static property MAX_VERTEX_UNIFORM_VECTORS: GetPName read new GetPName($8DFB); public static property MAX_VARYING_VECTORS: GetPName read new GetPName($8DFC); public static property MAX_FRAGMENT_UNIFORM_VECTORS: GetPName read new GetPName($8DFD); public static property TIMESTAMP: GetPName read new GetPName($8E28); public static property PROVOKING_VERTEX: GetPName read new GetPName($8E4F); public static property MAX_SAMPLE_MASK_WORDS: GetPName read new GetPName($8E59); public static property MAX_TESS_CONTROL_UNIFORM_BLOCKS: GetPName read new GetPName($8E89); public static property MAX_TESS_EVALUATION_UNIFORM_BLOCKS: GetPName read new GetPName($8E8A); public static property FETCH_PER_SAMPLE_ARM: GetPName read new GetPName($8F65); public static property FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM: GetPName read new GetPName($8F66); public static property PRIMITIVE_RESTART_INDEX: GetPName read new GetPName($8F9E); public static property MIN_MAP_BUFFER_ALIGNMENT: GetPName read new GetPName($90BC); public static property SHADER_STORAGE_BUFFER_BINDING: GetPName read new GetPName($90D3); public static property SHADER_STORAGE_BUFFER_START: GetPName read new GetPName($90D4); public static property SHADER_STORAGE_BUFFER_SIZE: GetPName read new GetPName($90D5); public static property MAX_VERTEX_SHADER_STORAGE_BLOCKS: GetPName read new GetPName($90D6); public static property MAX_GEOMETRY_SHADER_STORAGE_BLOCKS: GetPName read new GetPName($90D7); public static property MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS: GetPName read new GetPName($90D8); public static property MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS: GetPName read new GetPName($90D9); public static property MAX_FRAGMENT_SHADER_STORAGE_BLOCKS: GetPName read new GetPName($90DA); public static property MAX_COMPUTE_SHADER_STORAGE_BLOCKS: GetPName read new GetPName($90DB); public static property MAX_COMBINED_SHADER_STORAGE_BLOCKS: GetPName read new GetPName($90DC); public static property MAX_SHADER_STORAGE_BUFFER_BINDINGS: GetPName read new GetPName($90DD); public static property SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT: GetPName read new GetPName($90DF); public static property MAX_COMPUTE_WORK_GROUP_INVOCATIONS: GetPName read new GetPName($90EB); public static property DISPATCH_INDIRECT_BUFFER_BINDING: GetPName read new GetPName($90EF); public static property TEXTURE_BINDING_2D_MULTISAMPLE: GetPName read new GetPName($9104); public static property TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY: GetPName read new GetPName($9105); public static property MAX_COLOR_TEXTURE_SAMPLES: GetPName read new GetPName($910E); public static property MAX_DEPTH_TEXTURE_SAMPLES: GetPName read new GetPName($910F); public static property MAX_INTEGER_SAMPLES: GetPName read new GetPName($9110); public static property MAX_SERVER_WAIT_TIMEOUT: GetPName read new GetPName($9111); public static property MAX_VERTEX_OUTPUT_COMPONENTS: GetPName read new GetPName($9122); public static property MAX_GEOMETRY_INPUT_COMPONENTS: GetPName read new GetPName($9123); public static property MAX_GEOMETRY_OUTPUT_COMPONENTS: GetPName read new GetPName($9124); public static property MAX_FRAGMENT_INPUT_COMPONENTS: GetPName read new GetPName($9125); public static property CONTEXT_PROFILE_MASK: GetPName read new GetPName($9126); public static property TEXTURE_BUFFER_OFFSET_ALIGNMENT: GetPName read new GetPName($919F); public static property MAX_COMPUTE_UNIFORM_BLOCKS: GetPName read new GetPName($91BB); public static property MAX_COMPUTE_TEXTURE_IMAGE_UNITS: GetPName read new GetPName($91BC); public static property MAX_COMPUTE_WORK_GROUP_COUNT: GetPName read new GetPName($91BE); public static property MAX_COMPUTE_WORK_GROUP_SIZE: GetPName read new GetPName($91BF); public static property MAX_VERTEX_ATOMIC_COUNTERS: GetPName read new GetPName($92D2); public static property MAX_TESS_CONTROL_ATOMIC_COUNTERS: GetPName read new GetPName($92D3); public static property MAX_TESS_EVALUATION_ATOMIC_COUNTERS: GetPName read new GetPName($92D4); public static property MAX_GEOMETRY_ATOMIC_COUNTERS: GetPName read new GetPName($92D5); public static property MAX_FRAGMENT_ATOMIC_COUNTERS: GetPName read new GetPName($92D6); public static property MAX_COMBINED_ATOMIC_COUNTERS: GetPName read new GetPName($92D7); public static property MAX_FRAMEBUFFER_WIDTH: GetPName read new GetPName($9315); public static property MAX_FRAMEBUFFER_HEIGHT: GetPName read new GetPName($9316); public static property MAX_FRAMEBUFFER_LAYERS: GetPName read new GetPName($9317); public static property MAX_FRAMEBUFFER_SAMPLES: GetPName read new GetPName($9318); public static property NUM_DEVICE_UUIDS_EXT: GetPName read new GetPName($9596); public static property DEVICE_UUID_EXT: GetPName read new GetPName($9597); public static property DRIVER_UUID_EXT: GetPName read new GetPName($9598); public static property DEVICE_LUID_EXT: GetPName read new GetPName($9599); public static property DEVICE_NODE_MASK_EXT: GetPName read new GetPName($959A); public static property SHADING_RATE_IMAGE_PER_PRIMITIVE_NV: GetPName read new GetPName($95B1); public static property SHADING_RATE_IMAGE_PALETTE_COUNT_NV: GetPName read new GetPName($95B2); public static property MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV: GetPName read new GetPName($95B6); public static property SHADING_RATE_QCOM: GetPName read new GetPName($96A4); public function ToString: string; override; begin if self.val = UInt32($0B00) then Result := 'CURRENT_COLOR' else if self.val = UInt32($0B01) then Result := 'CURRENT_INDEX' else if self.val = UInt32($0B02) then Result := 'CURRENT_NORMAL' else if self.val = UInt32($0B03) then Result := 'CURRENT_TEXTURE_COORDS' else if self.val = UInt32($0B04) then Result := 'CURRENT_RASTER_COLOR' else if self.val = UInt32($0B05) then Result := 'CURRENT_RASTER_INDEX' else if self.val = UInt32($0B06) then Result := 'CURRENT_RASTER_TEXTURE_COORDS' else if self.val = UInt32($0B07) then Result := 'CURRENT_RASTER_POSITION' else if self.val = UInt32($0B08) then Result := 'CURRENT_RASTER_POSITION_VALID' else if self.val = UInt32($0B09) then Result := 'CURRENT_RASTER_DISTANCE' else if self.val = UInt32($0B10) then Result := 'POINT_SMOOTH' else if self.val = UInt32($0B11) then Result := 'POINT_SIZE' else if self.val = UInt32($0B12) then Result := 'POINT_SIZE_RANGE' else if self.val = UInt32($0B12) then Result := 'SMOOTH_POINT_SIZE_RANGE' else if self.val = UInt32($0B13) then Result := 'POINT_SIZE_GRANULARITY' else if self.val = UInt32($0B13) then Result := 'SMOOTH_POINT_SIZE_GRANULARITY' else if self.val = UInt32($0B20) then Result := 'LINE_SMOOTH' else if self.val = UInt32($0B21) then Result := 'LINE_WIDTH' else if self.val = UInt32($0B22) then Result := 'LINE_WIDTH_RANGE' else if self.val = UInt32($0B22) then Result := 'SMOOTH_LINE_WIDTH_RANGE' else if self.val = UInt32($0B23) then Result := 'LINE_WIDTH_GRANULARITY' else if self.val = UInt32($0B23) then Result := 'SMOOTH_LINE_WIDTH_GRANULARITY' else if self.val = UInt32($0B24) then Result := 'LINE_STIPPLE' else if self.val = UInt32($0B25) then Result := 'LINE_STIPPLE_PATTERN' else if self.val = UInt32($0B26) then Result := 'LINE_STIPPLE_REPEAT' else if self.val = UInt32($0B30) then Result := 'LIST_MODE' else if self.val = UInt32($0B31) then Result := 'MAX_LIST_NESTING' else if self.val = UInt32($0B32) then Result := 'LIST_BASE' else if self.val = UInt32($0B33) then Result := 'LIST_INDEX' else if self.val = UInt32($0B40) then Result := 'POLYGON_MODE' else if self.val = UInt32($0B41) then Result := 'POLYGON_SMOOTH' else if self.val = UInt32($0B42) then Result := 'POLYGON_STIPPLE' else if self.val = UInt32($0B43) then Result := 'EDGE_FLAG' else if self.val = UInt32($0B44) then Result := 'CULL_FACE' else if self.val = UInt32($0B45) then Result := 'CULL_FACE_MODE' else if self.val = UInt32($0B46) then Result := 'FRONT_FACE' else if self.val = UInt32($0B50) then Result := 'LIGHTING' else if self.val = UInt32($0B51) then Result := 'LIGHT_MODEL_LOCAL_VIEWER' else if self.val = UInt32($0B52) then Result := 'LIGHT_MODEL_TWO_SIDE' else if self.val = UInt32($0B53) then Result := 'LIGHT_MODEL_AMBIENT' else if self.val = UInt32($0B54) then Result := 'SHADE_MODEL' else if self.val = UInt32($0B55) then Result := 'COLOR_MATERIAL_FACE' else if self.val = UInt32($0B56) then Result := 'COLOR_MATERIAL_PARAMETER' else if self.val = UInt32($0B57) then Result := 'COLOR_MATERIAL' else if self.val = UInt32($0B60) then Result := 'FOG' else if self.val = UInt32($0B61) then Result := 'FOG_INDEX' else if self.val = UInt32($0B62) then Result := 'FOG_DENSITY' else if self.val = UInt32($0B63) then Result := 'FOG_START' else if self.val = UInt32($0B64) then Result := 'FOG_END' else if self.val = UInt32($0B65) then Result := 'FOG_MODE' else if self.val = UInt32($0B66) then Result := 'FOG_COLOR' else if self.val = UInt32($0B70) then Result := 'DEPTH_RANGE' else if self.val = UInt32($0B71) then Result := 'DEPTH_TEST' else if self.val = UInt32($0B72) then Result := 'DEPTH_WRITEMASK' else if self.val = UInt32($0B73) then Result := 'DEPTH_CLEAR_VALUE' else if self.val = UInt32($0B74) then Result := 'DEPTH_FUNC' else if self.val = UInt32($0B80) then Result := 'ACCUM_CLEAR_VALUE' else if self.val = UInt32($0B90) then Result := 'STENCIL_TEST' else if self.val = UInt32($0B91) then Result := 'STENCIL_CLEAR_VALUE' else if self.val = UInt32($0B92) then Result := 'STENCIL_FUNC' else if self.val = UInt32($0B93) then Result := 'STENCIL_VALUE_MASK' else if self.val = UInt32($0B94) then Result := 'STENCIL_FAIL' else if self.val = UInt32($0B95) then Result := 'STENCIL_PASS_DEPTH_FAIL' else if self.val = UInt32($0B96) then Result := 'STENCIL_PASS_DEPTH_PASS' else if self.val = UInt32($0B97) then Result := 'STENCIL_REF' else if self.val = UInt32($0B98) then Result := 'STENCIL_WRITEMASK' else if self.val = UInt32($0BA0) then Result := 'MATRIX_MODE' else if self.val = UInt32($0BA1) then Result := 'NORMALIZE' else if self.val = UInt32($0BA2) then Result := 'VIEWPORT' else if self.val = UInt32($0BA3) then Result := 'MODELVIEW_STACK_DEPTH' else if self.val = UInt32($0BA3) then Result := 'MODELVIEW0_STACK_DEPTH_EXT' else if self.val = UInt32($0BA4) then Result := 'PROJECTION_STACK_DEPTH' else if self.val = UInt32($0BA5) then Result := 'TEXTURE_STACK_DEPTH' else if self.val = UInt32($0BA6) then Result := 'MODELVIEW_MATRIX' else if self.val = UInt32($0BA6) then Result := 'MODELVIEW0_MATRIX_EXT' else if self.val = UInt32($0BA7) then Result := 'PROJECTION_MATRIX' else if self.val = UInt32($0BA8) then Result := 'TEXTURE_MATRIX' else if self.val = UInt32($0BB0) then Result := 'ATTRIB_STACK_DEPTH' else if self.val = UInt32($0BB1) then Result := 'CLIENT_ATTRIB_STACK_DEPTH' else if self.val = UInt32($0BC0) then Result := 'ALPHA_TEST' else if self.val = UInt32($0BC0) then Result := 'ALPHA_TEST_QCOM' else if self.val = UInt32($0BC1) then Result := 'ALPHA_TEST_FUNC' else if self.val = UInt32($0BC1) then Result := 'ALPHA_TEST_FUNC_QCOM' else if self.val = UInt32($0BC2) then Result := 'ALPHA_TEST_REF' else if self.val = UInt32($0BC2) then Result := 'ALPHA_TEST_REF_QCOM' else if self.val = UInt32($0BD0) then Result := 'DITHER' else if self.val = UInt32($0BE0) then Result := 'BLEND_DST' else if self.val = UInt32($0BE1) then Result := 'BLEND_SRC' else if self.val = UInt32($0BE2) then Result := 'BLEND' else if self.val = UInt32($0BF0) then Result := 'LOGIC_OP_MODE' else if self.val = UInt32($0BF1) then Result := 'INDEX_LOGIC_OP' else if self.val = UInt32($0BF1) then Result := 'LOGIC_OP' else if self.val = UInt32($0BF2) then Result := 'COLOR_LOGIC_OP' else if self.val = UInt32($0C00) then Result := 'AUX_BUFFERS' else if self.val = UInt32($0C01) then Result := 'DRAW_BUFFER' else if self.val = UInt32($0C01) then Result := 'DRAW_BUFFER_EXT' else if self.val = UInt32($0C02) then Result := 'READ_BUFFER' else if self.val = UInt32($0C02) then Result := 'READ_BUFFER_EXT' else if self.val = UInt32($0C02) then Result := 'READ_BUFFER_NV' else if self.val = UInt32($0C10) then Result := 'SCISSOR_BOX' else if self.val = UInt32($0C11) then Result := 'SCISSOR_TEST' else if self.val = UInt32($0C20) then Result := 'INDEX_CLEAR_VALUE' else if self.val = UInt32($0C21) then Result := 'INDEX_WRITEMASK' else if self.val = UInt32($0C22) then Result := 'COLOR_CLEAR_VALUE' else if self.val = UInt32($0C23) then Result := 'COLOR_WRITEMASK' else if self.val = UInt32($0C30) then Result := 'INDEX_MODE' else if self.val = UInt32($0C31) then Result := 'RGBA_MODE' else if self.val = UInt32($0C32) then Result := 'DOUBLEBUFFER' else if self.val = UInt32($0C33) then Result := 'STEREO' else if self.val = UInt32($0C40) then Result := 'RENDER_MODE' else if self.val = UInt32($0C50) then Result := 'PERSPECTIVE_CORRECTION_HINT' else if self.val = UInt32($0C51) then Result := 'POINT_SMOOTH_HINT' else if self.val = UInt32($0C52) then Result := 'LINE_SMOOTH_HINT' else if self.val = UInt32($0C53) then Result := 'POLYGON_SMOOTH_HINT' else if self.val = UInt32($0C54) then Result := 'FOG_HINT' else if self.val = UInt32($0C60) then Result := 'TEXTURE_GEN_S' else if self.val = UInt32($0C61) then Result := 'TEXTURE_GEN_T' else if self.val = UInt32($0C62) then Result := 'TEXTURE_GEN_R' else if self.val = UInt32($0C63) then Result := 'TEXTURE_GEN_Q' else if self.val = UInt32($0CB0) then Result := 'PIXEL_MAP_I_TO_I_SIZE' else if self.val = UInt32($0CB1) then Result := 'PIXEL_MAP_S_TO_S_SIZE' else if self.val = UInt32($0CB2) then Result := 'PIXEL_MAP_I_TO_R_SIZE' else if self.val = UInt32($0CB3) then Result := 'PIXEL_MAP_I_TO_G_SIZE' else if self.val = UInt32($0CB4) then Result := 'PIXEL_MAP_I_TO_B_SIZE' else if self.val = UInt32($0CB5) then Result := 'PIXEL_MAP_I_TO_A_SIZE' else if self.val = UInt32($0CB6) then Result := 'PIXEL_MAP_R_TO_R_SIZE' else if self.val = UInt32($0CB7) then Result := 'PIXEL_MAP_G_TO_G_SIZE' else if self.val = UInt32($0CB8) then Result := 'PIXEL_MAP_B_TO_B_SIZE' else if self.val = UInt32($0CB9) then Result := 'PIXEL_MAP_A_TO_A_SIZE' else if self.val = UInt32($0CF0) then Result := 'UNPACK_SWAP_BYTES' else if self.val = UInt32($0CF1) then Result := 'UNPACK_LSB_FIRST' else if self.val = UInt32($0CF2) then Result := 'UNPACK_ROW_LENGTH' else if self.val = UInt32($0CF3) then Result := 'UNPACK_SKIP_ROWS' else if self.val = UInt32($0CF4) then Result := 'UNPACK_SKIP_PIXELS' else if self.val = UInt32($0CF5) then Result := 'UNPACK_ALIGNMENT' else if self.val = UInt32($0D00) then Result := 'PACK_SWAP_BYTES' else if self.val = UInt32($0D01) then Result := 'PACK_LSB_FIRST' else if self.val = UInt32($0D02) then Result := 'PACK_ROW_LENGTH' else if self.val = UInt32($0D03) then Result := 'PACK_SKIP_ROWS' else if self.val = UInt32($0D04) then Result := 'PACK_SKIP_PIXELS' else if self.val = UInt32($0D05) then Result := 'PACK_ALIGNMENT' else if self.val = UInt32($0D10) then Result := 'MAP_COLOR' else if self.val = UInt32($0D11) then Result := 'MAP_STENCIL' else if self.val = UInt32($0D12) then Result := 'INDEX_SHIFT' else if self.val = UInt32($0D13) then Result := 'INDEX_OFFSET' else if self.val = UInt32($0D14) then Result := 'RED_SCALE' else if self.val = UInt32($0D15) then Result := 'RED_BIAS' else if self.val = UInt32($0D16) then Result := 'ZOOM_X' else if self.val = UInt32($0D17) then Result := 'ZOOM_Y' else if self.val = UInt32($0D18) then Result := 'GREEN_SCALE' else if self.val = UInt32($0D19) then Result := 'GREEN_BIAS' else if self.val = UInt32($0D1A) then Result := 'BLUE_SCALE' else if self.val = UInt32($0D1B) then Result := 'BLUE_BIAS' else if self.val = UInt32($0D1C) then Result := 'ALPHA_SCALE' else if self.val = UInt32($0D1D) then Result := 'ALPHA_BIAS' else if self.val = UInt32($0D1E) then Result := 'DEPTH_SCALE' else if self.val = UInt32($0D1F) then Result := 'DEPTH_BIAS' else if self.val = UInt32($0D30) then Result := 'MAX_EVAL_ORDER' else if self.val = UInt32($0D31) then Result := 'MAX_LIGHTS' else if self.val = UInt32($0D32) then Result := 'MAX_CLIP_DISTANCES' else if self.val = UInt32($0D32) then Result := 'MAX_CLIP_PLANES' else if self.val = UInt32($0D33) then Result := 'MAX_TEXTURE_SIZE' else if self.val = UInt32($0D34) then Result := 'MAX_PIXEL_MAP_TABLE' else if self.val = UInt32($0D35) then Result := 'MAX_ATTRIB_STACK_DEPTH' else if self.val = UInt32($0D36) then Result := 'MAX_MODELVIEW_STACK_DEPTH' else if self.val = UInt32($0D37) then Result := 'MAX_NAME_STACK_DEPTH' else if self.val = UInt32($0D38) then Result := 'MAX_PROJECTION_STACK_DEPTH' else if self.val = UInt32($0D39) then Result := 'MAX_TEXTURE_STACK_DEPTH' else if self.val = UInt32($0D3A) then Result := 'MAX_VIEWPORT_DIMS' else if self.val = UInt32($0D3B) then Result := 'MAX_CLIENT_ATTRIB_STACK_DEPTH' else if self.val = UInt32($0D50) then Result := 'SUBPIXEL_BITS' else if self.val = UInt32($0D51) then Result := 'INDEX_BITS' else if self.val = UInt32($0D52) then Result := 'RED_BITS' else if self.val = UInt32($0D53) then Result := 'GREEN_BITS' else if self.val = UInt32($0D54) then Result := 'BLUE_BITS' else if self.val = UInt32($0D55) then Result := 'ALPHA_BITS' else if self.val = UInt32($0D56) then Result := 'DEPTH_BITS' else if self.val = UInt32($0D57) then Result := 'STENCIL_BITS' else if self.val = UInt32($0D58) then Result := 'ACCUM_RED_BITS' else if self.val = UInt32($0D59) then Result := 'ACCUM_GREEN_BITS' else if self.val = UInt32($0D5A) then Result := 'ACCUM_BLUE_BITS' else if self.val = UInt32($0D5B) then Result := 'ACCUM_ALPHA_BITS' else if self.val = UInt32($0D70) then Result := 'NAME_STACK_DEPTH' else if self.val = UInt32($0D80) then Result := 'AUTO_NORMAL' else if self.val = UInt32($0D90) then Result := 'MAP1_COLOR_4' else if self.val = UInt32($0D91) then Result := 'MAP1_INDEX' else if self.val = UInt32($0D92) then Result := 'MAP1_NORMAL' else if self.val = UInt32($0D93) then Result := 'MAP1_TEXTURE_COORD_1' else if self.val = UInt32($0D94) then Result := 'MAP1_TEXTURE_COORD_2' else if self.val = UInt32($0D95) then Result := 'MAP1_TEXTURE_COORD_3' else if self.val = UInt32($0D96) then Result := 'MAP1_TEXTURE_COORD_4' else if self.val = UInt32($0D97) then Result := 'MAP1_VERTEX_3' else if self.val = UInt32($0D98) then Result := 'MAP1_VERTEX_4' else if self.val = UInt32($0DB0) then Result := 'MAP2_COLOR_4' else if self.val = UInt32($0DB1) then Result := 'MAP2_INDEX' else if self.val = UInt32($0DB2) then Result := 'MAP2_NORMAL' else if self.val = UInt32($0DB3) then Result := 'MAP2_TEXTURE_COORD_1' else if self.val = UInt32($0DB4) then Result := 'MAP2_TEXTURE_COORD_2' else if self.val = UInt32($0DB5) then Result := 'MAP2_TEXTURE_COORD_3' else if self.val = UInt32($0DB6) then Result := 'MAP2_TEXTURE_COORD_4' else if self.val = UInt32($0DB7) then Result := 'MAP2_VERTEX_3' else if self.val = UInt32($0DB8) then Result := 'MAP2_VERTEX_4' else if self.val = UInt32($0DD0) then Result := 'MAP1_GRID_DOMAIN' else if self.val = UInt32($0DD1) then Result := 'MAP1_GRID_SEGMENTS' else if self.val = UInt32($0DD2) then Result := 'MAP2_GRID_DOMAIN' else if self.val = UInt32($0DD3) then Result := 'MAP2_GRID_SEGMENTS' else if self.val = UInt32($0DE0) then Result := 'TEXTURE_1D' else if self.val = UInt32($0DE1) then Result := 'TEXTURE_2D' else if self.val = UInt32($0DF1) then Result := 'FEEDBACK_BUFFER_SIZE' else if self.val = UInt32($0DF2) then Result := 'FEEDBACK_BUFFER_TYPE' else if self.val = UInt32($0DF4) then Result := 'SELECTION_BUFFER_SIZE' else if self.val = UInt32($2A00) then Result := 'POLYGON_OFFSET_UNITS' else if self.val = UInt32($2A01) then Result := 'POLYGON_OFFSET_POINT' else if self.val = UInt32($2A02) then Result := 'POLYGON_OFFSET_LINE' else if self.val = UInt32($3000) then Result := 'CLIP_PLANE0' else if self.val = UInt32($3001) then Result := 'CLIP_PLANE1' else if self.val = UInt32($3002) then Result := 'CLIP_PLANE2' else if self.val = UInt32($3003) then Result := 'CLIP_PLANE3' else if self.val = UInt32($3004) then Result := 'CLIP_PLANE4' else if self.val = UInt32($3005) then Result := 'CLIP_PLANE5' else if self.val = UInt32($4000) then Result := 'LIGHT0' else if self.val = UInt32($4001) then Result := 'LIGHT1' else if self.val = UInt32($4002) then Result := 'LIGHT2' else if self.val = UInt32($4003) then Result := 'LIGHT3' else if self.val = UInt32($4004) then Result := 'LIGHT4' else if self.val = UInt32($4005) then Result := 'LIGHT5' else if self.val = UInt32($4006) then Result := 'LIGHT6' else if self.val = UInt32($4007) then Result := 'LIGHT7' else if self.val = UInt32($8005) then Result := 'BLEND_COLOR' else if self.val = UInt32($8005) then Result := 'BLEND_COLOR_EXT' else if self.val = UInt32($8009) then Result := 'BLEND_EQUATION_EXT' else if self.val = UInt32($8009) then Result := 'BLEND_EQUATION_RGB' else if self.val = UInt32($800E) then Result := 'PACK_CMYK_HINT_EXT' else if self.val = UInt32($800F) then Result := 'UNPACK_CMYK_HINT_EXT' else if self.val = UInt32($8010) then Result := 'CONVOLUTION_1D_EXT' else if self.val = UInt32($8011) then Result := 'CONVOLUTION_2D_EXT' else if self.val = UInt32($8012) then Result := 'SEPARABLE_2D_EXT' else if self.val = UInt32($801C) then Result := 'POST_CONVOLUTION_RED_SCALE_EXT' else if self.val = UInt32($801D) then Result := 'POST_CONVOLUTION_GREEN_SCALE_EXT' else if self.val = UInt32($801E) then Result := 'POST_CONVOLUTION_BLUE_SCALE_EXT' else if self.val = UInt32($801F) then Result := 'POST_CONVOLUTION_ALPHA_SCALE_EXT' else if self.val = UInt32($8020) then Result := 'POST_CONVOLUTION_RED_BIAS_EXT' else if self.val = UInt32($8021) then Result := 'POST_CONVOLUTION_GREEN_BIAS_EXT' else if self.val = UInt32($8022) then Result := 'POST_CONVOLUTION_BLUE_BIAS_EXT' else if self.val = UInt32($8023) then Result := 'POST_CONVOLUTION_ALPHA_BIAS_EXT' else if self.val = UInt32($8024) then Result := 'HISTOGRAM_EXT' else if self.val = UInt32($802E) then Result := 'MINMAX_EXT' else if self.val = UInt32($8037) then Result := 'POLYGON_OFFSET_FILL' else if self.val = UInt32($8038) then Result := 'POLYGON_OFFSET_FACTOR' else if self.val = UInt32($8039) then Result := 'POLYGON_OFFSET_BIAS_EXT' else if self.val = UInt32($803A) then Result := 'RESCALE_NORMAL_EXT' else if self.val = UInt32($8068) then Result := 'TEXTURE_BINDING_1D' else if self.val = UInt32($8069) then Result := 'TEXTURE_BINDING_2D' else if self.val = UInt32($806A) then Result := 'TEXTURE_3D_BINDING_EXT' else if self.val = UInt32($806A) then Result := 'TEXTURE_BINDING_3D' else if self.val = UInt32($806B) then Result := 'PACK_SKIP_IMAGES' else if self.val = UInt32($806B) then Result := 'PACK_SKIP_IMAGES_EXT' else if self.val = UInt32($806C) then Result := 'PACK_IMAGE_HEIGHT' else if self.val = UInt32($806C) then Result := 'PACK_IMAGE_HEIGHT_EXT' else if self.val = UInt32($806D) then Result := 'UNPACK_SKIP_IMAGES' else if self.val = UInt32($806D) then Result := 'UNPACK_SKIP_IMAGES_EXT' else if self.val = UInt32($806E) then Result := 'UNPACK_IMAGE_HEIGHT' else if self.val = UInt32($806E) then Result := 'UNPACK_IMAGE_HEIGHT_EXT' else if self.val = UInt32($806F) then Result := 'TEXTURE_3D_EXT' else if self.val = UInt32($8073) then Result := 'MAX_3D_TEXTURE_SIZE' else if self.val = UInt32($8073) then Result := 'MAX_3D_TEXTURE_SIZE_EXT' else if self.val = UInt32($8074) then Result := 'VERTEX_ARRAY' else if self.val = UInt32($8075) then Result := 'NORMAL_ARRAY' else if self.val = UInt32($8076) then Result := 'COLOR_ARRAY' else if self.val = UInt32($8077) then Result := 'INDEX_ARRAY' else if self.val = UInt32($8078) then Result := 'TEXTURE_COORD_ARRAY' else if self.val = UInt32($8079) then Result := 'EDGE_FLAG_ARRAY' else if self.val = UInt32($807A) then Result := 'VERTEX_ARRAY_SIZE' else if self.val = UInt32($807B) then Result := 'VERTEX_ARRAY_TYPE' else if self.val = UInt32($807C) then Result := 'VERTEX_ARRAY_STRIDE' else if self.val = UInt32($807D) then Result := 'VERTEX_ARRAY_COUNT_EXT' else if self.val = UInt32($807E) then Result := 'NORMAL_ARRAY_TYPE' else if self.val = UInt32($807F) then Result := 'NORMAL_ARRAY_STRIDE' else if self.val = UInt32($8080) then Result := 'NORMAL_ARRAY_COUNT_EXT' else if self.val = UInt32($8081) then Result := 'COLOR_ARRAY_SIZE' else if self.val = UInt32($8082) then Result := 'COLOR_ARRAY_TYPE' else if self.val = UInt32($8083) then Result := 'COLOR_ARRAY_STRIDE' else if self.val = UInt32($8084) then Result := 'COLOR_ARRAY_COUNT_EXT' else if self.val = UInt32($8085) then Result := 'INDEX_ARRAY_TYPE' else if self.val = UInt32($8086) then Result := 'INDEX_ARRAY_STRIDE' else if self.val = UInt32($8087) then Result := 'INDEX_ARRAY_COUNT_EXT' else if self.val = UInt32($8088) then Result := 'TEXTURE_COORD_ARRAY_SIZE' else if self.val = UInt32($8089) then Result := 'TEXTURE_COORD_ARRAY_TYPE' else if self.val = UInt32($808A) then Result := 'TEXTURE_COORD_ARRAY_STRIDE' else if self.val = UInt32($808B) then Result := 'TEXTURE_COORD_ARRAY_COUNT_EXT' else if self.val = UInt32($808C) then Result := 'EDGE_FLAG_ARRAY_STRIDE' else if self.val = UInt32($808D) then Result := 'EDGE_FLAG_ARRAY_COUNT_EXT' else if self.val = UInt32($8094) then Result := 'INTERLACE_SGIX' else if self.val = UInt32($8096) then Result := 'DETAIL_TEXTURE_2D_BINDING_SGIS' else if self.val = UInt32($809D) then Result := 'MULTISAMPLE_SGIS' else if self.val = UInt32($809E) then Result := 'SAMPLE_ALPHA_TO_MASK_SGIS' else if self.val = UInt32($809F) then Result := 'SAMPLE_ALPHA_TO_ONE_SGIS' else if self.val = UInt32($80A0) then Result := 'SAMPLE_MASK_SGIS' else if self.val = UInt32($80A8) then Result := 'SAMPLE_BUFFERS' else if self.val = UInt32($80A8) then Result := 'SAMPLE_BUFFERS_SGIS' else if self.val = UInt32($80A9) then Result := 'SAMPLES' else if self.val = UInt32($80A9) then Result := 'SAMPLES_SGIS' else if self.val = UInt32($80AA) then Result := 'SAMPLE_COVERAGE_VALUE' else if self.val = UInt32($80AA) then Result := 'SAMPLE_MASK_VALUE_SGIS' else if self.val = UInt32($80AB) then Result := 'SAMPLE_COVERAGE_INVERT' else if self.val = UInt32($80AB) then Result := 'SAMPLE_MASK_INVERT_SGIS' else if self.val = UInt32($80AC) then Result := 'SAMPLE_PATTERN_SGIS' else if self.val = UInt32($80B1) then Result := 'COLOR_MATRIX_SGI' else if self.val = UInt32($80B2) then Result := 'COLOR_MATRIX_STACK_DEPTH_SGI' else if self.val = UInt32($80B3) then Result := 'MAX_COLOR_MATRIX_STACK_DEPTH_SGI' else if self.val = UInt32($80B4) then Result := 'POST_COLOR_MATRIX_RED_SCALE_SGI' else if self.val = UInt32($80B5) then Result := 'POST_COLOR_MATRIX_GREEN_SCALE_SGI' else if self.val = UInt32($80B6) then Result := 'POST_COLOR_MATRIX_BLUE_SCALE_SGI' else if self.val = UInt32($80B7) then Result := 'POST_COLOR_MATRIX_ALPHA_SCALE_SGI' else if self.val = UInt32($80B8) then Result := 'POST_COLOR_MATRIX_RED_BIAS_SGI' else if self.val = UInt32($80B9) then Result := 'POST_COLOR_MATRIX_GREEN_BIAS_SGI' else if self.val = UInt32($80BA) then Result := 'POST_COLOR_MATRIX_BLUE_BIAS_SGI' else if self.val = UInt32($80BB) then Result := 'POST_COLOR_MATRIX_ALPHA_BIAS_SGI' else if self.val = UInt32($80BC) then Result := 'TEXTURE_COLOR_TABLE_SGI' else if self.val = UInt32($80C8) then Result := 'BLEND_DST_RGB' else if self.val = UInt32($80C9) then Result := 'BLEND_SRC_RGB' else if self.val = UInt32($80CA) then Result := 'BLEND_DST_ALPHA' else if self.val = UInt32($80CB) then Result := 'BLEND_SRC_ALPHA' else if self.val = UInt32($80D0) then Result := 'COLOR_TABLE_SGI' else if self.val = UInt32($80D1) then Result := 'POST_CONVOLUTION_COLOR_TABLE_SGI' else if self.val = UInt32($80D2) then Result := 'POST_COLOR_MATRIX_COLOR_TABLE_SGI' else if self.val = UInt32($80E8) then Result := 'MAX_ELEMENTS_VERTICES' else if self.val = UInt32($80E9) then Result := 'MAX_ELEMENTS_INDICES' else if self.val = UInt32($8126) then Result := 'POINT_SIZE_MIN_SGIS' else if self.val = UInt32($8127) then Result := 'POINT_SIZE_MAX_SGIS' else if self.val = UInt32($8128) then Result := 'POINT_FADE_THRESHOLD_SIZE' else if self.val = UInt32($8128) then Result := 'POINT_FADE_THRESHOLD_SIZE_SGIS' else if self.val = UInt32($8129) then Result := 'DISTANCE_ATTENUATION_SGIS' else if self.val = UInt32($812B) then Result := 'FOG_FUNC_POINTS_SGIS' else if self.val = UInt32($812C) then Result := 'MAX_FOG_FUNC_POINTS_SGIS' else if self.val = UInt32($8130) then Result := 'PACK_SKIP_VOLUMES_SGIS' else if self.val = UInt32($8131) then Result := 'PACK_IMAGE_DEPTH_SGIS' else if self.val = UInt32($8132) then Result := 'UNPACK_SKIP_VOLUMES_SGIS' else if self.val = UInt32($8133) then Result := 'UNPACK_IMAGE_DEPTH_SGIS' else if self.val = UInt32($8134) then Result := 'TEXTURE_4D_SGIS' else if self.val = UInt32($8138) then Result := 'MAX_4D_TEXTURE_SIZE_SGIS' else if self.val = UInt32($8139) then Result := 'PIXEL_TEX_GEN_SGIX' else if self.val = UInt32($813E) then Result := 'PIXEL_TILE_BEST_ALIGNMENT_SGIX' else if self.val = UInt32($813F) then Result := 'PIXEL_TILE_CACHE_INCREMENT_SGIX' else if self.val = UInt32($8140) then Result := 'PIXEL_TILE_WIDTH_SGIX' else if self.val = UInt32($8141) then Result := 'PIXEL_TILE_HEIGHT_SGIX' else if self.val = UInt32($8142) then Result := 'PIXEL_TILE_GRID_WIDTH_SGIX' else if self.val = UInt32($8143) then Result := 'PIXEL_TILE_GRID_HEIGHT_SGIX' else if self.val = UInt32($8144) then Result := 'PIXEL_TILE_GRID_DEPTH_SGIX' else if self.val = UInt32($8145) then Result := 'PIXEL_TILE_CACHE_SIZE_SGIX' else if self.val = UInt32($8148) then Result := 'SPRITE_SGIX' else if self.val = UInt32($8149) then Result := 'SPRITE_MODE_SGIX' else if self.val = UInt32($814A) then Result := 'SPRITE_AXIS_SGIX' else if self.val = UInt32($814B) then Result := 'SPRITE_TRANSLATION_SGIX' else if self.val = UInt32($814F) then Result := 'TEXTURE_4D_BINDING_SGIS' else if self.val = UInt32($8177) then Result := 'MAX_CLIPMAP_DEPTH_SGIX' else if self.val = UInt32($8178) then Result := 'MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX' else if self.val = UInt32($817B) then Result := 'POST_TEXTURE_FILTER_BIAS_RANGE_SGIX' else if self.val = UInt32($817C) then Result := 'POST_TEXTURE_FILTER_SCALE_RANGE_SGIX' else if self.val = UInt32($817D) then Result := 'REFERENCE_PLANE_SGIX' else if self.val = UInt32($817E) then Result := 'REFERENCE_PLANE_EQUATION_SGIX' else if self.val = UInt32($817F) then Result := 'IR_INSTRUMENT1_SGIX' else if self.val = UInt32($8181) then Result := 'INSTRUMENT_MEASUREMENTS_SGIX' else if self.val = UInt32($8183) then Result := 'CALLIGRAPHIC_FRAGMENT_SGIX' else if self.val = UInt32($818B) then Result := 'FRAMEZOOM_SGIX' else if self.val = UInt32($818C) then Result := 'FRAMEZOOM_FACTOR_SGIX' else if self.val = UInt32($818D) then Result := 'MAX_FRAMEZOOM_FACTOR_SGIX' else if self.val = UInt32($8192) then Result := 'GENERATE_MIPMAP_HINT_SGIS' else if self.val = UInt32($8196) then Result := 'DEFORMATIONS_MASK_SGIX' else if self.val = UInt32($8198) then Result := 'FOG_OFFSET_SGIX' else if self.val = UInt32($8199) then Result := 'FOG_OFFSET_VALUE_SGIX' else if self.val = UInt32($81F8) then Result := 'LIGHT_MODEL_COLOR_CONTROL' else if self.val = UInt32($81FB) then Result := 'SHARED_TEXTURE_PALETTE_EXT' else if self.val = UInt32($821B) then Result := 'MAJOR_VERSION' else if self.val = UInt32($821C) then Result := 'MINOR_VERSION' else if self.val = UInt32($821D) then Result := 'NUM_EXTENSIONS' else if self.val = UInt32($821E) then Result := 'CONTEXT_FLAGS' else if self.val = UInt32($825A) then Result := 'PROGRAM_PIPELINE_BINDING' else if self.val = UInt32($825B) then Result := 'MAX_VIEWPORTS' else if self.val = UInt32($825C) then Result := 'VIEWPORT_SUBPIXEL_BITS' else if self.val = UInt32($825D) then Result := 'VIEWPORT_BOUNDS_RANGE' else if self.val = UInt32($825E) then Result := 'LAYER_PROVOKING_VERTEX' else if self.val = UInt32($825F) then Result := 'VIEWPORT_INDEX_PROVOKING_VERTEX' else if self.val = UInt32($8263) then Result := 'MAX_COMPUTE_UNIFORM_COMPONENTS' else if self.val = UInt32($8264) then Result := 'MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS' else if self.val = UInt32($8265) then Result := 'MAX_COMPUTE_ATOMIC_COUNTERS' else if self.val = UInt32($8266) then Result := 'MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS' else if self.val = UInt32($826C) then Result := 'MAX_DEBUG_GROUP_STACK_DEPTH' else if self.val = UInt32($826D) then Result := 'DEBUG_GROUP_STACK_DEPTH' else if self.val = UInt32($826E) then Result := 'MAX_UNIFORM_LOCATIONS' else if self.val = UInt32($82D6) then Result := 'VERTEX_BINDING_DIVISOR' else if self.val = UInt32($82D7) then Result := 'VERTEX_BINDING_OFFSET' else if self.val = UInt32($82D8) then Result := 'VERTEX_BINDING_STRIDE' else if self.val = UInt32($82D9) then Result := 'MAX_VERTEX_ATTRIB_RELATIVE_OFFSET' else if self.val = UInt32($82DA) then Result := 'MAX_VERTEX_ATTRIB_BINDINGS' else if self.val = UInt32($82E8) then Result := 'MAX_LABEL_LENGTH' else if self.val = UInt32($8316) then Result := 'CONVOLUTION_HINT_SGIX' else if self.val = UInt32($8329) then Result := 'ASYNC_MARKER_SGIX' else if self.val = UInt32($832B) then Result := 'PIXEL_TEX_GEN_MODE_SGIX' else if self.val = UInt32($832C) then Result := 'ASYNC_HISTOGRAM_SGIX' else if self.val = UInt32($832D) then Result := 'MAX_ASYNC_HISTOGRAM_SGIX' else if self.val = UInt32($8353) then Result := 'PIXEL_TEXTURE_SGIS' else if self.val = UInt32($835C) then Result := 'ASYNC_TEX_IMAGE_SGIX' else if self.val = UInt32($835D) then Result := 'ASYNC_DRAW_PIXELS_SGIX' else if self.val = UInt32($835E) then Result := 'ASYNC_READ_PIXELS_SGIX' else if self.val = UInt32($835F) then Result := 'MAX_ASYNC_TEX_IMAGE_SGIX' else if self.val = UInt32($8360) then Result := 'MAX_ASYNC_DRAW_PIXELS_SGIX' else if self.val = UInt32($8361) then Result := 'MAX_ASYNC_READ_PIXELS_SGIX' else if self.val = UInt32($83EE) then Result := 'VERTEX_PRECLIP_SGIX' else if self.val = UInt32($83EF) then Result := 'VERTEX_PRECLIP_HINT_SGIX' else if self.val = UInt32($8400) then Result := 'FRAGMENT_LIGHTING_SGIX' else if self.val = UInt32($8401) then Result := 'FRAGMENT_COLOR_MATERIAL_SGIX' else if self.val = UInt32($8402) then Result := 'FRAGMENT_COLOR_MATERIAL_FACE_SGIX' else if self.val = UInt32($8403) then Result := 'FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX' else if self.val = UInt32($8404) then Result := 'MAX_FRAGMENT_LIGHTS_SGIX' else if self.val = UInt32($8405) then Result := 'MAX_ACTIVE_LIGHTS_SGIX' else if self.val = UInt32($8407) then Result := 'LIGHT_ENV_MODE_SGIX' else if self.val = UInt32($8408) then Result := 'FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX' else if self.val = UInt32($8409) then Result := 'FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX' else if self.val = UInt32($840A) then Result := 'FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX' else if self.val = UInt32($840B) then Result := 'FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX' else if self.val = UInt32($840C) then Result := 'FRAGMENT_LIGHT0_SGIX' else if self.val = UInt32($842E) then Result := 'PACK_RESAMPLE_SGIX' else if self.val = UInt32($842F) then Result := 'UNPACK_RESAMPLE_SGIX' else if self.val = UInt32($846D) then Result := 'ALIASED_POINT_SIZE_RANGE' else if self.val = UInt32($846E) then Result := 'ALIASED_LINE_WIDTH_RANGE' else if self.val = UInt32($84E0) then Result := 'ACTIVE_TEXTURE' else if self.val = UInt32($84E8) then Result := 'MAX_RENDERBUFFER_SIZE' else if self.val = UInt32($84EF) then Result := 'TEXTURE_COMPRESSION_HINT' else if self.val = UInt32($84F6) then Result := 'TEXTURE_BINDING_RECTANGLE' else if self.val = UInt32($84F6) then Result := 'TEXTURE_BINDING_RECTANGLE_ARB' else if self.val = UInt32($84F6) then Result := 'TEXTURE_BINDING_RECTANGLE_NV' else if self.val = UInt32($84F8) then Result := 'MAX_RECTANGLE_TEXTURE_SIZE' else if self.val = UInt32($84FD) then Result := 'MAX_TEXTURE_LOD_BIAS' else if self.val = UInt32($8514) then Result := 'TEXTURE_BINDING_CUBE_MAP' else if self.val = UInt32($8514) then Result := 'TEXTURE_BINDING_CUBE_MAP_ARB' else if self.val = UInt32($8514) then Result := 'TEXTURE_BINDING_CUBE_MAP_EXT' else if self.val = UInt32($8514) then Result := 'TEXTURE_BINDING_CUBE_MAP_OES' else if self.val = UInt32($851C) then Result := 'MAX_CUBE_MAP_TEXTURE_SIZE' else if self.val = UInt32($85A0) then Result := 'PACK_SUBSAMPLE_RATE_SGIX' else if self.val = UInt32($85A1) then Result := 'UNPACK_SUBSAMPLE_RATE_SGIX' else if self.val = UInt32($85B5) then Result := 'VERTEX_ARRAY_BINDING' else if self.val = UInt32($8642) then Result := 'PROGRAM_POINT_SIZE' else if self.val = UInt32($86A2) then Result := 'NUM_COMPRESSED_TEXTURE_FORMATS' else if self.val = UInt32($86A3) then Result := 'COMPRESSED_TEXTURE_FORMATS' else if self.val = UInt32($87FE) then Result := 'NUM_PROGRAM_BINARY_FORMATS' else if self.val = UInt32($87FF) then Result := 'PROGRAM_BINARY_FORMATS' else if self.val = UInt32($8800) then Result := 'STENCIL_BACK_FUNC' else if self.val = UInt32($8801) then Result := 'STENCIL_BACK_FAIL' else if self.val = UInt32($8802) then Result := 'STENCIL_BACK_PASS_DEPTH_FAIL' else if self.val = UInt32($8803) then Result := 'STENCIL_BACK_PASS_DEPTH_PASS' else if self.val = UInt32($8824) then Result := 'MAX_DRAW_BUFFERS' else if self.val = UInt32($883D) then Result := 'BLEND_EQUATION_ALPHA' else if self.val = UInt32($8869) then Result := 'MAX_VERTEX_ATTRIBS' else if self.val = UInt32($8872) then Result := 'MAX_TEXTURE_IMAGE_UNITS' else if self.val = UInt32($8894) then Result := 'ARRAY_BUFFER_BINDING' else if self.val = UInt32($8895) then Result := 'ELEMENT_ARRAY_BUFFER_BINDING' else if self.val = UInt32($88ED) then Result := 'PIXEL_PACK_BUFFER_BINDING' else if self.val = UInt32($88EF) then Result := 'PIXEL_UNPACK_BUFFER_BINDING' else if self.val = UInt32($88FC) then Result := 'MAX_DUAL_SOURCE_DRAW_BUFFERS' else if self.val = UInt32($88FF) then Result := 'MAX_ARRAY_TEXTURE_LAYERS' else if self.val = UInt32($8904) then Result := 'MIN_PROGRAM_TEXEL_OFFSET' else if self.val = UInt32($8905) then Result := 'MAX_PROGRAM_TEXEL_OFFSET' else if self.val = UInt32($8919) then Result := 'SAMPLER_BINDING' else if self.val = UInt32($8A28) then Result := 'UNIFORM_BUFFER_BINDING' else if self.val = UInt32($8A29) then Result := 'UNIFORM_BUFFER_START' else if self.val = UInt32($8A2A) then Result := 'UNIFORM_BUFFER_SIZE' else if self.val = UInt32($8A2B) then Result := 'MAX_VERTEX_UNIFORM_BLOCKS' else if self.val = UInt32($8A2C) then Result := 'MAX_GEOMETRY_UNIFORM_BLOCKS' else if self.val = UInt32($8A2D) then Result := 'MAX_FRAGMENT_UNIFORM_BLOCKS' else if self.val = UInt32($8A2E) then Result := 'MAX_COMBINED_UNIFORM_BLOCKS' else if self.val = UInt32($8A2F) then Result := 'MAX_UNIFORM_BUFFER_BINDINGS' else if self.val = UInt32($8A30) then Result := 'MAX_UNIFORM_BLOCK_SIZE' else if self.val = UInt32($8A31) then Result := 'MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS' else if self.val = UInt32($8A32) then Result := 'MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS' else if self.val = UInt32($8A33) then Result := 'MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS' else if self.val = UInt32($8A34) then Result := 'UNIFORM_BUFFER_OFFSET_ALIGNMENT' else if self.val = UInt32($8B49) then Result := 'MAX_FRAGMENT_UNIFORM_COMPONENTS' else if self.val = UInt32($8B4A) then Result := 'MAX_VERTEX_UNIFORM_COMPONENTS' else if self.val = UInt32($8B4B) then Result := 'MAX_VARYING_COMPONENTS' else if self.val = UInt32($8B4B) then Result := 'MAX_VARYING_FLOATS' else if self.val = UInt32($8B4C) then Result := 'MAX_VERTEX_TEXTURE_IMAGE_UNITS' else if self.val = UInt32($8B4D) then Result := 'MAX_COMBINED_TEXTURE_IMAGE_UNITS' else if self.val = UInt32($8B8B) then Result := 'FRAGMENT_SHADER_DERIVATIVE_HINT' else if self.val = UInt32($8B8D) then Result := 'CURRENT_PROGRAM' else if self.val = UInt32($8B9A) then Result := 'IMPLEMENTATION_COLOR_READ_TYPE' else if self.val = UInt32($8B9B) then Result := 'IMPLEMENTATION_COLOR_READ_FORMAT' else if self.val = UInt32($8C1C) then Result := 'TEXTURE_BINDING_1D_ARRAY' else if self.val = UInt32($8C1D) then Result := 'TEXTURE_BINDING_2D_ARRAY' else if self.val = UInt32($8C29) then Result := 'MAX_GEOMETRY_TEXTURE_IMAGE_UNITS' else if self.val = UInt32($8C2B) then Result := 'MAX_TEXTURE_BUFFER_SIZE' else if self.val = UInt32($8C2C) then Result := 'TEXTURE_BINDING_BUFFER' else if self.val = UInt32($8C84) then Result := 'TRANSFORM_FEEDBACK_BUFFER_START' else if self.val = UInt32($8C85) then Result := 'TRANSFORM_FEEDBACK_BUFFER_SIZE' else if self.val = UInt32($8C8F) then Result := 'TRANSFORM_FEEDBACK_BUFFER_BINDING' else if self.val = UInt32($8C90) then Result := 'MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM' else if self.val = UInt32($8C91) then Result := 'MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM' else if self.val = UInt32($8CA3) then Result := 'STENCIL_BACK_REF' else if self.val = UInt32($8CA4) then Result := 'STENCIL_BACK_VALUE_MASK' else if self.val = UInt32($8CA5) then Result := 'STENCIL_BACK_WRITEMASK' else if self.val = UInt32($8CA6) then Result := 'DRAW_FRAMEBUFFER_BINDING' else if self.val = UInt32($8CA7) then Result := 'RENDERBUFFER_BINDING' else if self.val = UInt32($8CAA) then Result := 'READ_FRAMEBUFFER_BINDING' else if self.val = UInt32($8CDF) then Result := 'MAX_COLOR_ATTACHMENTS' else if self.val = UInt32($8CDF) then Result := 'MAX_COLOR_ATTACHMENTS_EXT' else if self.val = UInt32($8CDF) then Result := 'MAX_COLOR_ATTACHMENTS_NV' else if self.val = UInt32($8D6B) then Result := 'MAX_ELEMENT_INDEX' else if self.val = UInt32($8DDF) then Result := 'MAX_GEOMETRY_UNIFORM_COMPONENTS' else if self.val = UInt32($8DF8) then Result := 'SHADER_BINARY_FORMATS' else if self.val = UInt32($8DF9) then Result := 'NUM_SHADER_BINARY_FORMATS' else if self.val = UInt32($8DFA) then Result := 'SHADER_COMPILER' else if self.val = UInt32($8DFB) then Result := 'MAX_VERTEX_UNIFORM_VECTORS' else if self.val = UInt32($8DFC) then Result := 'MAX_VARYING_VECTORS' else if self.val = UInt32($8DFD) then Result := 'MAX_FRAGMENT_UNIFORM_VECTORS' else if self.val = UInt32($8E28) then Result := 'TIMESTAMP' else if self.val = UInt32($8E4F) then Result := 'PROVOKING_VERTEX' else if self.val = UInt32($8E59) then Result := 'MAX_SAMPLE_MASK_WORDS' else if self.val = UInt32($8E89) then Result := 'MAX_TESS_CONTROL_UNIFORM_BLOCKS' else if self.val = UInt32($8E8A) then Result := 'MAX_TESS_EVALUATION_UNIFORM_BLOCKS' else if self.val = UInt32($8F65) then Result := 'FETCH_PER_SAMPLE_ARM' else if self.val = UInt32($8F66) then Result := 'FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM' else if self.val = UInt32($8F9E) then Result := 'PRIMITIVE_RESTART_INDEX' else if self.val = UInt32($90BC) then Result := 'MIN_MAP_BUFFER_ALIGNMENT' else if self.val = UInt32($90D3) then Result := 'SHADER_STORAGE_BUFFER_BINDING' else if self.val = UInt32($90D4) then Result := 'SHADER_STORAGE_BUFFER_START' else if self.val = UInt32($90D5) then Result := 'SHADER_STORAGE_BUFFER_SIZE' else if self.val = UInt32($90D6) then Result := 'MAX_VERTEX_SHADER_STORAGE_BLOCKS' else if self.val = UInt32($90D7) then Result := 'MAX_GEOMETRY_SHADER_STORAGE_BLOCKS' else if self.val = UInt32($90D8) then Result := 'MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS' else if self.val = UInt32($90D9) then Result := 'MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS' else if self.val = UInt32($90DA) then Result := 'MAX_FRAGMENT_SHADER_STORAGE_BLOCKS' else if self.val = UInt32($90DB) then Result := 'MAX_COMPUTE_SHADER_STORAGE_BLOCKS' else if self.val = UInt32($90DC) then Result := 'MAX_COMBINED_SHADER_STORAGE_BLOCKS' else if self.val = UInt32($90DD) then Result := 'MAX_SHADER_STORAGE_BUFFER_BINDINGS' else if self.val = UInt32($90DF) then Result := 'SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT' else if self.val = UInt32($90EB) then Result := 'MAX_COMPUTE_WORK_GROUP_INVOCATIONS' else if self.val = UInt32($90EF) then Result := 'DISPATCH_INDIRECT_BUFFER_BINDING' else if self.val = UInt32($9104) then Result := 'TEXTURE_BINDING_2D_MULTISAMPLE' else if self.val = UInt32($9105) then Result := 'TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY' else if self.val = UInt32($910E) then Result := 'MAX_COLOR_TEXTURE_SAMPLES' else if self.val = UInt32($910F) then Result := 'MAX_DEPTH_TEXTURE_SAMPLES' else if self.val = UInt32($9110) then Result := 'MAX_INTEGER_SAMPLES' else if self.val = UInt32($9111) then Result := 'MAX_SERVER_WAIT_TIMEOUT' else if self.val = UInt32($9122) then Result := 'MAX_VERTEX_OUTPUT_COMPONENTS' else if self.val = UInt32($9123) then Result := 'MAX_GEOMETRY_INPUT_COMPONENTS' else if self.val = UInt32($9124) then Result := 'MAX_GEOMETRY_OUTPUT_COMPONENTS' else if self.val = UInt32($9125) then Result := 'MAX_FRAGMENT_INPUT_COMPONENTS' else if self.val = UInt32($9126) then Result := 'CONTEXT_PROFILE_MASK' else if self.val = UInt32($919F) then Result := 'TEXTURE_BUFFER_OFFSET_ALIGNMENT' else if self.val = UInt32($91BB) then Result := 'MAX_COMPUTE_UNIFORM_BLOCKS' else if self.val = UInt32($91BC) then Result := 'MAX_COMPUTE_TEXTURE_IMAGE_UNITS' else if self.val = UInt32($91BE) then Result := 'MAX_COMPUTE_WORK_GROUP_COUNT' else if self.val = UInt32($91BF) then Result := 'MAX_COMPUTE_WORK_GROUP_SIZE' else if self.val = UInt32($92D2) then Result := 'MAX_VERTEX_ATOMIC_COUNTERS' else if self.val = UInt32($92D3) then Result := 'MAX_TESS_CONTROL_ATOMIC_COUNTERS' else if self.val = UInt32($92D4) then Result := 'MAX_TESS_EVALUATION_ATOMIC_COUNTERS' else if self.val = UInt32($92D5) then Result := 'MAX_GEOMETRY_ATOMIC_COUNTERS' else if self.val = UInt32($92D6) then Result := 'MAX_FRAGMENT_ATOMIC_COUNTERS' else if self.val = UInt32($92D7) then Result := 'MAX_COMBINED_ATOMIC_COUNTERS' else if self.val = UInt32($9315) then Result := 'MAX_FRAMEBUFFER_WIDTH' else if self.val = UInt32($9316) then Result := 'MAX_FRAMEBUFFER_HEIGHT' else if self.val = UInt32($9317) then Result := 'MAX_FRAMEBUFFER_LAYERS' else if self.val = UInt32($9318) then Result := 'MAX_FRAMEBUFFER_SAMPLES' else if self.val = UInt32($9596) then Result := 'NUM_DEVICE_UUIDS_EXT' else if self.val = UInt32($9597) then Result := 'DEVICE_UUID_EXT' else if self.val = UInt32($9598) then Result := 'DRIVER_UUID_EXT' else if self.val = UInt32($9599) then Result := 'DEVICE_LUID_EXT' else if self.val = UInt32($959A) then Result := 'DEVICE_NODE_MASK_EXT' else if self.val = UInt32($95B1) then Result := 'SHADING_RATE_IMAGE_PER_PRIMITIVE_NV' else if self.val = UInt32($95B2) then Result := 'SHADING_RATE_IMAGE_PALETTE_COUNT_NV' else if self.val = UInt32($95B6) then Result := 'MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV' else if self.val = UInt32($96A4) then Result := 'SHADING_RATE_QCOM' else Result := $'GetPName[{self.val}]'; end; end; GetPointervPName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FEEDBACK_BUFFER_POINTER: GetPointervPName read new GetPointervPName($0DF0); public static property SELECTION_BUFFER_POINTER: GetPointervPName read new GetPointervPName($0DF3); public static property VERTEX_ARRAY_POINTER: GetPointervPName read new GetPointervPName($808E); public static property VERTEX_ARRAY_POINTER_EXT: GetPointervPName read new GetPointervPName($808E); public static property NORMAL_ARRAY_POINTER: GetPointervPName read new GetPointervPName($808F); public static property NORMAL_ARRAY_POINTER_EXT: GetPointervPName read new GetPointervPName($808F); public static property COLOR_ARRAY_POINTER: GetPointervPName read new GetPointervPName($8090); public static property COLOR_ARRAY_POINTER_EXT: GetPointervPName read new GetPointervPName($8090); public static property INDEX_ARRAY_POINTER: GetPointervPName read new GetPointervPName($8091); public static property INDEX_ARRAY_POINTER_EXT: GetPointervPName read new GetPointervPName($8091); public static property TEXTURE_COORD_ARRAY_POINTER: GetPointervPName read new GetPointervPName($8092); public static property TEXTURE_COORD_ARRAY_POINTER_EXT: GetPointervPName read new GetPointervPName($8092); public static property EDGE_FLAG_ARRAY_POINTER: GetPointervPName read new GetPointervPName($8093); public static property EDGE_FLAG_ARRAY_POINTER_EXT: GetPointervPName read new GetPointervPName($8093); public static property INSTRUMENT_BUFFER_POINTER_SGIX: GetPointervPName read new GetPointervPName($8180); public static property DEBUG_CALLBACK_FUNCTION: GetPointervPName read new GetPointervPName($8244); public static property DEBUG_CALLBACK_USER_PARAM: GetPointervPName read new GetPointervPName($8245); public function ToString: string; override; begin if self.val = UInt32($0DF0) then Result := 'FEEDBACK_BUFFER_POINTER' else if self.val = UInt32($0DF3) then Result := 'SELECTION_BUFFER_POINTER' else if self.val = UInt32($808E) then Result := 'VERTEX_ARRAY_POINTER' else if self.val = UInt32($808E) then Result := 'VERTEX_ARRAY_POINTER_EXT' else if self.val = UInt32($808F) then Result := 'NORMAL_ARRAY_POINTER' else if self.val = UInt32($808F) then Result := 'NORMAL_ARRAY_POINTER_EXT' else if self.val = UInt32($8090) then Result := 'COLOR_ARRAY_POINTER' else if self.val = UInt32($8090) then Result := 'COLOR_ARRAY_POINTER_EXT' else if self.val = UInt32($8091) then Result := 'INDEX_ARRAY_POINTER' else if self.val = UInt32($8091) then Result := 'INDEX_ARRAY_POINTER_EXT' else if self.val = UInt32($8092) then Result := 'TEXTURE_COORD_ARRAY_POINTER' else if self.val = UInt32($8092) then Result := 'TEXTURE_COORD_ARRAY_POINTER_EXT' else if self.val = UInt32($8093) then Result := 'EDGE_FLAG_ARRAY_POINTER' else if self.val = UInt32($8093) then Result := 'EDGE_FLAG_ARRAY_POINTER_EXT' else if self.val = UInt32($8180) then Result := 'INSTRUMENT_BUFFER_POINTER_SGIX' else if self.val = UInt32($8244) then Result := 'DEBUG_CALLBACK_FUNCTION' else if self.val = UInt32($8245) then Result := 'DEBUG_CALLBACK_USER_PARAM' else Result := $'GetPointervPName[{self.val}]'; end; end; GetTextureParameter = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE_WIDTH: GetTextureParameter read new GetTextureParameter($1000); public static property TEXTURE_HEIGHT: GetTextureParameter read new GetTextureParameter($1001); public static property TEXTURE_COMPONENTS: GetTextureParameter read new GetTextureParameter($1003); public static property TEXTURE_INTERNAL_FORMAT: GetTextureParameter read new GetTextureParameter($1003); public static property TEXTURE_BORDER_COLOR: GetTextureParameter read new GetTextureParameter($1004); public static property TEXTURE_BORDER_COLOR_NV: GetTextureParameter read new GetTextureParameter($1004); public static property TEXTURE_BORDER: GetTextureParameter read new GetTextureParameter($1005); public static property TEXTURE_MAG_FILTER: GetTextureParameter read new GetTextureParameter($2800); public static property TEXTURE_MIN_FILTER: GetTextureParameter read new GetTextureParameter($2801); public static property TEXTURE_WRAP_S: GetTextureParameter read new GetTextureParameter($2802); public static property TEXTURE_WRAP_T: GetTextureParameter read new GetTextureParameter($2803); public static property TEXTURE_RED_SIZE: GetTextureParameter read new GetTextureParameter($805C); public static property TEXTURE_GREEN_SIZE: GetTextureParameter read new GetTextureParameter($805D); public static property TEXTURE_BLUE_SIZE: GetTextureParameter read new GetTextureParameter($805E); public static property TEXTURE_ALPHA_SIZE: GetTextureParameter read new GetTextureParameter($805F); public static property TEXTURE_LUMINANCE_SIZE: GetTextureParameter read new GetTextureParameter($8060); public static property TEXTURE_INTENSITY_SIZE: GetTextureParameter read new GetTextureParameter($8061); public static property TEXTURE_PRIORITY: GetTextureParameter read new GetTextureParameter($8066); public static property TEXTURE_RESIDENT: GetTextureParameter read new GetTextureParameter($8067); public static property TEXTURE_DEPTH_EXT: GetTextureParameter read new GetTextureParameter($8071); public static property TEXTURE_WRAP_R_EXT: GetTextureParameter read new GetTextureParameter($8072); public static property DETAIL_TEXTURE_LEVEL_SGIS: GetTextureParameter read new GetTextureParameter($809A); public static property DETAIL_TEXTURE_MODE_SGIS: GetTextureParameter read new GetTextureParameter($809B); public static property DETAIL_TEXTURE_FUNC_POINTS_SGIS: GetTextureParameter read new GetTextureParameter($809C); public static property SHARPEN_TEXTURE_FUNC_POINTS_SGIS: GetTextureParameter read new GetTextureParameter($80B0); public static property SHADOW_AMBIENT_SGIX: GetTextureParameter read new GetTextureParameter($80BF); public static property DUAL_TEXTURE_SELECT_SGIS: GetTextureParameter read new GetTextureParameter($8124); public static property QUAD_TEXTURE_SELECT_SGIS: GetTextureParameter read new GetTextureParameter($8125); public static property TEXTURE_4DSIZE_SGIS: GetTextureParameter read new GetTextureParameter($8136); public static property TEXTURE_WRAP_Q_SGIS: GetTextureParameter read new GetTextureParameter($8137); public static property TEXTURE_MIN_LOD_SGIS: GetTextureParameter read new GetTextureParameter($813A); public static property TEXTURE_MAX_LOD_SGIS: GetTextureParameter read new GetTextureParameter($813B); public static property TEXTURE_BASE_LEVEL_SGIS: GetTextureParameter read new GetTextureParameter($813C); public static property TEXTURE_MAX_LEVEL_SGIS: GetTextureParameter read new GetTextureParameter($813D); public static property TEXTURE_FILTER4_SIZE_SGIS: GetTextureParameter read new GetTextureParameter($8147); public static property TEXTURE_CLIPMAP_CENTER_SGIX: GetTextureParameter read new GetTextureParameter($8171); public static property TEXTURE_CLIPMAP_FRAME_SGIX: GetTextureParameter read new GetTextureParameter($8172); public static property TEXTURE_CLIPMAP_OFFSET_SGIX: GetTextureParameter read new GetTextureParameter($8173); public static property TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX: GetTextureParameter read new GetTextureParameter($8174); public static property TEXTURE_CLIPMAP_LOD_OFFSET_SGIX: GetTextureParameter read new GetTextureParameter($8175); public static property TEXTURE_CLIPMAP_DEPTH_SGIX: GetTextureParameter read new GetTextureParameter($8176); public static property POST_TEXTURE_FILTER_BIAS_SGIX: GetTextureParameter read new GetTextureParameter($8179); public static property POST_TEXTURE_FILTER_SCALE_SGIX: GetTextureParameter read new GetTextureParameter($817A); public static property TEXTURE_LOD_BIAS_S_SGIX: GetTextureParameter read new GetTextureParameter($818E); public static property TEXTURE_LOD_BIAS_T_SGIX: GetTextureParameter read new GetTextureParameter($818F); public static property TEXTURE_LOD_BIAS_R_SGIX: GetTextureParameter read new GetTextureParameter($8190); public static property GENERATE_MIPMAP_SGIS: GetTextureParameter read new GetTextureParameter($8191); public static property TEXTURE_COMPARE_SGIX: GetTextureParameter read new GetTextureParameter($819A); public static property TEXTURE_COMPARE_OPERATOR_SGIX: GetTextureParameter read new GetTextureParameter($819B); public static property TEXTURE_LEQUAL_R_SGIX: GetTextureParameter read new GetTextureParameter($819C); public static property TEXTURE_GEQUAL_R_SGIX: GetTextureParameter read new GetTextureParameter($819D); public static property TEXTURE_MAX_CLAMP_S_SGIX: GetTextureParameter read new GetTextureParameter($8369); public static property TEXTURE_MAX_CLAMP_T_SGIX: GetTextureParameter read new GetTextureParameter($836A); public static property TEXTURE_MAX_CLAMP_R_SGIX: GetTextureParameter read new GetTextureParameter($836B); public static property TEXTURE_UNNORMALIZED_COORDINATES_ARM: GetTextureParameter read new GetTextureParameter($8F6A); public static property SURFACE_COMPRESSION_EXT: GetTextureParameter read new GetTextureParameter($96C0); public function ToString: string; override; begin if self.val = UInt32($1000) then Result := 'TEXTURE_WIDTH' else if self.val = UInt32($1001) then Result := 'TEXTURE_HEIGHT' else if self.val = UInt32($1003) then Result := 'TEXTURE_COMPONENTS' else if self.val = UInt32($1003) then Result := 'TEXTURE_INTERNAL_FORMAT' else if self.val = UInt32($1004) then Result := 'TEXTURE_BORDER_COLOR' else if self.val = UInt32($1004) then Result := 'TEXTURE_BORDER_COLOR_NV' else if self.val = UInt32($1005) then Result := 'TEXTURE_BORDER' else if self.val = UInt32($2800) then Result := 'TEXTURE_MAG_FILTER' else if self.val = UInt32($2801) then Result := 'TEXTURE_MIN_FILTER' else if self.val = UInt32($2802) then Result := 'TEXTURE_WRAP_S' else if self.val = UInt32($2803) then Result := 'TEXTURE_WRAP_T' else if self.val = UInt32($805C) then Result := 'TEXTURE_RED_SIZE' else if self.val = UInt32($805D) then Result := 'TEXTURE_GREEN_SIZE' else if self.val = UInt32($805E) then Result := 'TEXTURE_BLUE_SIZE' else if self.val = UInt32($805F) then Result := 'TEXTURE_ALPHA_SIZE' else if self.val = UInt32($8060) then Result := 'TEXTURE_LUMINANCE_SIZE' else if self.val = UInt32($8061) then Result := 'TEXTURE_INTENSITY_SIZE' else if self.val = UInt32($8066) then Result := 'TEXTURE_PRIORITY' else if self.val = UInt32($8067) then Result := 'TEXTURE_RESIDENT' else if self.val = UInt32($8071) then Result := 'TEXTURE_DEPTH_EXT' else if self.val = UInt32($8072) then Result := 'TEXTURE_WRAP_R_EXT' else if self.val = UInt32($809A) then Result := 'DETAIL_TEXTURE_LEVEL_SGIS' else if self.val = UInt32($809B) then Result := 'DETAIL_TEXTURE_MODE_SGIS' else if self.val = UInt32($809C) then Result := 'DETAIL_TEXTURE_FUNC_POINTS_SGIS' else if self.val = UInt32($80B0) then Result := 'SHARPEN_TEXTURE_FUNC_POINTS_SGIS' else if self.val = UInt32($80BF) then Result := 'SHADOW_AMBIENT_SGIX' else if self.val = UInt32($8124) then Result := 'DUAL_TEXTURE_SELECT_SGIS' else if self.val = UInt32($8125) then Result := 'QUAD_TEXTURE_SELECT_SGIS' else if self.val = UInt32($8136) then Result := 'TEXTURE_4DSIZE_SGIS' else if self.val = UInt32($8137) then Result := 'TEXTURE_WRAP_Q_SGIS' else if self.val = UInt32($813A) then Result := 'TEXTURE_MIN_LOD_SGIS' else if self.val = UInt32($813B) then Result := 'TEXTURE_MAX_LOD_SGIS' else if self.val = UInt32($813C) then Result := 'TEXTURE_BASE_LEVEL_SGIS' else if self.val = UInt32($813D) then Result := 'TEXTURE_MAX_LEVEL_SGIS' else if self.val = UInt32($8147) then Result := 'TEXTURE_FILTER4_SIZE_SGIS' else if self.val = UInt32($8171) then Result := 'TEXTURE_CLIPMAP_CENTER_SGIX' else if self.val = UInt32($8172) then Result := 'TEXTURE_CLIPMAP_FRAME_SGIX' else if self.val = UInt32($8173) then Result := 'TEXTURE_CLIPMAP_OFFSET_SGIX' else if self.val = UInt32($8174) then Result := 'TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX' else if self.val = UInt32($8175) then Result := 'TEXTURE_CLIPMAP_LOD_OFFSET_SGIX' else if self.val = UInt32($8176) then Result := 'TEXTURE_CLIPMAP_DEPTH_SGIX' else if self.val = UInt32($8179) then Result := 'POST_TEXTURE_FILTER_BIAS_SGIX' else if self.val = UInt32($817A) then Result := 'POST_TEXTURE_FILTER_SCALE_SGIX' else if self.val = UInt32($818E) then Result := 'TEXTURE_LOD_BIAS_S_SGIX' else if self.val = UInt32($818F) then Result := 'TEXTURE_LOD_BIAS_T_SGIX' else if self.val = UInt32($8190) then Result := 'TEXTURE_LOD_BIAS_R_SGIX' else if self.val = UInt32($8191) then Result := 'GENERATE_MIPMAP_SGIS' else if self.val = UInt32($819A) then Result := 'TEXTURE_COMPARE_SGIX' else if self.val = UInt32($819B) then Result := 'TEXTURE_COMPARE_OPERATOR_SGIX' else if self.val = UInt32($819C) then Result := 'TEXTURE_LEQUAL_R_SGIX' else if self.val = UInt32($819D) then Result := 'TEXTURE_GEQUAL_R_SGIX' else if self.val = UInt32($8369) then Result := 'TEXTURE_MAX_CLAMP_S_SGIX' else if self.val = UInt32($836A) then Result := 'TEXTURE_MAX_CLAMP_T_SGIX' else if self.val = UInt32($836B) then Result := 'TEXTURE_MAX_CLAMP_R_SGIX' else if self.val = UInt32($8F6A) then Result := 'TEXTURE_UNNORMALIZED_COORDINATES_ARM' else if self.val = UInt32($96C0) then Result := 'SURFACE_COMPRESSION_EXT' else Result := $'GetTextureParameter[{self.val}]'; end; end; GraphicsResetStatus = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NO_ERROR: GraphicsResetStatus read new GraphicsResetStatus($0000); public static property GUILTY_CONTEXT_RESET: GraphicsResetStatus read new GraphicsResetStatus($8253); public static property INNOCENT_CONTEXT_RESET: GraphicsResetStatus read new GraphicsResetStatus($8254); public static property UNKNOWN_CONTEXT_RESET: GraphicsResetStatus read new GraphicsResetStatus($8255); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'NO_ERROR' else if self.val = UInt32($8253) then Result := 'GUILTY_CONTEXT_RESET' else if self.val = UInt32($8254) then Result := 'INNOCENT_CONTEXT_RESET' else if self.val = UInt32($8255) then Result := 'UNKNOWN_CONTEXT_RESET' else Result := $'GraphicsResetStatus[{self.val}]'; end; end; HintMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property DONT_CARE: HintMode read new HintMode($1100); public static property FASTEST: HintMode read new HintMode($1101); public static property NICEST: HintMode read new HintMode($1102); public function ToString: string; override; begin if self.val = UInt32($1100) then Result := 'DONT_CARE' else if self.val = UInt32($1101) then Result := 'FASTEST' else if self.val = UInt32($1102) then Result := 'NICEST' else Result := $'HintMode[{self.val}]'; end; end; HintTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PERSPECTIVE_CORRECTION_HINT: HintTarget read new HintTarget($0C50); public static property POINT_SMOOTH_HINT: HintTarget read new HintTarget($0C51); public static property LINE_SMOOTH_HINT: HintTarget read new HintTarget($0C52); public static property POLYGON_SMOOTH_HINT: HintTarget read new HintTarget($0C53); public static property FOG_HINT: HintTarget read new HintTarget($0C54); public static property PACK_CMYK_HINT_EXT: HintTarget read new HintTarget($800E); public static property UNPACK_CMYK_HINT_EXT: HintTarget read new HintTarget($800F); public static property PHONG_HINT_WIN: HintTarget read new HintTarget($80EB); public static property CLIP_VOLUME_CLIPPING_HINT_EXT: HintTarget read new HintTarget($80F0); public static property TEXTURE_MULTI_BUFFER_HINT_SGIX: HintTarget read new HintTarget($812E); public static property GENERATE_MIPMAP_HINT: HintTarget read new HintTarget($8192); public static property GENERATE_MIPMAP_HINT_SGIS: HintTarget read new HintTarget($8192); public static property PROGRAM_BINARY_RETRIEVABLE_HINT: HintTarget read new HintTarget($8257); public static property CONVOLUTION_HINT_SGIX: HintTarget read new HintTarget($8316); public static property SCALEBIAS_HINT_SGIX: HintTarget read new HintTarget($8322); public static property LINE_QUALITY_HINT_SGIX: HintTarget read new HintTarget($835B); public static property VERTEX_PRECLIP_SGIX: HintTarget read new HintTarget($83EE); public static property VERTEX_PRECLIP_HINT_SGIX: HintTarget read new HintTarget($83EF); public static property TEXTURE_COMPRESSION_HINT: HintTarget read new HintTarget($84EF); public static property TEXTURE_COMPRESSION_HINT_ARB: HintTarget read new HintTarget($84EF); public static property VERTEX_ARRAY_STORAGE_HINT_APPLE: HintTarget read new HintTarget($851F); public static property MULTISAMPLE_FILTER_HINT_NV: HintTarget read new HintTarget($8534); public static property TRANSFORM_HINT_APPLE: HintTarget read new HintTarget($85B1); public static property TEXTURE_STORAGE_HINT_APPLE: HintTarget read new HintTarget($85BC); public static property FRAGMENT_SHADER_DERIVATIVE_HINT: HintTarget read new HintTarget($8B8B); public static property FRAGMENT_SHADER_DERIVATIVE_HINT_ARB: HintTarget read new HintTarget($8B8B); public static property FRAGMENT_SHADER_DERIVATIVE_HINT_OES: HintTarget read new HintTarget($8B8B); public static property BINNING_CONTROL_HINT_QCOM: HintTarget read new HintTarget($8FB0); public static property PREFER_DOUBLEBUFFER_HINT_PGI: HintTarget read new HintTarget($1A1F8); public static property CONSERVE_MEMORY_HINT_PGI: HintTarget read new HintTarget($1A1FD); public static property RECLAIM_MEMORY_HINT_PGI: HintTarget read new HintTarget($1A1FE); public static property NATIVE_GRAPHICS_BEGIN_HINT_PGI: HintTarget read new HintTarget($1A203); public static property NATIVE_GRAPHICS_END_HINT_PGI: HintTarget read new HintTarget($1A204); public static property ALWAYS_FAST_HINT_PGI: HintTarget read new HintTarget($1A20C); public static property ALWAYS_SOFT_HINT_PGI: HintTarget read new HintTarget($1A20D); public static property ALLOW_DRAW_OBJ_HINT_PGI: HintTarget read new HintTarget($1A20E); public static property ALLOW_DRAW_WIN_HINT_PGI: HintTarget read new HintTarget($1A20F); public static property ALLOW_DRAW_FRG_HINT_PGI: HintTarget read new HintTarget($1A210); public static property ALLOW_DRAW_MEM_HINT_PGI: HintTarget read new HintTarget($1A211); public static property STRICT_DEPTHFUNC_HINT_PGI: HintTarget read new HintTarget($1A216); public static property STRICT_LIGHTING_HINT_PGI: HintTarget read new HintTarget($1A217); public static property STRICT_SCISSOR_HINT_PGI: HintTarget read new HintTarget($1A218); public static property FULL_STIPPLE_HINT_PGI: HintTarget read new HintTarget($1A219); public static property CLIP_NEAR_HINT_PGI: HintTarget read new HintTarget($1A220); public static property CLIP_FAR_HINT_PGI: HintTarget read new HintTarget($1A221); public static property WIDE_LINE_HINT_PGI: HintTarget read new HintTarget($1A222); public static property BACK_NORMALS_HINT_PGI: HintTarget read new HintTarget($1A223); public static property VERTEX_DATA_HINT_PGI: HintTarget read new HintTarget($1A22A); public static property VERTEX_CONSISTENT_HINT_PGI: HintTarget read new HintTarget($1A22B); public static property MATERIAL_SIDE_HINT_PGI: HintTarget read new HintTarget($1A22C); public static property MAX_VERTEX_HINT_PGI: HintTarget read new HintTarget($1A22D); public function ToString: string; override; begin if self.val = UInt32($0C50) then Result := 'PERSPECTIVE_CORRECTION_HINT' else if self.val = UInt32($0C51) then Result := 'POINT_SMOOTH_HINT' else if self.val = UInt32($0C52) then Result := 'LINE_SMOOTH_HINT' else if self.val = UInt32($0C53) then Result := 'POLYGON_SMOOTH_HINT' else if self.val = UInt32($0C54) then Result := 'FOG_HINT' else if self.val = UInt32($800E) then Result := 'PACK_CMYK_HINT_EXT' else if self.val = UInt32($800F) then Result := 'UNPACK_CMYK_HINT_EXT' else if self.val = UInt32($80EB) then Result := 'PHONG_HINT_WIN' else if self.val = UInt32($80F0) then Result := 'CLIP_VOLUME_CLIPPING_HINT_EXT' else if self.val = UInt32($812E) then Result := 'TEXTURE_MULTI_BUFFER_HINT_SGIX' else if self.val = UInt32($8192) then Result := 'GENERATE_MIPMAP_HINT' else if self.val = UInt32($8192) then Result := 'GENERATE_MIPMAP_HINT_SGIS' else if self.val = UInt32($8257) then Result := 'PROGRAM_BINARY_RETRIEVABLE_HINT' else if self.val = UInt32($8316) then Result := 'CONVOLUTION_HINT_SGIX' else if self.val = UInt32($8322) then Result := 'SCALEBIAS_HINT_SGIX' else if self.val = UInt32($835B) then Result := 'LINE_QUALITY_HINT_SGIX' else if self.val = UInt32($83EE) then Result := 'VERTEX_PRECLIP_SGIX' else if self.val = UInt32($83EF) then Result := 'VERTEX_PRECLIP_HINT_SGIX' else if self.val = UInt32($84EF) then Result := 'TEXTURE_COMPRESSION_HINT' else if self.val = UInt32($84EF) then Result := 'TEXTURE_COMPRESSION_HINT_ARB' else if self.val = UInt32($851F) then Result := 'VERTEX_ARRAY_STORAGE_HINT_APPLE' else if self.val = UInt32($8534) then Result := 'MULTISAMPLE_FILTER_HINT_NV' else if self.val = UInt32($85B1) then Result := 'TRANSFORM_HINT_APPLE' else if self.val = UInt32($85BC) then Result := 'TEXTURE_STORAGE_HINT_APPLE' else if self.val = UInt32($8B8B) then Result := 'FRAGMENT_SHADER_DERIVATIVE_HINT' else if self.val = UInt32($8B8B) then Result := 'FRAGMENT_SHADER_DERIVATIVE_HINT_ARB' else if self.val = UInt32($8B8B) then Result := 'FRAGMENT_SHADER_DERIVATIVE_HINT_OES' else if self.val = UInt32($8FB0) then Result := 'BINNING_CONTROL_HINT_QCOM' else if self.val = UInt32($1A1F8) then Result := 'PREFER_DOUBLEBUFFER_HINT_PGI' else if self.val = UInt32($1A1FD) then Result := 'CONSERVE_MEMORY_HINT_PGI' else if self.val = UInt32($1A1FE) then Result := 'RECLAIM_MEMORY_HINT_PGI' else if self.val = UInt32($1A203) then Result := 'NATIVE_GRAPHICS_BEGIN_HINT_PGI' else if self.val = UInt32($1A204) then Result := 'NATIVE_GRAPHICS_END_HINT_PGI' else if self.val = UInt32($1A20C) then Result := 'ALWAYS_FAST_HINT_PGI' else if self.val = UInt32($1A20D) then Result := 'ALWAYS_SOFT_HINT_PGI' else if self.val = UInt32($1A20E) then Result := 'ALLOW_DRAW_OBJ_HINT_PGI' else if self.val = UInt32($1A20F) then Result := 'ALLOW_DRAW_WIN_HINT_PGI' else if self.val = UInt32($1A210) then Result := 'ALLOW_DRAW_FRG_HINT_PGI' else if self.val = UInt32($1A211) then Result := 'ALLOW_DRAW_MEM_HINT_PGI' else if self.val = UInt32($1A216) then Result := 'STRICT_DEPTHFUNC_HINT_PGI' else if self.val = UInt32($1A217) then Result := 'STRICT_LIGHTING_HINT_PGI' else if self.val = UInt32($1A218) then Result := 'STRICT_SCISSOR_HINT_PGI' else if self.val = UInt32($1A219) then Result := 'FULL_STIPPLE_HINT_PGI' else if self.val = UInt32($1A220) then Result := 'CLIP_NEAR_HINT_PGI' else if self.val = UInt32($1A221) then Result := 'CLIP_FAR_HINT_PGI' else if self.val = UInt32($1A222) then Result := 'WIDE_LINE_HINT_PGI' else if self.val = UInt32($1A223) then Result := 'BACK_NORMALS_HINT_PGI' else if self.val = UInt32($1A22A) then Result := 'VERTEX_DATA_HINT_PGI' else if self.val = UInt32($1A22B) then Result := 'VERTEX_CONSISTENT_HINT_PGI' else if self.val = UInt32($1A22C) then Result := 'MATERIAL_SIDE_HINT_PGI' else if self.val = UInt32($1A22D) then Result := 'MAX_VERTEX_HINT_PGI' else Result := $'HintTarget[{self.val}]'; end; end; HistogramTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property HISTOGRAM: HistogramTarget read new HistogramTarget($8024); public static property PROXY_HISTOGRAM: HistogramTarget read new HistogramTarget($8025); public function ToString: string; override; begin if self.val = UInt32($8024) then Result := 'HISTOGRAM' else if self.val = UInt32($8025) then Result := 'PROXY_HISTOGRAM' else Result := $'HistogramTarget[{self.val}]'; end; end; IndexPointerType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SHORT: IndexPointerType read new IndexPointerType($1402); public static property INT: IndexPointerType read new IndexPointerType($1404); public static property FLOAT: IndexPointerType read new IndexPointerType($1406); public static property DOUBLE: IndexPointerType read new IndexPointerType($140A); public function ToString: string; override; begin if self.val = UInt32($1402) then Result := 'SHORT' else if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else Result := $'IndexPointerType[{self.val}]'; end; end; InterleavedArrayFormat = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property V2F: InterleavedArrayFormat read new InterleavedArrayFormat($2A20); public static property V3F: InterleavedArrayFormat read new InterleavedArrayFormat($2A21); public static property C4UB_V2F: InterleavedArrayFormat read new InterleavedArrayFormat($2A22); public static property C4UB_V3F: InterleavedArrayFormat read new InterleavedArrayFormat($2A23); public static property C3F_V3F: InterleavedArrayFormat read new InterleavedArrayFormat($2A24); public static property N3F_V3F: InterleavedArrayFormat read new InterleavedArrayFormat($2A25); public static property C4F_N3F_V3F: InterleavedArrayFormat read new InterleavedArrayFormat($2A26); public static property T2F_V3F: InterleavedArrayFormat read new InterleavedArrayFormat($2A27); public static property T4F_V4F: InterleavedArrayFormat read new InterleavedArrayFormat($2A28); public static property T2F_C4UB_V3F: InterleavedArrayFormat read new InterleavedArrayFormat($2A29); public static property T2F_C3F_V3F: InterleavedArrayFormat read new InterleavedArrayFormat($2A2A); public static property T2F_N3F_V3F: InterleavedArrayFormat read new InterleavedArrayFormat($2A2B); public static property T2F_C4F_N3F_V3F: InterleavedArrayFormat read new InterleavedArrayFormat($2A2C); public static property T4F_C4F_N3F_V4F: InterleavedArrayFormat read new InterleavedArrayFormat($2A2D); public function ToString: string; override; begin if self.val = UInt32($2A20) then Result := 'V2F' else if self.val = UInt32($2A21) then Result := 'V3F' else if self.val = UInt32($2A22) then Result := 'C4UB_V2F' else if self.val = UInt32($2A23) then Result := 'C4UB_V3F' else if self.val = UInt32($2A24) then Result := 'C3F_V3F' else if self.val = UInt32($2A25) then Result := 'N3F_V3F' else if self.val = UInt32($2A26) then Result := 'C4F_N3F_V3F' else if self.val = UInt32($2A27) then Result := 'T2F_V3F' else if self.val = UInt32($2A28) then Result := 'T4F_V4F' else if self.val = UInt32($2A29) then Result := 'T2F_C4UB_V3F' else if self.val = UInt32($2A2A) then Result := 'T2F_C3F_V3F' else if self.val = UInt32($2A2B) then Result := 'T2F_N3F_V3F' else if self.val = UInt32($2A2C) then Result := 'T2F_C4F_N3F_V3F' else if self.val = UInt32($2A2D) then Result := 'T4F_C4F_N3F_V4F' else Result := $'InterleavedArrayFormat[{self.val}]'; end; end; InternalFormat = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property STENCIL_INDEX: InternalFormat read new InternalFormat($1901); public static property STENCIL_INDEX_OES: InternalFormat read new InternalFormat($1901); public static property DEPTH_COMPONENT: InternalFormat read new InternalFormat($1902); public static property RED: InternalFormat read new InternalFormat($1903); public static property RED_EXT: InternalFormat read new InternalFormat($1903); public static property RGB: InternalFormat read new InternalFormat($1907); public static property RGBA: InternalFormat read new InternalFormat($1908); public static property R3_G3_B2: InternalFormat read new InternalFormat($2A10); public static property ALPHA4: InternalFormat read new InternalFormat($803B); public static property ALPHA4_EXT: InternalFormat read new InternalFormat($803B); public static property ALPHA8: InternalFormat read new InternalFormat($803C); public static property ALPHA8_EXT: InternalFormat read new InternalFormat($803C); public static property ALPHA8_OES: InternalFormat read new InternalFormat($803C); public static property ALPHA12: InternalFormat read new InternalFormat($803D); public static property ALPHA12_EXT: InternalFormat read new InternalFormat($803D); public static property ALPHA16: InternalFormat read new InternalFormat($803E); public static property ALPHA16_EXT: InternalFormat read new InternalFormat($803E); public static property LUMINANCE4: InternalFormat read new InternalFormat($803F); public static property LUMINANCE4_EXT: InternalFormat read new InternalFormat($803F); public static property LUMINANCE8: InternalFormat read new InternalFormat($8040); public static property LUMINANCE8_EXT: InternalFormat read new InternalFormat($8040); public static property LUMINANCE8_OES: InternalFormat read new InternalFormat($8040); public static property LUMINANCE12: InternalFormat read new InternalFormat($8041); public static property LUMINANCE12_EXT: InternalFormat read new InternalFormat($8041); public static property LUMINANCE16: InternalFormat read new InternalFormat($8042); public static property LUMINANCE16_EXT: InternalFormat read new InternalFormat($8042); public static property LUMINANCE4_ALPHA4: InternalFormat read new InternalFormat($8043); public static property LUMINANCE4_ALPHA4_EXT: InternalFormat read new InternalFormat($8043); public static property LUMINANCE4_ALPHA4_OES: InternalFormat read new InternalFormat($8043); public static property LUMINANCE6_ALPHA2: InternalFormat read new InternalFormat($8044); public static property LUMINANCE6_ALPHA2_EXT: InternalFormat read new InternalFormat($8044); public static property LUMINANCE8_ALPHA8: InternalFormat read new InternalFormat($8045); public static property LUMINANCE8_ALPHA8_EXT: InternalFormat read new InternalFormat($8045); public static property LUMINANCE8_ALPHA8_OES: InternalFormat read new InternalFormat($8045); public static property LUMINANCE12_ALPHA4: InternalFormat read new InternalFormat($8046); public static property LUMINANCE12_ALPHA4_EXT: InternalFormat read new InternalFormat($8046); public static property LUMINANCE12_ALPHA12: InternalFormat read new InternalFormat($8047); public static property LUMINANCE12_ALPHA12_EXT: InternalFormat read new InternalFormat($8047); public static property LUMINANCE16_ALPHA16: InternalFormat read new InternalFormat($8048); public static property LUMINANCE16_ALPHA16_EXT: InternalFormat read new InternalFormat($8048); public static property INTENSITY: InternalFormat read new InternalFormat($8049); public static property INTENSITY4: InternalFormat read new InternalFormat($804A); public static property INTENSITY4_EXT: InternalFormat read new InternalFormat($804A); public static property INTENSITY8: InternalFormat read new InternalFormat($804B); public static property INTENSITY8_EXT: InternalFormat read new InternalFormat($804B); public static property INTENSITY12: InternalFormat read new InternalFormat($804C); public static property INTENSITY12_EXT: InternalFormat read new InternalFormat($804C); public static property INTENSITY16: InternalFormat read new InternalFormat($804D); public static property INTENSITY16_EXT: InternalFormat read new InternalFormat($804D); public static property RGB2_EXT: InternalFormat read new InternalFormat($804E); public static property RGB4: InternalFormat read new InternalFormat($804F); public static property RGB4_EXT: InternalFormat read new InternalFormat($804F); public static property RGB5: InternalFormat read new InternalFormat($8050); public static property RGB5_EXT: InternalFormat read new InternalFormat($8050); public static property RGB8: InternalFormat read new InternalFormat($8051); public static property RGB8_EXT: InternalFormat read new InternalFormat($8051); public static property RGB8_OES: InternalFormat read new InternalFormat($8051); public static property RGB10: InternalFormat read new InternalFormat($8052); public static property RGB10_EXT: InternalFormat read new InternalFormat($8052); public static property RGB12: InternalFormat read new InternalFormat($8053); public static property RGB12_EXT: InternalFormat read new InternalFormat($8053); public static property RGB16: InternalFormat read new InternalFormat($8054); public static property RGB16_EXT: InternalFormat read new InternalFormat($8054); public static property RGBA2: InternalFormat read new InternalFormat($8055); public static property RGBA2_EXT: InternalFormat read new InternalFormat($8055); public static property RGBA4: InternalFormat read new InternalFormat($8056); public static property RGBA4_EXT: InternalFormat read new InternalFormat($8056); public static property RGBA4_OES: InternalFormat read new InternalFormat($8056); public static property RGB5_A1: InternalFormat read new InternalFormat($8057); public static property RGB5_A1_EXT: InternalFormat read new InternalFormat($8057); public static property RGB5_A1_OES: InternalFormat read new InternalFormat($8057); public static property RGBA8: InternalFormat read new InternalFormat($8058); public static property RGBA8_EXT: InternalFormat read new InternalFormat($8058); public static property RGBA8_OES: InternalFormat read new InternalFormat($8058); public static property RGB10_A2: InternalFormat read new InternalFormat($8059); public static property RGB10_A2_EXT: InternalFormat read new InternalFormat($8059); public static property RGBA12: InternalFormat read new InternalFormat($805A); public static property RGBA12_EXT: InternalFormat read new InternalFormat($805A); public static property RGBA16: InternalFormat read new InternalFormat($805B); public static property RGBA16_EXT: InternalFormat read new InternalFormat($805B); public static property DUAL_ALPHA4_SGIS: InternalFormat read new InternalFormat($8110); public static property DUAL_ALPHA8_SGIS: InternalFormat read new InternalFormat($8111); public static property DUAL_ALPHA12_SGIS: InternalFormat read new InternalFormat($8112); public static property DUAL_ALPHA16_SGIS: InternalFormat read new InternalFormat($8113); public static property DUAL_LUMINANCE4_SGIS: InternalFormat read new InternalFormat($8114); public static property DUAL_LUMINANCE8_SGIS: InternalFormat read new InternalFormat($8115); public static property DUAL_LUMINANCE12_SGIS: InternalFormat read new InternalFormat($8116); public static property DUAL_LUMINANCE16_SGIS: InternalFormat read new InternalFormat($8117); public static property DUAL_INTENSITY4_SGIS: InternalFormat read new InternalFormat($8118); public static property DUAL_INTENSITY8_SGIS: InternalFormat read new InternalFormat($8119); public static property DUAL_INTENSITY12_SGIS: InternalFormat read new InternalFormat($811A); public static property DUAL_INTENSITY16_SGIS: InternalFormat read new InternalFormat($811B); public static property DUAL_LUMINANCE_ALPHA4_SGIS: InternalFormat read new InternalFormat($811C); public static property DUAL_LUMINANCE_ALPHA8_SGIS: InternalFormat read new InternalFormat($811D); public static property QUAD_ALPHA4_SGIS: InternalFormat read new InternalFormat($811E); public static property QUAD_ALPHA8_SGIS: InternalFormat read new InternalFormat($811F); public static property QUAD_LUMINANCE4_SGIS: InternalFormat read new InternalFormat($8120); public static property QUAD_LUMINANCE8_SGIS: InternalFormat read new InternalFormat($8121); public static property QUAD_INTENSITY4_SGIS: InternalFormat read new InternalFormat($8122); public static property QUAD_INTENSITY8_SGIS: InternalFormat read new InternalFormat($8123); public static property DEPTH_COMPONENT16: InternalFormat read new InternalFormat($81A5); public static property DEPTH_COMPONENT16_ARB: InternalFormat read new InternalFormat($81A5); public static property DEPTH_COMPONENT16_OES: InternalFormat read new InternalFormat($81A5); public static property DEPTH_COMPONENT16_SGIX: InternalFormat read new InternalFormat($81A5); public static property DEPTH_COMPONENT24: InternalFormat read new InternalFormat($81A6); public static property DEPTH_COMPONENT24_ARB: InternalFormat read new InternalFormat($81A6); public static property DEPTH_COMPONENT24_OES: InternalFormat read new InternalFormat($81A6); public static property DEPTH_COMPONENT24_SGIX: InternalFormat read new InternalFormat($81A6); public static property DEPTH_COMPONENT32: InternalFormat read new InternalFormat($81A7); public static property DEPTH_COMPONENT32_ARB: InternalFormat read new InternalFormat($81A7); public static property DEPTH_COMPONENT32_OES: InternalFormat read new InternalFormat($81A7); public static property DEPTH_COMPONENT32_SGIX: InternalFormat read new InternalFormat($81A7); public static property COMPRESSED_RED: InternalFormat read new InternalFormat($8225); public static property COMPRESSED_RG: InternalFormat read new InternalFormat($8226); public static property RG: InternalFormat read new InternalFormat($8227); public static property R8: InternalFormat read new InternalFormat($8229); public static property R8_EXT: InternalFormat read new InternalFormat($8229); public static property R16: InternalFormat read new InternalFormat($822A); public static property R16_EXT: InternalFormat read new InternalFormat($822A); public static property RG8: InternalFormat read new InternalFormat($822B); public static property RG8_EXT: InternalFormat read new InternalFormat($822B); public static property RG16: InternalFormat read new InternalFormat($822C); public static property RG16_EXT: InternalFormat read new InternalFormat($822C); public static property R16F: InternalFormat read new InternalFormat($822D); public static property R16F_EXT: InternalFormat read new InternalFormat($822D); public static property R32F: InternalFormat read new InternalFormat($822E); public static property R32F_EXT: InternalFormat read new InternalFormat($822E); public static property RG16F: InternalFormat read new InternalFormat($822F); public static property RG16F_EXT: InternalFormat read new InternalFormat($822F); public static property RG32F: InternalFormat read new InternalFormat($8230); public static property RG32F_EXT: InternalFormat read new InternalFormat($8230); public static property R8I: InternalFormat read new InternalFormat($8231); public static property R8UI: InternalFormat read new InternalFormat($8232); public static property R16I: InternalFormat read new InternalFormat($8233); public static property R16UI: InternalFormat read new InternalFormat($8234); public static property R32I: InternalFormat read new InternalFormat($8235); public static property R32UI: InternalFormat read new InternalFormat($8236); public static property RG8I: InternalFormat read new InternalFormat($8237); public static property RG8UI: InternalFormat read new InternalFormat($8238); public static property RG16I: InternalFormat read new InternalFormat($8239); public static property RG16UI: InternalFormat read new InternalFormat($823A); public static property RG32I: InternalFormat read new InternalFormat($823B); public static property RG32UI: InternalFormat read new InternalFormat($823C); public static property COMPRESSED_RGB_S3TC_DXT1_EXT: InternalFormat read new InternalFormat($83F0); public static property COMPRESSED_RGBA_S3TC_DXT1_EXT: InternalFormat read new InternalFormat($83F1); public static property COMPRESSED_RGBA_S3TC_DXT3_ANGLE: InternalFormat read new InternalFormat($83F2); public static property COMPRESSED_RGBA_S3TC_DXT3_EXT: InternalFormat read new InternalFormat($83F2); public static property COMPRESSED_RGBA_S3TC_DXT5_ANGLE: InternalFormat read new InternalFormat($83F3); public static property COMPRESSED_RGBA_S3TC_DXT5_EXT: InternalFormat read new InternalFormat($83F3); public static property COMPRESSED_RGB: InternalFormat read new InternalFormat($84ED); public static property COMPRESSED_RGBA: InternalFormat read new InternalFormat($84EE); public static property DEPTH_STENCIL: InternalFormat read new InternalFormat($84F9); public static property DEPTH_STENCIL_EXT: InternalFormat read new InternalFormat($84F9); public static property DEPTH_STENCIL_NV: InternalFormat read new InternalFormat($84F9); public static property DEPTH_STENCIL_OES: InternalFormat read new InternalFormat($84F9); public static property DEPTH_STENCIL_MESA: InternalFormat read new InternalFormat($8750); public static property RGBA32F: InternalFormat read new InternalFormat($8814); public static property RGBA32F_ARB: InternalFormat read new InternalFormat($8814); public static property RGBA32F_EXT: InternalFormat read new InternalFormat($8814); public static property RGB32F: InternalFormat read new InternalFormat($8815); public static property RGB32F_ARB: InternalFormat read new InternalFormat($8815); public static property RGB32F_EXT: InternalFormat read new InternalFormat($8815); public static property RGBA16F: InternalFormat read new InternalFormat($881A); public static property RGBA16F_ARB: InternalFormat read new InternalFormat($881A); public static property RGBA16F_EXT: InternalFormat read new InternalFormat($881A); public static property RGB16F: InternalFormat read new InternalFormat($881B); public static property RGB16F_ARB: InternalFormat read new InternalFormat($881B); public static property RGB16F_EXT: InternalFormat read new InternalFormat($881B); public static property DEPTH24_STENCIL8: InternalFormat read new InternalFormat($88F0); public static property DEPTH24_STENCIL8_EXT: InternalFormat read new InternalFormat($88F0); public static property DEPTH24_STENCIL8_OES: InternalFormat read new InternalFormat($88F0); public static property R11F_G11F_B10F: InternalFormat read new InternalFormat($8C3A); public static property R11F_G11F_B10F_APPLE: InternalFormat read new InternalFormat($8C3A); public static property R11F_G11F_B10F_EXT: InternalFormat read new InternalFormat($8C3A); public static property RGB9_E5: InternalFormat read new InternalFormat($8C3D); public static property RGB9_E5_APPLE: InternalFormat read new InternalFormat($8C3D); public static property RGB9_E5_EXT: InternalFormat read new InternalFormat($8C3D); public static property SRGB: InternalFormat read new InternalFormat($8C40); public static property SRGB_EXT: InternalFormat read new InternalFormat($8C40); public static property SRGB8: InternalFormat read new InternalFormat($8C41); public static property SRGB8_EXT: InternalFormat read new InternalFormat($8C41); public static property SRGB8_NV: InternalFormat read new InternalFormat($8C41); public static property SRGB_ALPHA: InternalFormat read new InternalFormat($8C42); public static property SRGB_ALPHA_EXT: InternalFormat read new InternalFormat($8C42); public static property SRGB8_ALPHA8: InternalFormat read new InternalFormat($8C43); public static property SRGB8_ALPHA8_EXT: InternalFormat read new InternalFormat($8C43); public static property COMPRESSED_SRGB: InternalFormat read new InternalFormat($8C48); public static property COMPRESSED_SRGB_ALPHA: InternalFormat read new InternalFormat($8C49); public static property COMPRESSED_SRGB_S3TC_DXT1_EXT: InternalFormat read new InternalFormat($8C4C); public static property COMPRESSED_SRGB_S3TC_DXT1_NV: InternalFormat read new InternalFormat($8C4C); public static property COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: InternalFormat read new InternalFormat($8C4D); public static property COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV: InternalFormat read new InternalFormat($8C4D); public static property COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: InternalFormat read new InternalFormat($8C4E); public static property COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV: InternalFormat read new InternalFormat($8C4E); public static property COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: InternalFormat read new InternalFormat($8C4F); public static property COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV: InternalFormat read new InternalFormat($8C4F); public static property DEPTH_COMPONENT32F: InternalFormat read new InternalFormat($8CAC); public static property DEPTH32F_STENCIL8: InternalFormat read new InternalFormat($8CAD); public static property STENCIL_INDEX1: InternalFormat read new InternalFormat($8D46); public static property STENCIL_INDEX1_EXT: InternalFormat read new InternalFormat($8D46); public static property STENCIL_INDEX1_OES: InternalFormat read new InternalFormat($8D46); public static property STENCIL_INDEX4: InternalFormat read new InternalFormat($8D47); public static property STENCIL_INDEX4_EXT: InternalFormat read new InternalFormat($8D47); public static property STENCIL_INDEX4_OES: InternalFormat read new InternalFormat($8D47); public static property STENCIL_INDEX8: InternalFormat read new InternalFormat($8D48); public static property STENCIL_INDEX8_EXT: InternalFormat read new InternalFormat($8D48); public static property STENCIL_INDEX8_OES: InternalFormat read new InternalFormat($8D48); public static property STENCIL_INDEX16: InternalFormat read new InternalFormat($8D49); public static property STENCIL_INDEX16_EXT: InternalFormat read new InternalFormat($8D49); public static property RGB565: InternalFormat read new InternalFormat($8D62); public static property RGB565_OES: InternalFormat read new InternalFormat($8D62); public static property ETC1_RGB8_OES: InternalFormat read new InternalFormat($8D64); public static property RGBA32UI: InternalFormat read new InternalFormat($8D70); public static property RGBA32UI_EXT: InternalFormat read new InternalFormat($8D70); public static property RGB32UI: InternalFormat read new InternalFormat($8D71); public static property RGB32UI_EXT: InternalFormat read new InternalFormat($8D71); public static property ALPHA32UI_EXT: InternalFormat read new InternalFormat($8D72); public static property INTENSITY32UI_EXT: InternalFormat read new InternalFormat($8D73); public static property LUMINANCE32UI_EXT: InternalFormat read new InternalFormat($8D74); public static property LUMINANCE_ALPHA32UI_EXT: InternalFormat read new InternalFormat($8D75); public static property RGBA16UI: InternalFormat read new InternalFormat($8D76); public static property RGBA16UI_EXT: InternalFormat read new InternalFormat($8D76); public static property RGB16UI: InternalFormat read new InternalFormat($8D77); public static property RGB16UI_EXT: InternalFormat read new InternalFormat($8D77); public static property ALPHA16UI_EXT: InternalFormat read new InternalFormat($8D78); public static property INTENSITY16UI_EXT: InternalFormat read new InternalFormat($8D79); public static property LUMINANCE16UI_EXT: InternalFormat read new InternalFormat($8D7A); public static property LUMINANCE_ALPHA16UI_EXT: InternalFormat read new InternalFormat($8D7B); public static property RGBA8UI: InternalFormat read new InternalFormat($8D7C); public static property RGBA8UI_EXT: InternalFormat read new InternalFormat($8D7C); public static property RGB8UI: InternalFormat read new InternalFormat($8D7D); public static property RGB8UI_EXT: InternalFormat read new InternalFormat($8D7D); public static property ALPHA8UI_EXT: InternalFormat read new InternalFormat($8D7E); public static property INTENSITY8UI_EXT: InternalFormat read new InternalFormat($8D7F); public static property LUMINANCE8UI_EXT: InternalFormat read new InternalFormat($8D80); public static property LUMINANCE_ALPHA8UI_EXT: InternalFormat read new InternalFormat($8D81); public static property RGBA32I: InternalFormat read new InternalFormat($8D82); public static property RGBA32I_EXT: InternalFormat read new InternalFormat($8D82); public static property RGB32I: InternalFormat read new InternalFormat($8D83); public static property RGB32I_EXT: InternalFormat read new InternalFormat($8D83); public static property ALPHA32I_EXT: InternalFormat read new InternalFormat($8D84); public static property INTENSITY32I_EXT: InternalFormat read new InternalFormat($8D85); public static property LUMINANCE32I_EXT: InternalFormat read new InternalFormat($8D86); public static property LUMINANCE_ALPHA32I_EXT: InternalFormat read new InternalFormat($8D87); public static property RGBA16I: InternalFormat read new InternalFormat($8D88); public static property RGBA16I_EXT: InternalFormat read new InternalFormat($8D88); public static property RGB16I: InternalFormat read new InternalFormat($8D89); public static property RGB16I_EXT: InternalFormat read new InternalFormat($8D89); public static property ALPHA16I_EXT: InternalFormat read new InternalFormat($8D8A); public static property INTENSITY16I_EXT: InternalFormat read new InternalFormat($8D8B); public static property LUMINANCE16I_EXT: InternalFormat read new InternalFormat($8D8C); public static property LUMINANCE_ALPHA16I_EXT: InternalFormat read new InternalFormat($8D8D); public static property RGBA8I: InternalFormat read new InternalFormat($8D8E); public static property RGBA8I_EXT: InternalFormat read new InternalFormat($8D8E); public static property RGB8I: InternalFormat read new InternalFormat($8D8F); public static property RGB8I_EXT: InternalFormat read new InternalFormat($8D8F); public static property ALPHA8I_EXT: InternalFormat read new InternalFormat($8D90); public static property INTENSITY8I_EXT: InternalFormat read new InternalFormat($8D91); public static property LUMINANCE8I_EXT: InternalFormat read new InternalFormat($8D92); public static property LUMINANCE_ALPHA8I_EXT: InternalFormat read new InternalFormat($8D93); public static property DEPTH_COMPONENT32F_NV: InternalFormat read new InternalFormat($8DAB); public static property DEPTH32F_STENCIL8_NV: InternalFormat read new InternalFormat($8DAC); public static property COMPRESSED_RED_RGTC1: InternalFormat read new InternalFormat($8DBB); public static property COMPRESSED_RED_RGTC1_EXT: InternalFormat read new InternalFormat($8DBB); public static property COMPRESSED_SIGNED_RED_RGTC1: InternalFormat read new InternalFormat($8DBC); public static property COMPRESSED_SIGNED_RED_RGTC1_EXT: InternalFormat read new InternalFormat($8DBC); public static property COMPRESSED_RED_GREEN_RGTC2_EXT: InternalFormat read new InternalFormat($8DBD); public static property COMPRESSED_RG_RGTC2: InternalFormat read new InternalFormat($8DBD); public static property COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: InternalFormat read new InternalFormat($8DBE); public static property COMPRESSED_SIGNED_RG_RGTC2: InternalFormat read new InternalFormat($8DBE); public static property COMPRESSED_RGBA_BPTC_UNORM: InternalFormat read new InternalFormat($8E8C); public static property COMPRESSED_RGBA_BPTC_UNORM_ARB: InternalFormat read new InternalFormat($8E8C); public static property COMPRESSED_RGBA_BPTC_UNORM_EXT: InternalFormat read new InternalFormat($8E8C); public static property COMPRESSED_SRGB_ALPHA_BPTC_UNORM: InternalFormat read new InternalFormat($8E8D); public static property COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB: InternalFormat read new InternalFormat($8E8D); public static property COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT: InternalFormat read new InternalFormat($8E8D); public static property COMPRESSED_RGB_BPTC_SIGNED_FLOAT: InternalFormat read new InternalFormat($8E8E); public static property COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB: InternalFormat read new InternalFormat($8E8E); public static property COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT: InternalFormat read new InternalFormat($8E8E); public static property COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT: InternalFormat read new InternalFormat($8E8F); public static property COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB: InternalFormat read new InternalFormat($8E8F); public static property COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: InternalFormat read new InternalFormat($8E8F); public static property R8_SNORM: InternalFormat read new InternalFormat($8F94); public static property RG8_SNORM: InternalFormat read new InternalFormat($8F95); public static property RGB8_SNORM: InternalFormat read new InternalFormat($8F96); public static property RGBA8_SNORM: InternalFormat read new InternalFormat($8F97); public static property R16_SNORM: InternalFormat read new InternalFormat($8F98); public static property R16_SNORM_EXT: InternalFormat read new InternalFormat($8F98); public static property RG16_SNORM: InternalFormat read new InternalFormat($8F99); public static property RG16_SNORM_EXT: InternalFormat read new InternalFormat($8F99); public static property RGB16_SNORM: InternalFormat read new InternalFormat($8F9A); public static property RGB16_SNORM_EXT: InternalFormat read new InternalFormat($8F9A); public static property RGBA16_SNORM: InternalFormat read new InternalFormat($8F9B); public static property RGBA16_SNORM_EXT: InternalFormat read new InternalFormat($8F9B); public static property SR8_EXT: InternalFormat read new InternalFormat($8FBD); public static property SRG8_EXT: InternalFormat read new InternalFormat($8FBE); public static property RGB10_A2UI: InternalFormat read new InternalFormat($906F); public static property COMPRESSED_R11_EAC: InternalFormat read new InternalFormat($9270); public static property COMPRESSED_R11_EAC_OES: InternalFormat read new InternalFormat($9270); public static property COMPRESSED_SIGNED_R11_EAC: InternalFormat read new InternalFormat($9271); public static property COMPRESSED_SIGNED_R11_EAC_OES: InternalFormat read new InternalFormat($9271); public static property COMPRESSED_RG11_EAC: InternalFormat read new InternalFormat($9272); public static property COMPRESSED_RG11_EAC_OES: InternalFormat read new InternalFormat($9272); public static property COMPRESSED_SIGNED_RG11_EAC: InternalFormat read new InternalFormat($9273); public static property COMPRESSED_SIGNED_RG11_EAC_OES: InternalFormat read new InternalFormat($9273); public static property COMPRESSED_RGB8_ETC2: InternalFormat read new InternalFormat($9274); public static property COMPRESSED_RGB8_ETC2_OES: InternalFormat read new InternalFormat($9274); public static property COMPRESSED_SRGB8_ETC2: InternalFormat read new InternalFormat($9275); public static property COMPRESSED_SRGB8_ETC2_OES: InternalFormat read new InternalFormat($9275); public static property COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: InternalFormat read new InternalFormat($9276); public static property COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES: InternalFormat read new InternalFormat($9276); public static property COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: InternalFormat read new InternalFormat($9277); public static property COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES: InternalFormat read new InternalFormat($9277); public static property COMPRESSED_RGBA8_ETC2_EAC: InternalFormat read new InternalFormat($9278); public static property COMPRESSED_RGBA8_ETC2_EAC_OES: InternalFormat read new InternalFormat($9278); public static property COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: InternalFormat read new InternalFormat($9279); public static property COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_OES: InternalFormat read new InternalFormat($9279); public static property COMPRESSED_RGBA_ASTC_4x4: InternalFormat read new InternalFormat($93B0); public static property COMPRESSED_RGBA_ASTC_4x4_KHR: InternalFormat read new InternalFormat($93B0); public static property COMPRESSED_RGBA_ASTC_5x4: InternalFormat read new InternalFormat($93B1); public static property COMPRESSED_RGBA_ASTC_5x4_KHR: InternalFormat read new InternalFormat($93B1); public static property COMPRESSED_RGBA_ASTC_5x5: InternalFormat read new InternalFormat($93B2); public static property COMPRESSED_RGBA_ASTC_5x5_KHR: InternalFormat read new InternalFormat($93B2); public static property COMPRESSED_RGBA_ASTC_6x5: InternalFormat read new InternalFormat($93B3); public static property COMPRESSED_RGBA_ASTC_6x5_KHR: InternalFormat read new InternalFormat($93B3); public static property COMPRESSED_RGBA_ASTC_6x6: InternalFormat read new InternalFormat($93B4); public static property COMPRESSED_RGBA_ASTC_6x6_KHR: InternalFormat read new InternalFormat($93B4); public static property COMPRESSED_RGBA_ASTC_8x5: InternalFormat read new InternalFormat($93B5); public static property COMPRESSED_RGBA_ASTC_8x5_KHR: InternalFormat read new InternalFormat($93B5); public static property COMPRESSED_RGBA_ASTC_8x6: InternalFormat read new InternalFormat($93B6); public static property COMPRESSED_RGBA_ASTC_8x6_KHR: InternalFormat read new InternalFormat($93B6); public static property COMPRESSED_RGBA_ASTC_8x8: InternalFormat read new InternalFormat($93B7); public static property COMPRESSED_RGBA_ASTC_8x8_KHR: InternalFormat read new InternalFormat($93B7); public static property COMPRESSED_RGBA_ASTC_10x5: InternalFormat read new InternalFormat($93B8); public static property COMPRESSED_RGBA_ASTC_10x5_KHR: InternalFormat read new InternalFormat($93B8); public static property COMPRESSED_RGBA_ASTC_10x6: InternalFormat read new InternalFormat($93B9); public static property COMPRESSED_RGBA_ASTC_10x6_KHR: InternalFormat read new InternalFormat($93B9); public static property COMPRESSED_RGBA_ASTC_10x8: InternalFormat read new InternalFormat($93BA); public static property COMPRESSED_RGBA_ASTC_10x8_KHR: InternalFormat read new InternalFormat($93BA); public static property COMPRESSED_RGBA_ASTC_10x10: InternalFormat read new InternalFormat($93BB); public static property COMPRESSED_RGBA_ASTC_10x10_KHR: InternalFormat read new InternalFormat($93BB); public static property COMPRESSED_RGBA_ASTC_12x10: InternalFormat read new InternalFormat($93BC); public static property COMPRESSED_RGBA_ASTC_12x10_KHR: InternalFormat read new InternalFormat($93BC); public static property COMPRESSED_RGBA_ASTC_12x12: InternalFormat read new InternalFormat($93BD); public static property COMPRESSED_RGBA_ASTC_12x12_KHR: InternalFormat read new InternalFormat($93BD); public static property COMPRESSED_RGBA_ASTC_3x3x3_OES: InternalFormat read new InternalFormat($93C0); public static property COMPRESSED_RGBA_ASTC_4x3x3_OES: InternalFormat read new InternalFormat($93C1); public static property COMPRESSED_RGBA_ASTC_4x4x3_OES: InternalFormat read new InternalFormat($93C2); public static property COMPRESSED_RGBA_ASTC_4x4x4_OES: InternalFormat read new InternalFormat($93C3); public static property COMPRESSED_RGBA_ASTC_5x4x4_OES: InternalFormat read new InternalFormat($93C4); public static property COMPRESSED_RGBA_ASTC_5x5x4_OES: InternalFormat read new InternalFormat($93C5); public static property COMPRESSED_RGBA_ASTC_5x5x5_OES: InternalFormat read new InternalFormat($93C6); public static property COMPRESSED_RGBA_ASTC_6x5x5_OES: InternalFormat read new InternalFormat($93C7); public static property COMPRESSED_RGBA_ASTC_6x6x5_OES: InternalFormat read new InternalFormat($93C8); public static property COMPRESSED_RGBA_ASTC_6x6x6_OES: InternalFormat read new InternalFormat($93C9); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_4x4: InternalFormat read new InternalFormat($93D0); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: InternalFormat read new InternalFormat($93D0); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_5x4: InternalFormat read new InternalFormat($93D1); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: InternalFormat read new InternalFormat($93D1); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_5x5: InternalFormat read new InternalFormat($93D2); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: InternalFormat read new InternalFormat($93D2); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_6x5: InternalFormat read new InternalFormat($93D3); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: InternalFormat read new InternalFormat($93D3); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_6x6: InternalFormat read new InternalFormat($93D4); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: InternalFormat read new InternalFormat($93D4); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_8x5: InternalFormat read new InternalFormat($93D5); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: InternalFormat read new InternalFormat($93D5); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_8x6: InternalFormat read new InternalFormat($93D6); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: InternalFormat read new InternalFormat($93D6); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_8x8: InternalFormat read new InternalFormat($93D7); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: InternalFormat read new InternalFormat($93D7); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x5: InternalFormat read new InternalFormat($93D8); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: InternalFormat read new InternalFormat($93D8); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x6: InternalFormat read new InternalFormat($93D9); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: InternalFormat read new InternalFormat($93D9); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x8: InternalFormat read new InternalFormat($93DA); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: InternalFormat read new InternalFormat($93DA); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x10: InternalFormat read new InternalFormat($93DB); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: InternalFormat read new InternalFormat($93DB); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_12x10: InternalFormat read new InternalFormat($93DC); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: InternalFormat read new InternalFormat($93DC); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_12x12: InternalFormat read new InternalFormat($93DD); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: InternalFormat read new InternalFormat($93DD); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES: InternalFormat read new InternalFormat($93E0); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES: InternalFormat read new InternalFormat($93E1); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES: InternalFormat read new InternalFormat($93E2); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES: InternalFormat read new InternalFormat($93E3); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES: InternalFormat read new InternalFormat($93E4); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES: InternalFormat read new InternalFormat($93E5); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES: InternalFormat read new InternalFormat($93E6); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES: InternalFormat read new InternalFormat($93E7); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES: InternalFormat read new InternalFormat($93E8); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES: InternalFormat read new InternalFormat($93E9); public function ToString: string; override; begin if self.val = UInt32($1901) then Result := 'STENCIL_INDEX' else if self.val = UInt32($1901) then Result := 'STENCIL_INDEX_OES' else if self.val = UInt32($1902) then Result := 'DEPTH_COMPONENT' else if self.val = UInt32($1903) then Result := 'RED' else if self.val = UInt32($1903) then Result := 'RED_EXT' else if self.val = UInt32($1907) then Result := 'RGB' else if self.val = UInt32($1908) then Result := 'RGBA' else if self.val = UInt32($2A10) then Result := 'R3_G3_B2' else if self.val = UInt32($803B) then Result := 'ALPHA4' else if self.val = UInt32($803B) then Result := 'ALPHA4_EXT' else if self.val = UInt32($803C) then Result := 'ALPHA8' else if self.val = UInt32($803C) then Result := 'ALPHA8_EXT' else if self.val = UInt32($803C) then Result := 'ALPHA8_OES' else if self.val = UInt32($803D) then Result := 'ALPHA12' else if self.val = UInt32($803D) then Result := 'ALPHA12_EXT' else if self.val = UInt32($803E) then Result := 'ALPHA16' else if self.val = UInt32($803E) then Result := 'ALPHA16_EXT' else if self.val = UInt32($803F) then Result := 'LUMINANCE4' else if self.val = UInt32($803F) then Result := 'LUMINANCE4_EXT' else if self.val = UInt32($8040) then Result := 'LUMINANCE8' else if self.val = UInt32($8040) then Result := 'LUMINANCE8_EXT' else if self.val = UInt32($8040) then Result := 'LUMINANCE8_OES' else if self.val = UInt32($8041) then Result := 'LUMINANCE12' else if self.val = UInt32($8041) then Result := 'LUMINANCE12_EXT' else if self.val = UInt32($8042) then Result := 'LUMINANCE16' else if self.val = UInt32($8042) then Result := 'LUMINANCE16_EXT' else if self.val = UInt32($8043) then Result := 'LUMINANCE4_ALPHA4' else if self.val = UInt32($8043) then Result := 'LUMINANCE4_ALPHA4_EXT' else if self.val = UInt32($8043) then Result := 'LUMINANCE4_ALPHA4_OES' else if self.val = UInt32($8044) then Result := 'LUMINANCE6_ALPHA2' else if self.val = UInt32($8044) then Result := 'LUMINANCE6_ALPHA2_EXT' else if self.val = UInt32($8045) then Result := 'LUMINANCE8_ALPHA8' else if self.val = UInt32($8045) then Result := 'LUMINANCE8_ALPHA8_EXT' else if self.val = UInt32($8045) then Result := 'LUMINANCE8_ALPHA8_OES' else if self.val = UInt32($8046) then Result := 'LUMINANCE12_ALPHA4' else if self.val = UInt32($8046) then Result := 'LUMINANCE12_ALPHA4_EXT' else if self.val = UInt32($8047) then Result := 'LUMINANCE12_ALPHA12' else if self.val = UInt32($8047) then Result := 'LUMINANCE12_ALPHA12_EXT' else if self.val = UInt32($8048) then Result := 'LUMINANCE16_ALPHA16' else if self.val = UInt32($8048) then Result := 'LUMINANCE16_ALPHA16_EXT' else if self.val = UInt32($8049) then Result := 'INTENSITY' else if self.val = UInt32($804A) then Result := 'INTENSITY4' else if self.val = UInt32($804A) then Result := 'INTENSITY4_EXT' else if self.val = UInt32($804B) then Result := 'INTENSITY8' else if self.val = UInt32($804B) then Result := 'INTENSITY8_EXT' else if self.val = UInt32($804C) then Result := 'INTENSITY12' else if self.val = UInt32($804C) then Result := 'INTENSITY12_EXT' else if self.val = UInt32($804D) then Result := 'INTENSITY16' else if self.val = UInt32($804D) then Result := 'INTENSITY16_EXT' else if self.val = UInt32($804E) then Result := 'RGB2_EXT' else if self.val = UInt32($804F) then Result := 'RGB4' else if self.val = UInt32($804F) then Result := 'RGB4_EXT' else if self.val = UInt32($8050) then Result := 'RGB5' else if self.val = UInt32($8050) then Result := 'RGB5_EXT' else if self.val = UInt32($8051) then Result := 'RGB8' else if self.val = UInt32($8051) then Result := 'RGB8_EXT' else if self.val = UInt32($8051) then Result := 'RGB8_OES' else if self.val = UInt32($8052) then Result := 'RGB10' else if self.val = UInt32($8052) then Result := 'RGB10_EXT' else if self.val = UInt32($8053) then Result := 'RGB12' else if self.val = UInt32($8053) then Result := 'RGB12_EXT' else if self.val = UInt32($8054) then Result := 'RGB16' else if self.val = UInt32($8054) then Result := 'RGB16_EXT' else if self.val = UInt32($8055) then Result := 'RGBA2' else if self.val = UInt32($8055) then Result := 'RGBA2_EXT' else if self.val = UInt32($8056) then Result := 'RGBA4' else if self.val = UInt32($8056) then Result := 'RGBA4_EXT' else if self.val = UInt32($8056) then Result := 'RGBA4_OES' else if self.val = UInt32($8057) then Result := 'RGB5_A1' else if self.val = UInt32($8057) then Result := 'RGB5_A1_EXT' else if self.val = UInt32($8057) then Result := 'RGB5_A1_OES' else if self.val = UInt32($8058) then Result := 'RGBA8' else if self.val = UInt32($8058) then Result := 'RGBA8_EXT' else if self.val = UInt32($8058) then Result := 'RGBA8_OES' else if self.val = UInt32($8059) then Result := 'RGB10_A2' else if self.val = UInt32($8059) then Result := 'RGB10_A2_EXT' else if self.val = UInt32($805A) then Result := 'RGBA12' else if self.val = UInt32($805A) then Result := 'RGBA12_EXT' else if self.val = UInt32($805B) then Result := 'RGBA16' else if self.val = UInt32($805B) then Result := 'RGBA16_EXT' else if self.val = UInt32($8110) then Result := 'DUAL_ALPHA4_SGIS' else if self.val = UInt32($8111) then Result := 'DUAL_ALPHA8_SGIS' else if self.val = UInt32($8112) then Result := 'DUAL_ALPHA12_SGIS' else if self.val = UInt32($8113) then Result := 'DUAL_ALPHA16_SGIS' else if self.val = UInt32($8114) then Result := 'DUAL_LUMINANCE4_SGIS' else if self.val = UInt32($8115) then Result := 'DUAL_LUMINANCE8_SGIS' else if self.val = UInt32($8116) then Result := 'DUAL_LUMINANCE12_SGIS' else if self.val = UInt32($8117) then Result := 'DUAL_LUMINANCE16_SGIS' else if self.val = UInt32($8118) then Result := 'DUAL_INTENSITY4_SGIS' else if self.val = UInt32($8119) then Result := 'DUAL_INTENSITY8_SGIS' else if self.val = UInt32($811A) then Result := 'DUAL_INTENSITY12_SGIS' else if self.val = UInt32($811B) then Result := 'DUAL_INTENSITY16_SGIS' else if self.val = UInt32($811C) then Result := 'DUAL_LUMINANCE_ALPHA4_SGIS' else if self.val = UInt32($811D) then Result := 'DUAL_LUMINANCE_ALPHA8_SGIS' else if self.val = UInt32($811E) then Result := 'QUAD_ALPHA4_SGIS' else if self.val = UInt32($811F) then Result := 'QUAD_ALPHA8_SGIS' else if self.val = UInt32($8120) then Result := 'QUAD_LUMINANCE4_SGIS' else if self.val = UInt32($8121) then Result := 'QUAD_LUMINANCE8_SGIS' else if self.val = UInt32($8122) then Result := 'QUAD_INTENSITY4_SGIS' else if self.val = UInt32($8123) then Result := 'QUAD_INTENSITY8_SGIS' else if self.val = UInt32($81A5) then Result := 'DEPTH_COMPONENT16' else if self.val = UInt32($81A5) then Result := 'DEPTH_COMPONENT16_ARB' else if self.val = UInt32($81A5) then Result := 'DEPTH_COMPONENT16_OES' else if self.val = UInt32($81A5) then Result := 'DEPTH_COMPONENT16_SGIX' else if self.val = UInt32($81A6) then Result := 'DEPTH_COMPONENT24' else if self.val = UInt32($81A6) then Result := 'DEPTH_COMPONENT24_ARB' else if self.val = UInt32($81A6) then Result := 'DEPTH_COMPONENT24_OES' else if self.val = UInt32($81A6) then Result := 'DEPTH_COMPONENT24_SGIX' else if self.val = UInt32($81A7) then Result := 'DEPTH_COMPONENT32' else if self.val = UInt32($81A7) then Result := 'DEPTH_COMPONENT32_ARB' else if self.val = UInt32($81A7) then Result := 'DEPTH_COMPONENT32_OES' else if self.val = UInt32($81A7) then Result := 'DEPTH_COMPONENT32_SGIX' else if self.val = UInt32($8225) then Result := 'COMPRESSED_RED' else if self.val = UInt32($8226) then Result := 'COMPRESSED_RG' else if self.val = UInt32($8227) then Result := 'RG' else if self.val = UInt32($8229) then Result := 'R8' else if self.val = UInt32($8229) then Result := 'R8_EXT' else if self.val = UInt32($822A) then Result := 'R16' else if self.val = UInt32($822A) then Result := 'R16_EXT' else if self.val = UInt32($822B) then Result := 'RG8' else if self.val = UInt32($822B) then Result := 'RG8_EXT' else if self.val = UInt32($822C) then Result := 'RG16' else if self.val = UInt32($822C) then Result := 'RG16_EXT' else if self.val = UInt32($822D) then Result := 'R16F' else if self.val = UInt32($822D) then Result := 'R16F_EXT' else if self.val = UInt32($822E) then Result := 'R32F' else if self.val = UInt32($822E) then Result := 'R32F_EXT' else if self.val = UInt32($822F) then Result := 'RG16F' else if self.val = UInt32($822F) then Result := 'RG16F_EXT' else if self.val = UInt32($8230) then Result := 'RG32F' else if self.val = UInt32($8230) then Result := 'RG32F_EXT' else if self.val = UInt32($8231) then Result := 'R8I' else if self.val = UInt32($8232) then Result := 'R8UI' else if self.val = UInt32($8233) then Result := 'R16I' else if self.val = UInt32($8234) then Result := 'R16UI' else if self.val = UInt32($8235) then Result := 'R32I' else if self.val = UInt32($8236) then Result := 'R32UI' else if self.val = UInt32($8237) then Result := 'RG8I' else if self.val = UInt32($8238) then Result := 'RG8UI' else if self.val = UInt32($8239) then Result := 'RG16I' else if self.val = UInt32($823A) then Result := 'RG16UI' else if self.val = UInt32($823B) then Result := 'RG32I' else if self.val = UInt32($823C) then Result := 'RG32UI' else if self.val = UInt32($83F0) then Result := 'COMPRESSED_RGB_S3TC_DXT1_EXT' else if self.val = UInt32($83F1) then Result := 'COMPRESSED_RGBA_S3TC_DXT1_EXT' else if self.val = UInt32($83F2) then Result := 'COMPRESSED_RGBA_S3TC_DXT3_ANGLE' else if self.val = UInt32($83F2) then Result := 'COMPRESSED_RGBA_S3TC_DXT3_EXT' else if self.val = UInt32($83F3) then Result := 'COMPRESSED_RGBA_S3TC_DXT5_ANGLE' else if self.val = UInt32($83F3) then Result := 'COMPRESSED_RGBA_S3TC_DXT5_EXT' else if self.val = UInt32($84ED) then Result := 'COMPRESSED_RGB' else if self.val = UInt32($84EE) then Result := 'COMPRESSED_RGBA' else if self.val = UInt32($84F9) then Result := 'DEPTH_STENCIL' else if self.val = UInt32($84F9) then Result := 'DEPTH_STENCIL_EXT' else if self.val = UInt32($84F9) then Result := 'DEPTH_STENCIL_NV' else if self.val = UInt32($84F9) then Result := 'DEPTH_STENCIL_OES' else if self.val = UInt32($8750) then Result := 'DEPTH_STENCIL_MESA' else if self.val = UInt32($8814) then Result := 'RGBA32F' else if self.val = UInt32($8814) then Result := 'RGBA32F_ARB' else if self.val = UInt32($8814) then Result := 'RGBA32F_EXT' else if self.val = UInt32($8815) then Result := 'RGB32F' else if self.val = UInt32($8815) then Result := 'RGB32F_ARB' else if self.val = UInt32($8815) then Result := 'RGB32F_EXT' else if self.val = UInt32($881A) then Result := 'RGBA16F' else if self.val = UInt32($881A) then Result := 'RGBA16F_ARB' else if self.val = UInt32($881A) then Result := 'RGBA16F_EXT' else if self.val = UInt32($881B) then Result := 'RGB16F' else if self.val = UInt32($881B) then Result := 'RGB16F_ARB' else if self.val = UInt32($881B) then Result := 'RGB16F_EXT' else if self.val = UInt32($88F0) then Result := 'DEPTH24_STENCIL8' else if self.val = UInt32($88F0) then Result := 'DEPTH24_STENCIL8_EXT' else if self.val = UInt32($88F0) then Result := 'DEPTH24_STENCIL8_OES' else if self.val = UInt32($8C3A) then Result := 'R11F_G11F_B10F' else if self.val = UInt32($8C3A) then Result := 'R11F_G11F_B10F_APPLE' else if self.val = UInt32($8C3A) then Result := 'R11F_G11F_B10F_EXT' else if self.val = UInt32($8C3D) then Result := 'RGB9_E5' else if self.val = UInt32($8C3D) then Result := 'RGB9_E5_APPLE' else if self.val = UInt32($8C3D) then Result := 'RGB9_E5_EXT' else if self.val = UInt32($8C40) then Result := 'SRGB' else if self.val = UInt32($8C40) then Result := 'SRGB_EXT' else if self.val = UInt32($8C41) then Result := 'SRGB8' else if self.val = UInt32($8C41) then Result := 'SRGB8_EXT' else if self.val = UInt32($8C41) then Result := 'SRGB8_NV' else if self.val = UInt32($8C42) then Result := 'SRGB_ALPHA' else if self.val = UInt32($8C42) then Result := 'SRGB_ALPHA_EXT' else if self.val = UInt32($8C43) then Result := 'SRGB8_ALPHA8' else if self.val = UInt32($8C43) then Result := 'SRGB8_ALPHA8_EXT' else if self.val = UInt32($8C48) then Result := 'COMPRESSED_SRGB' else if self.val = UInt32($8C49) then Result := 'COMPRESSED_SRGB_ALPHA' else if self.val = UInt32($8C4C) then Result := 'COMPRESSED_SRGB_S3TC_DXT1_EXT' else if self.val = UInt32($8C4C) then Result := 'COMPRESSED_SRGB_S3TC_DXT1_NV' else if self.val = UInt32($8C4D) then Result := 'COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT' else if self.val = UInt32($8C4D) then Result := 'COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV' else if self.val = UInt32($8C4E) then Result := 'COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT' else if self.val = UInt32($8C4E) then Result := 'COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV' else if self.val = UInt32($8C4F) then Result := 'COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT' else if self.val = UInt32($8C4F) then Result := 'COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV' else if self.val = UInt32($8CAC) then Result := 'DEPTH_COMPONENT32F' else if self.val = UInt32($8CAD) then Result := 'DEPTH32F_STENCIL8' else if self.val = UInt32($8D46) then Result := 'STENCIL_INDEX1' else if self.val = UInt32($8D46) then Result := 'STENCIL_INDEX1_EXT' else if self.val = UInt32($8D46) then Result := 'STENCIL_INDEX1_OES' else if self.val = UInt32($8D47) then Result := 'STENCIL_INDEX4' else if self.val = UInt32($8D47) then Result := 'STENCIL_INDEX4_EXT' else if self.val = UInt32($8D47) then Result := 'STENCIL_INDEX4_OES' else if self.val = UInt32($8D48) then Result := 'STENCIL_INDEX8' else if self.val = UInt32($8D48) then Result := 'STENCIL_INDEX8_EXT' else if self.val = UInt32($8D48) then Result := 'STENCIL_INDEX8_OES' else if self.val = UInt32($8D49) then Result := 'STENCIL_INDEX16' else if self.val = UInt32($8D49) then Result := 'STENCIL_INDEX16_EXT' else if self.val = UInt32($8D62) then Result := 'RGB565' else if self.val = UInt32($8D62) then Result := 'RGB565_OES' else if self.val = UInt32($8D64) then Result := 'ETC1_RGB8_OES' else if self.val = UInt32($8D70) then Result := 'RGBA32UI' else if self.val = UInt32($8D70) then Result := 'RGBA32UI_EXT' else if self.val = UInt32($8D71) then Result := 'RGB32UI' else if self.val = UInt32($8D71) then Result := 'RGB32UI_EXT' else if self.val = UInt32($8D72) then Result := 'ALPHA32UI_EXT' else if self.val = UInt32($8D73) then Result := 'INTENSITY32UI_EXT' else if self.val = UInt32($8D74) then Result := 'LUMINANCE32UI_EXT' else if self.val = UInt32($8D75) then Result := 'LUMINANCE_ALPHA32UI_EXT' else if self.val = UInt32($8D76) then Result := 'RGBA16UI' else if self.val = UInt32($8D76) then Result := 'RGBA16UI_EXT' else if self.val = UInt32($8D77) then Result := 'RGB16UI' else if self.val = UInt32($8D77) then Result := 'RGB16UI_EXT' else if self.val = UInt32($8D78) then Result := 'ALPHA16UI_EXT' else if self.val = UInt32($8D79) then Result := 'INTENSITY16UI_EXT' else if self.val = UInt32($8D7A) then Result := 'LUMINANCE16UI_EXT' else if self.val = UInt32($8D7B) then Result := 'LUMINANCE_ALPHA16UI_EXT' else if self.val = UInt32($8D7C) then Result := 'RGBA8UI' else if self.val = UInt32($8D7C) then Result := 'RGBA8UI_EXT' else if self.val = UInt32($8D7D) then Result := 'RGB8UI' else if self.val = UInt32($8D7D) then Result := 'RGB8UI_EXT' else if self.val = UInt32($8D7E) then Result := 'ALPHA8UI_EXT' else if self.val = UInt32($8D7F) then Result := 'INTENSITY8UI_EXT' else if self.val = UInt32($8D80) then Result := 'LUMINANCE8UI_EXT' else if self.val = UInt32($8D81) then Result := 'LUMINANCE_ALPHA8UI_EXT' else if self.val = UInt32($8D82) then Result := 'RGBA32I' else if self.val = UInt32($8D82) then Result := 'RGBA32I_EXT' else if self.val = UInt32($8D83) then Result := 'RGB32I' else if self.val = UInt32($8D83) then Result := 'RGB32I_EXT' else if self.val = UInt32($8D84) then Result := 'ALPHA32I_EXT' else if self.val = UInt32($8D85) then Result := 'INTENSITY32I_EXT' else if self.val = UInt32($8D86) then Result := 'LUMINANCE32I_EXT' else if self.val = UInt32($8D87) then Result := 'LUMINANCE_ALPHA32I_EXT' else if self.val = UInt32($8D88) then Result := 'RGBA16I' else if self.val = UInt32($8D88) then Result := 'RGBA16I_EXT' else if self.val = UInt32($8D89) then Result := 'RGB16I' else if self.val = UInt32($8D89) then Result := 'RGB16I_EXT' else if self.val = UInt32($8D8A) then Result := 'ALPHA16I_EXT' else if self.val = UInt32($8D8B) then Result := 'INTENSITY16I_EXT' else if self.val = UInt32($8D8C) then Result := 'LUMINANCE16I_EXT' else if self.val = UInt32($8D8D) then Result := 'LUMINANCE_ALPHA16I_EXT' else if self.val = UInt32($8D8E) then Result := 'RGBA8I' else if self.val = UInt32($8D8E) then Result := 'RGBA8I_EXT' else if self.val = UInt32($8D8F) then Result := 'RGB8I' else if self.val = UInt32($8D8F) then Result := 'RGB8I_EXT' else if self.val = UInt32($8D90) then Result := 'ALPHA8I_EXT' else if self.val = UInt32($8D91) then Result := 'INTENSITY8I_EXT' else if self.val = UInt32($8D92) then Result := 'LUMINANCE8I_EXT' else if self.val = UInt32($8D93) then Result := 'LUMINANCE_ALPHA8I_EXT' else if self.val = UInt32($8DAB) then Result := 'DEPTH_COMPONENT32F_NV' else if self.val = UInt32($8DAC) then Result := 'DEPTH32F_STENCIL8_NV' else if self.val = UInt32($8DBB) then Result := 'COMPRESSED_RED_RGTC1' else if self.val = UInt32($8DBB) then Result := 'COMPRESSED_RED_RGTC1_EXT' else if self.val = UInt32($8DBC) then Result := 'COMPRESSED_SIGNED_RED_RGTC1' else if self.val = UInt32($8DBC) then Result := 'COMPRESSED_SIGNED_RED_RGTC1_EXT' else if self.val = UInt32($8DBD) then Result := 'COMPRESSED_RED_GREEN_RGTC2_EXT' else if self.val = UInt32($8DBD) then Result := 'COMPRESSED_RG_RGTC2' else if self.val = UInt32($8DBE) then Result := 'COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT' else if self.val = UInt32($8DBE) then Result := 'COMPRESSED_SIGNED_RG_RGTC2' else if self.val = UInt32($8E8C) then Result := 'COMPRESSED_RGBA_BPTC_UNORM' else if self.val = UInt32($8E8C) then Result := 'COMPRESSED_RGBA_BPTC_UNORM_ARB' else if self.val = UInt32($8E8C) then Result := 'COMPRESSED_RGBA_BPTC_UNORM_EXT' else if self.val = UInt32($8E8D) then Result := 'COMPRESSED_SRGB_ALPHA_BPTC_UNORM' else if self.val = UInt32($8E8D) then Result := 'COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB' else if self.val = UInt32($8E8D) then Result := 'COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT' else if self.val = UInt32($8E8E) then Result := 'COMPRESSED_RGB_BPTC_SIGNED_FLOAT' else if self.val = UInt32($8E8E) then Result := 'COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB' else if self.val = UInt32($8E8E) then Result := 'COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT' else if self.val = UInt32($8E8F) then Result := 'COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT' else if self.val = UInt32($8E8F) then Result := 'COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB' else if self.val = UInt32($8E8F) then Result := 'COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT' else if self.val = UInt32($8F94) then Result := 'R8_SNORM' else if self.val = UInt32($8F95) then Result := 'RG8_SNORM' else if self.val = UInt32($8F96) then Result := 'RGB8_SNORM' else if self.val = UInt32($8F97) then Result := 'RGBA8_SNORM' else if self.val = UInt32($8F98) then Result := 'R16_SNORM' else if self.val = UInt32($8F98) then Result := 'R16_SNORM_EXT' else if self.val = UInt32($8F99) then Result := 'RG16_SNORM' else if self.val = UInt32($8F99) then Result := 'RG16_SNORM_EXT' else if self.val = UInt32($8F9A) then Result := 'RGB16_SNORM' else if self.val = UInt32($8F9A) then Result := 'RGB16_SNORM_EXT' else if self.val = UInt32($8F9B) then Result := 'RGBA16_SNORM' else if self.val = UInt32($8F9B) then Result := 'RGBA16_SNORM_EXT' else if self.val = UInt32($8FBD) then Result := 'SR8_EXT' else if self.val = UInt32($8FBE) then Result := 'SRG8_EXT' else if self.val = UInt32($906F) then Result := 'RGB10_A2UI' else if self.val = UInt32($9270) then Result := 'COMPRESSED_R11_EAC' else if self.val = UInt32($9270) then Result := 'COMPRESSED_R11_EAC_OES' else if self.val = UInt32($9271) then Result := 'COMPRESSED_SIGNED_R11_EAC' else if self.val = UInt32($9271) then Result := 'COMPRESSED_SIGNED_R11_EAC_OES' else if self.val = UInt32($9272) then Result := 'COMPRESSED_RG11_EAC' else if self.val = UInt32($9272) then Result := 'COMPRESSED_RG11_EAC_OES' else if self.val = UInt32($9273) then Result := 'COMPRESSED_SIGNED_RG11_EAC' else if self.val = UInt32($9273) then Result := 'COMPRESSED_SIGNED_RG11_EAC_OES' else if self.val = UInt32($9274) then Result := 'COMPRESSED_RGB8_ETC2' else if self.val = UInt32($9274) then Result := 'COMPRESSED_RGB8_ETC2_OES' else if self.val = UInt32($9275) then Result := 'COMPRESSED_SRGB8_ETC2' else if self.val = UInt32($9275) then Result := 'COMPRESSED_SRGB8_ETC2_OES' else if self.val = UInt32($9276) then Result := 'COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2' else if self.val = UInt32($9276) then Result := 'COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES' else if self.val = UInt32($9277) then Result := 'COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2' else if self.val = UInt32($9277) then Result := 'COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES' else if self.val = UInt32($9278) then Result := 'COMPRESSED_RGBA8_ETC2_EAC' else if self.val = UInt32($9278) then Result := 'COMPRESSED_RGBA8_ETC2_EAC_OES' else if self.val = UInt32($9279) then Result := 'COMPRESSED_SRGB8_ALPHA8_ETC2_EAC' else if self.val = UInt32($9279) then Result := 'COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_OES' else if self.val = UInt32($93B0) then Result := 'COMPRESSED_RGBA_ASTC_4x4' else if self.val = UInt32($93B0) then Result := 'COMPRESSED_RGBA_ASTC_4x4_KHR' else if self.val = UInt32($93B1) then Result := 'COMPRESSED_RGBA_ASTC_5x4' else if self.val = UInt32($93B1) then Result := 'COMPRESSED_RGBA_ASTC_5x4_KHR' else if self.val = UInt32($93B2) then Result := 'COMPRESSED_RGBA_ASTC_5x5' else if self.val = UInt32($93B2) then Result := 'COMPRESSED_RGBA_ASTC_5x5_KHR' else if self.val = UInt32($93B3) then Result := 'COMPRESSED_RGBA_ASTC_6x5' else if self.val = UInt32($93B3) then Result := 'COMPRESSED_RGBA_ASTC_6x5_KHR' else if self.val = UInt32($93B4) then Result := 'COMPRESSED_RGBA_ASTC_6x6' else if self.val = UInt32($93B4) then Result := 'COMPRESSED_RGBA_ASTC_6x6_KHR' else if self.val = UInt32($93B5) then Result := 'COMPRESSED_RGBA_ASTC_8x5' else if self.val = UInt32($93B5) then Result := 'COMPRESSED_RGBA_ASTC_8x5_KHR' else if self.val = UInt32($93B6) then Result := 'COMPRESSED_RGBA_ASTC_8x6' else if self.val = UInt32($93B6) then Result := 'COMPRESSED_RGBA_ASTC_8x6_KHR' else if self.val = UInt32($93B7) then Result := 'COMPRESSED_RGBA_ASTC_8x8' else if self.val = UInt32($93B7) then Result := 'COMPRESSED_RGBA_ASTC_8x8_KHR' else if self.val = UInt32($93B8) then Result := 'COMPRESSED_RGBA_ASTC_10x5' else if self.val = UInt32($93B8) then Result := 'COMPRESSED_RGBA_ASTC_10x5_KHR' else if self.val = UInt32($93B9) then Result := 'COMPRESSED_RGBA_ASTC_10x6' else if self.val = UInt32($93B9) then Result := 'COMPRESSED_RGBA_ASTC_10x6_KHR' else if self.val = UInt32($93BA) then Result := 'COMPRESSED_RGBA_ASTC_10x8' else if self.val = UInt32($93BA) then Result := 'COMPRESSED_RGBA_ASTC_10x8_KHR' else if self.val = UInt32($93BB) then Result := 'COMPRESSED_RGBA_ASTC_10x10' else if self.val = UInt32($93BB) then Result := 'COMPRESSED_RGBA_ASTC_10x10_KHR' else if self.val = UInt32($93BC) then Result := 'COMPRESSED_RGBA_ASTC_12x10' else if self.val = UInt32($93BC) then Result := 'COMPRESSED_RGBA_ASTC_12x10_KHR' else if self.val = UInt32($93BD) then Result := 'COMPRESSED_RGBA_ASTC_12x12' else if self.val = UInt32($93BD) then Result := 'COMPRESSED_RGBA_ASTC_12x12_KHR' else if self.val = UInt32($93C0) then Result := 'COMPRESSED_RGBA_ASTC_3x3x3_OES' else if self.val = UInt32($93C1) then Result := 'COMPRESSED_RGBA_ASTC_4x3x3_OES' else if self.val = UInt32($93C2) then Result := 'COMPRESSED_RGBA_ASTC_4x4x3_OES' else if self.val = UInt32($93C3) then Result := 'COMPRESSED_RGBA_ASTC_4x4x4_OES' else if self.val = UInt32($93C4) then Result := 'COMPRESSED_RGBA_ASTC_5x4x4_OES' else if self.val = UInt32($93C5) then Result := 'COMPRESSED_RGBA_ASTC_5x5x4_OES' else if self.val = UInt32($93C6) then Result := 'COMPRESSED_RGBA_ASTC_5x5x5_OES' else if self.val = UInt32($93C7) then Result := 'COMPRESSED_RGBA_ASTC_6x5x5_OES' else if self.val = UInt32($93C8) then Result := 'COMPRESSED_RGBA_ASTC_6x6x5_OES' else if self.val = UInt32($93C9) then Result := 'COMPRESSED_RGBA_ASTC_6x6x6_OES' else if self.val = UInt32($93D0) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_4x4' else if self.val = UInt32($93D0) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR' else if self.val = UInt32($93D1) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_5x4' else if self.val = UInt32($93D1) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR' else if self.val = UInt32($93D2) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_5x5' else if self.val = UInt32($93D2) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR' else if self.val = UInt32($93D3) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_6x5' else if self.val = UInt32($93D3) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR' else if self.val = UInt32($93D4) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_6x6' else if self.val = UInt32($93D4) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR' else if self.val = UInt32($93D5) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_8x5' else if self.val = UInt32($93D5) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR' else if self.val = UInt32($93D6) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_8x6' else if self.val = UInt32($93D6) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR' else if self.val = UInt32($93D7) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_8x8' else if self.val = UInt32($93D7) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR' else if self.val = UInt32($93D8) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x5' else if self.val = UInt32($93D8) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR' else if self.val = UInt32($93D9) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x6' else if self.val = UInt32($93D9) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR' else if self.val = UInt32($93DA) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x8' else if self.val = UInt32($93DA) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR' else if self.val = UInt32($93DB) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x10' else if self.val = UInt32($93DB) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR' else if self.val = UInt32($93DC) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_12x10' else if self.val = UInt32($93DC) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR' else if self.val = UInt32($93DD) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_12x12' else if self.val = UInt32($93DD) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR' else if self.val = UInt32($93E0) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES' else if self.val = UInt32($93E1) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES' else if self.val = UInt32($93E2) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES' else if self.val = UInt32($93E3) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES' else if self.val = UInt32($93E4) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES' else if self.val = UInt32($93E5) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES' else if self.val = UInt32($93E6) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES' else if self.val = UInt32($93E7) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES' else if self.val = UInt32($93E8) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES' else if self.val = UInt32($93E9) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES' else Result := $'InternalFormat[{self.val}]'; end; end; InternalFormatPName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SAMPLES: InternalFormatPName read new InternalFormatPName($80A9); public static property GENERATE_MIPMAP: InternalFormatPName read new InternalFormatPName($8191); public static property INTERNALFORMAT_SUPPORTED: InternalFormatPName read new InternalFormatPName($826F); public static property INTERNALFORMAT_PREFERRED: InternalFormatPName read new InternalFormatPName($8270); public static property INTERNALFORMAT_RED_SIZE: InternalFormatPName read new InternalFormatPName($8271); public static property INTERNALFORMAT_GREEN_SIZE: InternalFormatPName read new InternalFormatPName($8272); public static property INTERNALFORMAT_BLUE_SIZE: InternalFormatPName read new InternalFormatPName($8273); public static property INTERNALFORMAT_ALPHA_SIZE: InternalFormatPName read new InternalFormatPName($8274); public static property INTERNALFORMAT_DEPTH_SIZE: InternalFormatPName read new InternalFormatPName($8275); public static property INTERNALFORMAT_STENCIL_SIZE: InternalFormatPName read new InternalFormatPName($8276); public static property INTERNALFORMAT_SHARED_SIZE: InternalFormatPName read new InternalFormatPName($8277); public static property INTERNALFORMAT_RED_TYPE: InternalFormatPName read new InternalFormatPName($8278); public static property INTERNALFORMAT_GREEN_TYPE: InternalFormatPName read new InternalFormatPName($8279); public static property INTERNALFORMAT_BLUE_TYPE: InternalFormatPName read new InternalFormatPName($827A); public static property INTERNALFORMAT_ALPHA_TYPE: InternalFormatPName read new InternalFormatPName($827B); public static property INTERNALFORMAT_DEPTH_TYPE: InternalFormatPName read new InternalFormatPName($827C); public static property INTERNALFORMAT_STENCIL_TYPE: InternalFormatPName read new InternalFormatPName($827D); public static property MAX_WIDTH: InternalFormatPName read new InternalFormatPName($827E); public static property MAX_HEIGHT: InternalFormatPName read new InternalFormatPName($827F); public static property MAX_DEPTH: InternalFormatPName read new InternalFormatPName($8280); public static property MAX_LAYERS: InternalFormatPName read new InternalFormatPName($8281); public static property COLOR_COMPONENTS: InternalFormatPName read new InternalFormatPName($8283); public static property COLOR_RENDERABLE: InternalFormatPName read new InternalFormatPName($8286); public static property DEPTH_RENDERABLE: InternalFormatPName read new InternalFormatPName($8287); public static property STENCIL_RENDERABLE: InternalFormatPName read new InternalFormatPName($8288); public static property FRAMEBUFFER_RENDERABLE: InternalFormatPName read new InternalFormatPName($8289); public static property FRAMEBUFFER_RENDERABLE_LAYERED: InternalFormatPName read new InternalFormatPName($828A); public static property FRAMEBUFFER_BLEND: InternalFormatPName read new InternalFormatPName($828B); public static property READ_PIXELS: InternalFormatPName read new InternalFormatPName($828C); public static property READ_PIXELS_FORMAT: InternalFormatPName read new InternalFormatPName($828D); public static property READ_PIXELS_TYPE: InternalFormatPName read new InternalFormatPName($828E); public static property TEXTURE_IMAGE_FORMAT: InternalFormatPName read new InternalFormatPName($828F); public static property TEXTURE_IMAGE_TYPE: InternalFormatPName read new InternalFormatPName($8290); public static property GET__TEXTURE_IMAGE_FORMAT: InternalFormatPName read new InternalFormatPName($8291); public static property GET__TEXTURE_IMAGE_TYPE: InternalFormatPName read new InternalFormatPName($8292); public static property MIPMAP: InternalFormatPName read new InternalFormatPName($8293); public static property AUTO_GENERATE_MIPMAP: InternalFormatPName read new InternalFormatPName($8295); public static property COLOR_ENCODING: InternalFormatPName read new InternalFormatPName($8296); public static property SRGB_READ: InternalFormatPName read new InternalFormatPName($8297); public static property SRGB_WRITE: InternalFormatPName read new InternalFormatPName($8298); public static property FILTER: InternalFormatPName read new InternalFormatPName($829A); public static property VERTEX_TEXTURE: InternalFormatPName read new InternalFormatPName($829B); public static property TESS_CONTROL_TEXTURE: InternalFormatPName read new InternalFormatPName($829C); public static property TESS_EVALUATION_TEXTURE: InternalFormatPName read new InternalFormatPName($829D); public static property GEOMETRY_TEXTURE: InternalFormatPName read new InternalFormatPName($829E); public static property FRAGMENT_TEXTURE: InternalFormatPName read new InternalFormatPName($829F); public static property COMPUTE_TEXTURE: InternalFormatPName read new InternalFormatPName($82A0); public static property TEXTURE_SHADOW: InternalFormatPName read new InternalFormatPName($82A1); public static property TEXTURE_GATHER: InternalFormatPName read new InternalFormatPName($82A2); public static property TEXTURE_GATHER_SHADOW: InternalFormatPName read new InternalFormatPName($82A3); public static property SHADER_IMAGE_LOAD: InternalFormatPName read new InternalFormatPName($82A4); public static property SHADER_IMAGE_STORE: InternalFormatPName read new InternalFormatPName($82A5); public static property SHADER_IMAGE_ATOMIC: InternalFormatPName read new InternalFormatPName($82A6); public static property IMAGE_TEXEL_SIZE: InternalFormatPName read new InternalFormatPName($82A7); public static property IMAGE_COMPATIBILITY_CLASS: InternalFormatPName read new InternalFormatPName($82A8); public static property IMAGE_PIXEL_FORMAT: InternalFormatPName read new InternalFormatPName($82A9); public static property IMAGE_PIXEL_TYPE: InternalFormatPName read new InternalFormatPName($82AA); public static property SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST: InternalFormatPName read new InternalFormatPName($82AC); public static property SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST: InternalFormatPName read new InternalFormatPName($82AD); public static property SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE: InternalFormatPName read new InternalFormatPName($82AE); public static property SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE: InternalFormatPName read new InternalFormatPName($82AF); public static property TEXTURE_COMPRESSED_BLOCK_WIDTH: InternalFormatPName read new InternalFormatPName($82B1); public static property TEXTURE_COMPRESSED_BLOCK_HEIGHT: InternalFormatPName read new InternalFormatPName($82B2); public static property TEXTURE_COMPRESSED_BLOCK_SIZE: InternalFormatPName read new InternalFormatPName($82B3); public static property CLEAR_BUFFER: InternalFormatPName read new InternalFormatPName($82B4); public static property TEXTURE_VIEW: InternalFormatPName read new InternalFormatPName($82B5); public static property VIEW_COMPATIBILITY_CLASS: InternalFormatPName read new InternalFormatPName($82B6); public static property TEXTURE_COMPRESSED: InternalFormatPName read new InternalFormatPName($86A1); public static property NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT: InternalFormatPName read new InternalFormatPName($8F6E); public static property IMAGE_FORMAT_COMPATIBILITY_TYPE: InternalFormatPName read new InternalFormatPName($90C7); public static property CLEAR_TEXTURE: InternalFormatPName read new InternalFormatPName($9365); public static property NUM_SAMPLE_COUNTS: InternalFormatPName read new InternalFormatPName($9380); public function ToString: string; override; begin if self.val = UInt32($80A9) then Result := 'SAMPLES' else if self.val = UInt32($8191) then Result := 'GENERATE_MIPMAP' else if self.val = UInt32($826F) then Result := 'INTERNALFORMAT_SUPPORTED' else if self.val = UInt32($8270) then Result := 'INTERNALFORMAT_PREFERRED' else if self.val = UInt32($8271) then Result := 'INTERNALFORMAT_RED_SIZE' else if self.val = UInt32($8272) then Result := 'INTERNALFORMAT_GREEN_SIZE' else if self.val = UInt32($8273) then Result := 'INTERNALFORMAT_BLUE_SIZE' else if self.val = UInt32($8274) then Result := 'INTERNALFORMAT_ALPHA_SIZE' else if self.val = UInt32($8275) then Result := 'INTERNALFORMAT_DEPTH_SIZE' else if self.val = UInt32($8276) then Result := 'INTERNALFORMAT_STENCIL_SIZE' else if self.val = UInt32($8277) then Result := 'INTERNALFORMAT_SHARED_SIZE' else if self.val = UInt32($8278) then Result := 'INTERNALFORMAT_RED_TYPE' else if self.val = UInt32($8279) then Result := 'INTERNALFORMAT_GREEN_TYPE' else if self.val = UInt32($827A) then Result := 'INTERNALFORMAT_BLUE_TYPE' else if self.val = UInt32($827B) then Result := 'INTERNALFORMAT_ALPHA_TYPE' else if self.val = UInt32($827C) then Result := 'INTERNALFORMAT_DEPTH_TYPE' else if self.val = UInt32($827D) then Result := 'INTERNALFORMAT_STENCIL_TYPE' else if self.val = UInt32($827E) then Result := 'MAX_WIDTH' else if self.val = UInt32($827F) then Result := 'MAX_HEIGHT' else if self.val = UInt32($8280) then Result := 'MAX_DEPTH' else if self.val = UInt32($8281) then Result := 'MAX_LAYERS' else if self.val = UInt32($8283) then Result := 'COLOR_COMPONENTS' else if self.val = UInt32($8286) then Result := 'COLOR_RENDERABLE' else if self.val = UInt32($8287) then Result := 'DEPTH_RENDERABLE' else if self.val = UInt32($8288) then Result := 'STENCIL_RENDERABLE' else if self.val = UInt32($8289) then Result := 'FRAMEBUFFER_RENDERABLE' else if self.val = UInt32($828A) then Result := 'FRAMEBUFFER_RENDERABLE_LAYERED' else if self.val = UInt32($828B) then Result := 'FRAMEBUFFER_BLEND' else if self.val = UInt32($828C) then Result := 'READ_PIXELS' else if self.val = UInt32($828D) then Result := 'READ_PIXELS_FORMAT' else if self.val = UInt32($828E) then Result := 'READ_PIXELS_TYPE' else if self.val = UInt32($828F) then Result := 'TEXTURE_IMAGE_FORMAT' else if self.val = UInt32($8290) then Result := 'TEXTURE_IMAGE_TYPE' else if self.val = UInt32($8291) then Result := 'GET__TEXTURE_IMAGE_FORMAT' else if self.val = UInt32($8292) then Result := 'GET__TEXTURE_IMAGE_TYPE' else if self.val = UInt32($8293) then Result := 'MIPMAP' else if self.val = UInt32($8295) then Result := 'AUTO_GENERATE_MIPMAP' else if self.val = UInt32($8296) then Result := 'COLOR_ENCODING' else if self.val = UInt32($8297) then Result := 'SRGB_READ' else if self.val = UInt32($8298) then Result := 'SRGB_WRITE' else if self.val = UInt32($829A) then Result := 'FILTER' else if self.val = UInt32($829B) then Result := 'VERTEX_TEXTURE' else if self.val = UInt32($829C) then Result := 'TESS_CONTROL_TEXTURE' else if self.val = UInt32($829D) then Result := 'TESS_EVALUATION_TEXTURE' else if self.val = UInt32($829E) then Result := 'GEOMETRY_TEXTURE' else if self.val = UInt32($829F) then Result := 'FRAGMENT_TEXTURE' else if self.val = UInt32($82A0) then Result := 'COMPUTE_TEXTURE' else if self.val = UInt32($82A1) then Result := 'TEXTURE_SHADOW' else if self.val = UInt32($82A2) then Result := 'TEXTURE_GATHER' else if self.val = UInt32($82A3) then Result := 'TEXTURE_GATHER_SHADOW' else if self.val = UInt32($82A4) then Result := 'SHADER_IMAGE_LOAD' else if self.val = UInt32($82A5) then Result := 'SHADER_IMAGE_STORE' else if self.val = UInt32($82A6) then Result := 'SHADER_IMAGE_ATOMIC' else if self.val = UInt32($82A7) then Result := 'IMAGE_TEXEL_SIZE' else if self.val = UInt32($82A8) then Result := 'IMAGE_COMPATIBILITY_CLASS' else if self.val = UInt32($82A9) then Result := 'IMAGE_PIXEL_FORMAT' else if self.val = UInt32($82AA) then Result := 'IMAGE_PIXEL_TYPE' else if self.val = UInt32($82AC) then Result := 'SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST' else if self.val = UInt32($82AD) then Result := 'SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST' else if self.val = UInt32($82AE) then Result := 'SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE' else if self.val = UInt32($82AF) then Result := 'SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE' else if self.val = UInt32($82B1) then Result := 'TEXTURE_COMPRESSED_BLOCK_WIDTH' else if self.val = UInt32($82B2) then Result := 'TEXTURE_COMPRESSED_BLOCK_HEIGHT' else if self.val = UInt32($82B3) then Result := 'TEXTURE_COMPRESSED_BLOCK_SIZE' else if self.val = UInt32($82B4) then Result := 'CLEAR_BUFFER' else if self.val = UInt32($82B5) then Result := 'TEXTURE_VIEW' else if self.val = UInt32($82B6) then Result := 'VIEW_COMPATIBILITY_CLASS' else if self.val = UInt32($86A1) then Result := 'TEXTURE_COMPRESSED' else if self.val = UInt32($8F6E) then Result := 'NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT' else if self.val = UInt32($90C7) then Result := 'IMAGE_FORMAT_COMPATIBILITY_TYPE' else if self.val = UInt32($9365) then Result := 'CLEAR_TEXTURE' else if self.val = UInt32($9380) then Result := 'NUM_SAMPLE_COUNTS' else Result := $'InternalFormatPName[{self.val}]'; end; end; InvalidateFramebufferAttachment = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property COLOR: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($1800); public static property DEPTH: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($1801); public static property STENCIL: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($1802); public static property DEPTH_STENCIL_ATTACHMENT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($821A); public static property COLOR_ATTACHMENT0: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE0); public static property COLOR_ATTACHMENT0_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE0); public static property COLOR_ATTACHMENT0_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE0); public static property COLOR_ATTACHMENT0_OES: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE0); public static property COLOR_ATTACHMENT1: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE1); public static property COLOR_ATTACHMENT1_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE1); public static property COLOR_ATTACHMENT1_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE1); public static property COLOR_ATTACHMENT2: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE2); public static property COLOR_ATTACHMENT2_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE2); public static property COLOR_ATTACHMENT2_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE2); public static property COLOR_ATTACHMENT3: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE3); public static property COLOR_ATTACHMENT3_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE3); public static property COLOR_ATTACHMENT3_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE3); public static property COLOR_ATTACHMENT4: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE4); public static property COLOR_ATTACHMENT4_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE4); public static property COLOR_ATTACHMENT4_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE4); public static property COLOR_ATTACHMENT5: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE5); public static property COLOR_ATTACHMENT5_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE5); public static property COLOR_ATTACHMENT5_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE5); public static property COLOR_ATTACHMENT6: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE6); public static property COLOR_ATTACHMENT6_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE6); public static property COLOR_ATTACHMENT6_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE6); public static property COLOR_ATTACHMENT7: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE7); public static property COLOR_ATTACHMENT7_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE7); public static property COLOR_ATTACHMENT7_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE7); public static property COLOR_ATTACHMENT8: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE8); public static property COLOR_ATTACHMENT8_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE8); public static property COLOR_ATTACHMENT8_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE8); public static property COLOR_ATTACHMENT9: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE9); public static property COLOR_ATTACHMENT9_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE9); public static property COLOR_ATTACHMENT9_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CE9); public static property COLOR_ATTACHMENT10: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEA); public static property COLOR_ATTACHMENT10_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEA); public static property COLOR_ATTACHMENT10_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEA); public static property COLOR_ATTACHMENT11: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEB); public static property COLOR_ATTACHMENT11_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEB); public static property COLOR_ATTACHMENT11_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEB); public static property COLOR_ATTACHMENT12: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEC); public static property COLOR_ATTACHMENT12_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEC); public static property COLOR_ATTACHMENT12_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEC); public static property COLOR_ATTACHMENT13: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CED); public static property COLOR_ATTACHMENT13_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CED); public static property COLOR_ATTACHMENT13_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CED); public static property COLOR_ATTACHMENT14: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEE); public static property COLOR_ATTACHMENT14_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEE); public static property COLOR_ATTACHMENT14_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEE); public static property COLOR_ATTACHMENT15: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEF); public static property COLOR_ATTACHMENT15_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEF); public static property COLOR_ATTACHMENT15_NV: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CEF); public static property COLOR_ATTACHMENT16: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CF0); public static property COLOR_ATTACHMENT17: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CF1); public static property COLOR_ATTACHMENT18: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CF2); public static property COLOR_ATTACHMENT19: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CF3); public static property COLOR_ATTACHMENT20: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CF4); public static property COLOR_ATTACHMENT21: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CF5); public static property COLOR_ATTACHMENT22: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CF6); public static property COLOR_ATTACHMENT23: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CF7); public static property COLOR_ATTACHMENT24: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CF8); public static property COLOR_ATTACHMENT25: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CF9); public static property COLOR_ATTACHMENT26: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CFA); public static property COLOR_ATTACHMENT27: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CFB); public static property COLOR_ATTACHMENT28: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CFC); public static property COLOR_ATTACHMENT29: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CFD); public static property COLOR_ATTACHMENT30: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CFE); public static property COLOR_ATTACHMENT31: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8CFF); public static property DEPTH_ATTACHMENT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8D00); public static property DEPTH_ATTACHMENT_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8D00); public static property DEPTH_ATTACHMENT_OES: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8D00); public static property STENCIL_ATTACHMENT_EXT: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8D20); public static property STENCIL_ATTACHMENT_OES: InvalidateFramebufferAttachment read new InvalidateFramebufferAttachment($8D20); public function ToString: string; override; begin if self.val = UInt32($1800) then Result := 'COLOR' else if self.val = UInt32($1801) then Result := 'DEPTH' else if self.val = UInt32($1802) then Result := 'STENCIL' else if self.val = UInt32($821A) then Result := 'DEPTH_STENCIL_ATTACHMENT' else if self.val = UInt32($8CE0) then Result := 'COLOR_ATTACHMENT0' else if self.val = UInt32($8CE0) then Result := 'COLOR_ATTACHMENT0_EXT' else if self.val = UInt32($8CE0) then Result := 'COLOR_ATTACHMENT0_NV' else if self.val = UInt32($8CE0) then Result := 'COLOR_ATTACHMENT0_OES' else if self.val = UInt32($8CE1) then Result := 'COLOR_ATTACHMENT1' else if self.val = UInt32($8CE1) then Result := 'COLOR_ATTACHMENT1_EXT' else if self.val = UInt32($8CE1) then Result := 'COLOR_ATTACHMENT1_NV' else if self.val = UInt32($8CE2) then Result := 'COLOR_ATTACHMENT2' else if self.val = UInt32($8CE2) then Result := 'COLOR_ATTACHMENT2_EXT' else if self.val = UInt32($8CE2) then Result := 'COLOR_ATTACHMENT2_NV' else if self.val = UInt32($8CE3) then Result := 'COLOR_ATTACHMENT3' else if self.val = UInt32($8CE3) then Result := 'COLOR_ATTACHMENT3_EXT' else if self.val = UInt32($8CE3) then Result := 'COLOR_ATTACHMENT3_NV' else if self.val = UInt32($8CE4) then Result := 'COLOR_ATTACHMENT4' else if self.val = UInt32($8CE4) then Result := 'COLOR_ATTACHMENT4_EXT' else if self.val = UInt32($8CE4) then Result := 'COLOR_ATTACHMENT4_NV' else if self.val = UInt32($8CE5) then Result := 'COLOR_ATTACHMENT5' else if self.val = UInt32($8CE5) then Result := 'COLOR_ATTACHMENT5_EXT' else if self.val = UInt32($8CE5) then Result := 'COLOR_ATTACHMENT5_NV' else if self.val = UInt32($8CE6) then Result := 'COLOR_ATTACHMENT6' else if self.val = UInt32($8CE6) then Result := 'COLOR_ATTACHMENT6_EXT' else if self.val = UInt32($8CE6) then Result := 'COLOR_ATTACHMENT6_NV' else if self.val = UInt32($8CE7) then Result := 'COLOR_ATTACHMENT7' else if self.val = UInt32($8CE7) then Result := 'COLOR_ATTACHMENT7_EXT' else if self.val = UInt32($8CE7) then Result := 'COLOR_ATTACHMENT7_NV' else if self.val = UInt32($8CE8) then Result := 'COLOR_ATTACHMENT8' else if self.val = UInt32($8CE8) then Result := 'COLOR_ATTACHMENT8_EXT' else if self.val = UInt32($8CE8) then Result := 'COLOR_ATTACHMENT8_NV' else if self.val = UInt32($8CE9) then Result := 'COLOR_ATTACHMENT9' else if self.val = UInt32($8CE9) then Result := 'COLOR_ATTACHMENT9_EXT' else if self.val = UInt32($8CE9) then Result := 'COLOR_ATTACHMENT9_NV' else if self.val = UInt32($8CEA) then Result := 'COLOR_ATTACHMENT10' else if self.val = UInt32($8CEA) then Result := 'COLOR_ATTACHMENT10_EXT' else if self.val = UInt32($8CEA) then Result := 'COLOR_ATTACHMENT10_NV' else if self.val = UInt32($8CEB) then Result := 'COLOR_ATTACHMENT11' else if self.val = UInt32($8CEB) then Result := 'COLOR_ATTACHMENT11_EXT' else if self.val = UInt32($8CEB) then Result := 'COLOR_ATTACHMENT11_NV' else if self.val = UInt32($8CEC) then Result := 'COLOR_ATTACHMENT12' else if self.val = UInt32($8CEC) then Result := 'COLOR_ATTACHMENT12_EXT' else if self.val = UInt32($8CEC) then Result := 'COLOR_ATTACHMENT12_NV' else if self.val = UInt32($8CED) then Result := 'COLOR_ATTACHMENT13' else if self.val = UInt32($8CED) then Result := 'COLOR_ATTACHMENT13_EXT' else if self.val = UInt32($8CED) then Result := 'COLOR_ATTACHMENT13_NV' else if self.val = UInt32($8CEE) then Result := 'COLOR_ATTACHMENT14' else if self.val = UInt32($8CEE) then Result := 'COLOR_ATTACHMENT14_EXT' else if self.val = UInt32($8CEE) then Result := 'COLOR_ATTACHMENT14_NV' else if self.val = UInt32($8CEF) then Result := 'COLOR_ATTACHMENT15' else if self.val = UInt32($8CEF) then Result := 'COLOR_ATTACHMENT15_EXT' else if self.val = UInt32($8CEF) then Result := 'COLOR_ATTACHMENT15_NV' else if self.val = UInt32($8CF0) then Result := 'COLOR_ATTACHMENT16' else if self.val = UInt32($8CF1) then Result := 'COLOR_ATTACHMENT17' else if self.val = UInt32($8CF2) then Result := 'COLOR_ATTACHMENT18' else if self.val = UInt32($8CF3) then Result := 'COLOR_ATTACHMENT19' else if self.val = UInt32($8CF4) then Result := 'COLOR_ATTACHMENT20' else if self.val = UInt32($8CF5) then Result := 'COLOR_ATTACHMENT21' else if self.val = UInt32($8CF6) then Result := 'COLOR_ATTACHMENT22' else if self.val = UInt32($8CF7) then Result := 'COLOR_ATTACHMENT23' else if self.val = UInt32($8CF8) then Result := 'COLOR_ATTACHMENT24' else if self.val = UInt32($8CF9) then Result := 'COLOR_ATTACHMENT25' else if self.val = UInt32($8CFA) then Result := 'COLOR_ATTACHMENT26' else if self.val = UInt32($8CFB) then Result := 'COLOR_ATTACHMENT27' else if self.val = UInt32($8CFC) then Result := 'COLOR_ATTACHMENT28' else if self.val = UInt32($8CFD) then Result := 'COLOR_ATTACHMENT29' else if self.val = UInt32($8CFE) then Result := 'COLOR_ATTACHMENT30' else if self.val = UInt32($8CFF) then Result := 'COLOR_ATTACHMENT31' else if self.val = UInt32($8D00) then Result := 'DEPTH_ATTACHMENT' else if self.val = UInt32($8D00) then Result := 'DEPTH_ATTACHMENT_EXT' else if self.val = UInt32($8D00) then Result := 'DEPTH_ATTACHMENT_OES' else if self.val = UInt32($8D20) then Result := 'STENCIL_ATTACHMENT_EXT' else if self.val = UInt32($8D20) then Result := 'STENCIL_ATTACHMENT_OES' else Result := $'InvalidateFramebufferAttachment[{self.val}]'; end; end; LightModelParameter = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property LIGHT_MODEL_LOCAL_VIEWER: LightModelParameter read new LightModelParameter($0B51); public static property LIGHT_MODEL_TWO_SIDE: LightModelParameter read new LightModelParameter($0B52); public static property LIGHT_MODEL_AMBIENT: LightModelParameter read new LightModelParameter($0B53); public static property LIGHT_MODEL_COLOR_CONTROL: LightModelParameter read new LightModelParameter($81F8); public static property LIGHT_MODEL_COLOR_CONTROL_EXT: LightModelParameter read new LightModelParameter($81F8); public function ToString: string; override; begin if self.val = UInt32($0B51) then Result := 'LIGHT_MODEL_LOCAL_VIEWER' else if self.val = UInt32($0B52) then Result := 'LIGHT_MODEL_TWO_SIDE' else if self.val = UInt32($0B53) then Result := 'LIGHT_MODEL_AMBIENT' else if self.val = UInt32($81F8) then Result := 'LIGHT_MODEL_COLOR_CONTROL' else if self.val = UInt32($81F8) then Result := 'LIGHT_MODEL_COLOR_CONTROL_EXT' else Result := $'LightModelParameter[{self.val}]'; end; end; LightName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property LIGHT0: LightName read new LightName($4000); public static property LIGHT1: LightName read new LightName($4001); public static property LIGHT2: LightName read new LightName($4002); public static property LIGHT3: LightName read new LightName($4003); public static property LIGHT4: LightName read new LightName($4004); public static property LIGHT5: LightName read new LightName($4005); public static property LIGHT6: LightName read new LightName($4006); public static property LIGHT7: LightName read new LightName($4007); public static property FRAGMENT_LIGHT0_SGIX: LightName read new LightName($840C); public static property FRAGMENT_LIGHT1_SGIX: LightName read new LightName($840D); public static property FRAGMENT_LIGHT2_SGIX: LightName read new LightName($840E); public static property FRAGMENT_LIGHT3_SGIX: LightName read new LightName($840F); public static property FRAGMENT_LIGHT4_SGIX: LightName read new LightName($8410); public static property FRAGMENT_LIGHT5_SGIX: LightName read new LightName($8411); public static property FRAGMENT_LIGHT6_SGIX: LightName read new LightName($8412); public static property FRAGMENT_LIGHT7_SGIX: LightName read new LightName($8413); public function ToString: string; override; begin if self.val = UInt32($4000) then Result := 'LIGHT0' else if self.val = UInt32($4001) then Result := 'LIGHT1' else if self.val = UInt32($4002) then Result := 'LIGHT2' else if self.val = UInt32($4003) then Result := 'LIGHT3' else if self.val = UInt32($4004) then Result := 'LIGHT4' else if self.val = UInt32($4005) then Result := 'LIGHT5' else if self.val = UInt32($4006) then Result := 'LIGHT6' else if self.val = UInt32($4007) then Result := 'LIGHT7' else if self.val = UInt32($840C) then Result := 'FRAGMENT_LIGHT0_SGIX' else if self.val = UInt32($840D) then Result := 'FRAGMENT_LIGHT1_SGIX' else if self.val = UInt32($840E) then Result := 'FRAGMENT_LIGHT2_SGIX' else if self.val = UInt32($840F) then Result := 'FRAGMENT_LIGHT3_SGIX' else if self.val = UInt32($8410) then Result := 'FRAGMENT_LIGHT4_SGIX' else if self.val = UInt32($8411) then Result := 'FRAGMENT_LIGHT5_SGIX' else if self.val = UInt32($8412) then Result := 'FRAGMENT_LIGHT6_SGIX' else if self.val = UInt32($8413) then Result := 'FRAGMENT_LIGHT7_SGIX' else Result := $'LightName[{self.val}]'; end; end; LightParameter = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property POSITION: LightParameter read new LightParameter($1203); public static property SPOT_DIRECTION: LightParameter read new LightParameter($1204); public static property SPOT_EXPONENT: LightParameter read new LightParameter($1205); public static property SPOT_CUTOFF: LightParameter read new LightParameter($1206); public static property CONSTANT_ATTENUATION: LightParameter read new LightParameter($1207); public static property LINEAR_ATTENUATION: LightParameter read new LightParameter($1208); public static property QUADRATIC_ATTENUATION: LightParameter read new LightParameter($1209); public function ToString: string; override; begin if self.val = UInt32($1203) then Result := 'POSITION' else if self.val = UInt32($1204) then Result := 'SPOT_DIRECTION' else if self.val = UInt32($1205) then Result := 'SPOT_EXPONENT' else if self.val = UInt32($1206) then Result := 'SPOT_CUTOFF' else if self.val = UInt32($1207) then Result := 'CONSTANT_ATTENUATION' else if self.val = UInt32($1208) then Result := 'LINEAR_ATTENUATION' else if self.val = UInt32($1209) then Result := 'QUADRATIC_ATTENUATION' else Result := $'LightParameter[{self.val}]'; end; end; ListMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property COMPILE: ListMode read new ListMode($1300); public static property COMPILE_AND_EXECUTE: ListMode read new ListMode($1301); public function ToString: string; override; begin if self.val = UInt32($1300) then Result := 'COMPILE' else if self.val = UInt32($1301) then Result := 'COMPILE_AND_EXECUTE' else Result := $'ListMode[{self.val}]'; end; end; ListNameType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BYTE: ListNameType read new ListNameType($1400); public static property UNSIGNED_BYTE: ListNameType read new ListNameType($1401); public static property SHORT: ListNameType read new ListNameType($1402); public static property UNSIGNED_SHORT: ListNameType read new ListNameType($1403); public static property INT: ListNameType read new ListNameType($1404); public static property UNSIGNED_INT: ListNameType read new ListNameType($1405); public static property FLOAT: ListNameType read new ListNameType($1406); public static property GL_2_BYTES: ListNameType read new ListNameType($1407); public static property GL_3_BYTES: ListNameType read new ListNameType($1408); public static property GL_4_BYTES: ListNameType read new ListNameType($1409); public function ToString: string; override; begin if self.val = UInt32($1400) then Result := 'BYTE' else if self.val = UInt32($1401) then Result := 'UNSIGNED_BYTE' else if self.val = UInt32($1402) then Result := 'SHORT' else if self.val = UInt32($1403) then Result := 'UNSIGNED_SHORT' else if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($1407) then Result := 'GL_2_BYTES' else if self.val = UInt32($1408) then Result := 'GL_3_BYTES' else if self.val = UInt32($1409) then Result := 'GL_4_BYTES' else Result := $'ListNameType[{self.val}]'; end; end; ListParameterName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property LIST_PRIORITY_SGIX: ListParameterName read new ListParameterName($8182); public function ToString: string; override; begin if self.val = UInt32($8182) then Result := 'LIST_PRIORITY_SGIX' else Result := $'ListParameterName[{self.val}]'; end; end; LogicOp = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CLEAR: LogicOp read new LogicOp($1500); public static property &AND: LogicOp read new LogicOp($1501); public static property AND_REVERSE: LogicOp read new LogicOp($1502); public static property COPY: LogicOp read new LogicOp($1503); public static property AND_INVERTED: LogicOp read new LogicOp($1504); public static property NOOP: LogicOp read new LogicOp($1505); public static property &XOR: LogicOp read new LogicOp($1506); public static property &OR: LogicOp read new LogicOp($1507); public static property NOR: LogicOp read new LogicOp($1508); public static property EQUIV: LogicOp read new LogicOp($1509); public static property INVERT: LogicOp read new LogicOp($150A); public static property OR_REVERSE: LogicOp read new LogicOp($150B); public static property COPY_INVERTED: LogicOp read new LogicOp($150C); public static property OR_INVERTED: LogicOp read new LogicOp($150D); public static property NAND: LogicOp read new LogicOp($150E); public static property &SET: LogicOp read new LogicOp($150F); public function ToString: string; override; begin if self.val = UInt32($1500) then Result := 'CLEAR' else if self.val = UInt32($1501) then Result := 'AND' else if self.val = UInt32($1502) then Result := 'AND_REVERSE' else if self.val = UInt32($1503) then Result := 'COPY' else if self.val = UInt32($1504) then Result := 'AND_INVERTED' else if self.val = UInt32($1505) then Result := 'NOOP' else if self.val = UInt32($1506) then Result := 'XOR' else if self.val = UInt32($1507) then Result := 'OR' else if self.val = UInt32($1508) then Result := 'NOR' else if self.val = UInt32($1509) then Result := 'EQUIV' else if self.val = UInt32($150A) then Result := 'INVERT' else if self.val = UInt32($150B) then Result := 'OR_REVERSE' else if self.val = UInt32($150C) then Result := 'COPY_INVERTED' else if self.val = UInt32($150D) then Result := 'OR_INVERTED' else if self.val = UInt32($150E) then Result := 'NAND' else if self.val = UInt32($150F) then Result := 'SET' else Result := $'LogicOp[{self.val}]'; end; end; MapBufferAccessMask = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property MAP_READ_BIT: MapBufferAccessMask read new MapBufferAccessMask($0001); public static property MAP_READ_BIT_EXT: MapBufferAccessMask read new MapBufferAccessMask($0001); public static property MAP_WRITE_BIT: MapBufferAccessMask read new MapBufferAccessMask($0002); public static property MAP_WRITE_BIT_EXT: MapBufferAccessMask read new MapBufferAccessMask($0002); public static property MAP_INVALIDATE_RANGE_BIT: MapBufferAccessMask read new MapBufferAccessMask($0004); public static property MAP_INVALIDATE_RANGE_BIT_EXT: MapBufferAccessMask read new MapBufferAccessMask($0004); public static property MAP_INVALIDATE_BUFFER_BIT: MapBufferAccessMask read new MapBufferAccessMask($0008); public static property MAP_INVALIDATE_BUFFER_BIT_EXT: MapBufferAccessMask read new MapBufferAccessMask($0008); public static property MAP_FLUSH_EXPLICIT_BIT: MapBufferAccessMask read new MapBufferAccessMask($0010); public static property MAP_FLUSH_EXPLICIT_BIT_EXT: MapBufferAccessMask read new MapBufferAccessMask($0010); public static property MAP_UNSYNCHRONIZED_BIT: MapBufferAccessMask read new MapBufferAccessMask($0020); public static property MAP_UNSYNCHRONIZED_BIT_EXT: MapBufferAccessMask read new MapBufferAccessMask($0020); public static property MAP_PERSISTENT_BIT: MapBufferAccessMask read new MapBufferAccessMask($0040); public static property MAP_PERSISTENT_BIT_EXT: MapBufferAccessMask read new MapBufferAccessMask($0040); public static property MAP_COHERENT_BIT: MapBufferAccessMask read new MapBufferAccessMask($0080); public static property MAP_COHERENT_BIT_EXT: MapBufferAccessMask read new MapBufferAccessMask($0080); public static function operator+(f1,f2: MapBufferAccessMask) := new MapBufferAccessMask(f1.val or f2.val); public static function operator or(f1,f2: MapBufferAccessMask) := f1+f2; public property HAS_FLAG_MAP_READ_BIT: boolean read self.val and $0001 <> 0; public property HAS_FLAG_MAP_READ_BIT_EXT: boolean read self.val and $0001 <> 0; public property HAS_FLAG_MAP_WRITE_BIT: boolean read self.val and $0002 <> 0; public property HAS_FLAG_MAP_WRITE_BIT_EXT: boolean read self.val and $0002 <> 0; public property HAS_FLAG_MAP_INVALIDATE_RANGE_BIT: boolean read self.val and $0004 <> 0; public property HAS_FLAG_MAP_INVALIDATE_RANGE_BIT_EXT: boolean read self.val and $0004 <> 0; public property HAS_FLAG_MAP_INVALIDATE_BUFFER_BIT: boolean read self.val and $0008 <> 0; public property HAS_FLAG_MAP_INVALIDATE_BUFFER_BIT_EXT: boolean read self.val and $0008 <> 0; public property HAS_FLAG_MAP_FLUSH_EXPLICIT_BIT: boolean read self.val and $0010 <> 0; public property HAS_FLAG_MAP_FLUSH_EXPLICIT_BIT_EXT: boolean read self.val and $0010 <> 0; public property HAS_FLAG_MAP_UNSYNCHRONIZED_BIT: boolean read self.val and $0020 <> 0; public property HAS_FLAG_MAP_UNSYNCHRONIZED_BIT_EXT: boolean read self.val and $0020 <> 0; public property HAS_FLAG_MAP_PERSISTENT_BIT: boolean read self.val and $0040 <> 0; public property HAS_FLAG_MAP_PERSISTENT_BIT_EXT: boolean read self.val and $0040 <> 0; public property HAS_FLAG_MAP_COHERENT_BIT: boolean read self.val and $0080 <> 0; public property HAS_FLAG_MAP_COHERENT_BIT_EXT: boolean read self.val and $0080 <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0001) = UInt32($0001) then res += 'MAP_READ_BIT+'; if self.val and UInt32($0001) = UInt32($0001) then res += 'MAP_READ_BIT_EXT+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'MAP_WRITE_BIT+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'MAP_WRITE_BIT_EXT+'; if self.val and UInt32($0004) = UInt32($0004) then res += 'MAP_INVALIDATE_RANGE_BIT+'; if self.val and UInt32($0004) = UInt32($0004) then res += 'MAP_INVALIDATE_RANGE_BIT_EXT+'; if self.val and UInt32($0008) = UInt32($0008) then res += 'MAP_INVALIDATE_BUFFER_BIT+'; if self.val and UInt32($0008) = UInt32($0008) then res += 'MAP_INVALIDATE_BUFFER_BIT_EXT+'; if self.val and UInt32($0010) = UInt32($0010) then res += 'MAP_FLUSH_EXPLICIT_BIT+'; if self.val and UInt32($0010) = UInt32($0010) then res += 'MAP_FLUSH_EXPLICIT_BIT_EXT+'; if self.val and UInt32($0020) = UInt32($0020) then res += 'MAP_UNSYNCHRONIZED_BIT+'; if self.val and UInt32($0020) = UInt32($0020) then res += 'MAP_UNSYNCHRONIZED_BIT_EXT+'; if self.val and UInt32($0040) = UInt32($0040) then res += 'MAP_PERSISTENT_BIT+'; if self.val and UInt32($0040) = UInt32($0040) then res += 'MAP_PERSISTENT_BIT_EXT+'; if self.val and UInt32($0080) = UInt32($0080) then res += 'MAP_COHERENT_BIT+'; if self.val and UInt32($0080) = UInt32($0080) then res += 'MAP_COHERENT_BIT_EXT+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'MapBufferAccessMask[{self.val}]'; end; end; MapQuery = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property COEFF: MapQuery read new MapQuery($0A00); public static property ORDER: MapQuery read new MapQuery($0A01); public static property DOMAIN: MapQuery read new MapQuery($0A02); public function ToString: string; override; begin if self.val = UInt32($0A00) then Result := 'COEFF' else if self.val = UInt32($0A01) then Result := 'ORDER' else if self.val = UInt32($0A02) then Result := 'DOMAIN' else Result := $'MapQuery[{self.val}]'; end; end; MapTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property MAP1_COLOR_4: MapTarget read new MapTarget($0D90); public static property MAP1_INDEX: MapTarget read new MapTarget($0D91); public static property MAP1_NORMAL: MapTarget read new MapTarget($0D92); public static property MAP1_TEXTURE_COORD_1: MapTarget read new MapTarget($0D93); public static property MAP1_TEXTURE_COORD_2: MapTarget read new MapTarget($0D94); public static property MAP1_TEXTURE_COORD_3: MapTarget read new MapTarget($0D95); public static property MAP1_TEXTURE_COORD_4: MapTarget read new MapTarget($0D96); public static property MAP1_VERTEX_3: MapTarget read new MapTarget($0D97); public static property MAP1_VERTEX_4: MapTarget read new MapTarget($0D98); public static property MAP2_COLOR_4: MapTarget read new MapTarget($0DB0); public static property MAP2_INDEX: MapTarget read new MapTarget($0DB1); public static property MAP2_NORMAL: MapTarget read new MapTarget($0DB2); public static property MAP2_TEXTURE_COORD_1: MapTarget read new MapTarget($0DB3); public static property MAP2_TEXTURE_COORD_2: MapTarget read new MapTarget($0DB4); public static property MAP2_TEXTURE_COORD_3: MapTarget read new MapTarget($0DB5); public static property MAP2_TEXTURE_COORD_4: MapTarget read new MapTarget($0DB6); public static property MAP2_VERTEX_3: MapTarget read new MapTarget($0DB7); public static property MAP2_VERTEX_4: MapTarget read new MapTarget($0DB8); public static property GEOMETRY_DEFORMATION_SGIX: MapTarget read new MapTarget($8194); public static property TEXTURE_DEFORMATION_SGIX: MapTarget read new MapTarget($8195); public function ToString: string; override; begin if self.val = UInt32($0D90) then Result := 'MAP1_COLOR_4' else if self.val = UInt32($0D91) then Result := 'MAP1_INDEX' else if self.val = UInt32($0D92) then Result := 'MAP1_NORMAL' else if self.val = UInt32($0D93) then Result := 'MAP1_TEXTURE_COORD_1' else if self.val = UInt32($0D94) then Result := 'MAP1_TEXTURE_COORD_2' else if self.val = UInt32($0D95) then Result := 'MAP1_TEXTURE_COORD_3' else if self.val = UInt32($0D96) then Result := 'MAP1_TEXTURE_COORD_4' else if self.val = UInt32($0D97) then Result := 'MAP1_VERTEX_3' else if self.val = UInt32($0D98) then Result := 'MAP1_VERTEX_4' else if self.val = UInt32($0DB0) then Result := 'MAP2_COLOR_4' else if self.val = UInt32($0DB1) then Result := 'MAP2_INDEX' else if self.val = UInt32($0DB2) then Result := 'MAP2_NORMAL' else if self.val = UInt32($0DB3) then Result := 'MAP2_TEXTURE_COORD_1' else if self.val = UInt32($0DB4) then Result := 'MAP2_TEXTURE_COORD_2' else if self.val = UInt32($0DB5) then Result := 'MAP2_TEXTURE_COORD_3' else if self.val = UInt32($0DB6) then Result := 'MAP2_TEXTURE_COORD_4' else if self.val = UInt32($0DB7) then Result := 'MAP2_VERTEX_3' else if self.val = UInt32($0DB8) then Result := 'MAP2_VERTEX_4' else if self.val = UInt32($8194) then Result := 'GEOMETRY_DEFORMATION_SGIX' else if self.val = UInt32($8195) then Result := 'TEXTURE_DEFORMATION_SGIX' else Result := $'MapTarget[{self.val}]'; end; end; MaterialFace = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FRONT: MaterialFace read new MaterialFace($0404); public static property BACK: MaterialFace read new MaterialFace($0405); public static property FRONT_AND_BACK: MaterialFace read new MaterialFace($0408); public function ToString: string; override; begin if self.val = UInt32($0404) then Result := 'FRONT' else if self.val = UInt32($0405) then Result := 'BACK' else if self.val = UInt32($0408) then Result := 'FRONT_AND_BACK' else Result := $'MaterialFace[{self.val}]'; end; end; MaterialParameter = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property AMBIENT: MaterialParameter read new MaterialParameter($1200); public static property DIFFUSE: MaterialParameter read new MaterialParameter($1201); public static property SPECULAR: MaterialParameter read new MaterialParameter($1202); public static property EMISSION: MaterialParameter read new MaterialParameter($1600); public static property SHININESS: MaterialParameter read new MaterialParameter($1601); public static property AMBIENT_AND_DIFFUSE: MaterialParameter read new MaterialParameter($1602); public static property COLOR_INDEXES: MaterialParameter read new MaterialParameter($1603); public function ToString: string; override; begin if self.val = UInt32($1200) then Result := 'AMBIENT' else if self.val = UInt32($1201) then Result := 'DIFFUSE' else if self.val = UInt32($1202) then Result := 'SPECULAR' else if self.val = UInt32($1600) then Result := 'EMISSION' else if self.val = UInt32($1601) then Result := 'SHININESS' else if self.val = UInt32($1602) then Result := 'AMBIENT_AND_DIFFUSE' else if self.val = UInt32($1603) then Result := 'COLOR_INDEXES' else Result := $'MaterialParameter[{self.val}]'; end; end; MatrixMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property MODELVIEW: MatrixMode read new MatrixMode($1700); public static property MODELVIEW0_EXT: MatrixMode read new MatrixMode($1700); public static property PROJECTION: MatrixMode read new MatrixMode($1701); public static property TEXTURE: MatrixMode read new MatrixMode($1702); public function ToString: string; override; begin if self.val = UInt32($1700) then Result := 'MODELVIEW' else if self.val = UInt32($1700) then Result := 'MODELVIEW0_EXT' else if self.val = UInt32($1701) then Result := 'PROJECTION' else if self.val = UInt32($1702) then Result := 'TEXTURE' else Result := $'MatrixMode[{self.val}]'; end; end; MemoryBarrierMask = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property VERTEX_ATTRIB_ARRAY_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($0001); public static property VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT: MemoryBarrierMask read new MemoryBarrierMask($0001); public static property ELEMENT_ARRAY_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($0002); public static property ELEMENT_ARRAY_BARRIER_BIT_EXT: MemoryBarrierMask read new MemoryBarrierMask($0002); public static property UNIFORM_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($0004); public static property UNIFORM_BARRIER_BIT_EXT: MemoryBarrierMask read new MemoryBarrierMask($0004); public static property TEXTURE_FETCH_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($0008); public static property TEXTURE_FETCH_BARRIER_BIT_EXT: MemoryBarrierMask read new MemoryBarrierMask($0008); public static property SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV: MemoryBarrierMask read new MemoryBarrierMask($0010); public static property SHADER_IMAGE_ACCESS_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($0020); public static property SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT: MemoryBarrierMask read new MemoryBarrierMask($0020); public static property COMMAND_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($0040); public static property COMMAND_BARRIER_BIT_EXT: MemoryBarrierMask read new MemoryBarrierMask($0040); public static property PIXEL_BUFFER_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($0080); public static property PIXEL_BUFFER_BARRIER_BIT_EXT: MemoryBarrierMask read new MemoryBarrierMask($0080); public static property TEXTURE_UPDATE_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($0100); public static property TEXTURE_UPDATE_BARRIER_BIT_EXT: MemoryBarrierMask read new MemoryBarrierMask($0100); public static property BUFFER_UPDATE_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($0200); public static property BUFFER_UPDATE_BARRIER_BIT_EXT: MemoryBarrierMask read new MemoryBarrierMask($0200); public static property FRAMEBUFFER_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($0400); public static property FRAMEBUFFER_BARRIER_BIT_EXT: MemoryBarrierMask read new MemoryBarrierMask($0400); public static property TRANSFORM_FEEDBACK_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($0800); public static property TRANSFORM_FEEDBACK_BARRIER_BIT_EXT: MemoryBarrierMask read new MemoryBarrierMask($0800); public static property ATOMIC_COUNTER_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($1000); public static property ATOMIC_COUNTER_BARRIER_BIT_EXT: MemoryBarrierMask read new MemoryBarrierMask($1000); public static property SHADER_STORAGE_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($2000); public static property CLIENT_MAPPED_BUFFER_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($4000); public static property CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT: MemoryBarrierMask read new MemoryBarrierMask($4000); public static property QUERY_BUFFER_BARRIER_BIT: MemoryBarrierMask read new MemoryBarrierMask($8000); public static property ALL_BARRIER_BITS: MemoryBarrierMask read new MemoryBarrierMask($FFFFFFFF); public static property ALL_BARRIER_BITS_EXT: MemoryBarrierMask read new MemoryBarrierMask($FFFFFFFF); public static function operator+(f1,f2: MemoryBarrierMask) := new MemoryBarrierMask(f1.val or f2.val); public static function operator or(f1,f2: MemoryBarrierMask) := f1+f2; public property HAS_FLAG_VERTEX_ATTRIB_ARRAY_BARRIER_BIT: boolean read self.val and $0001 <> 0; public property HAS_FLAG_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT: boolean read self.val and $0001 <> 0; public property HAS_FLAG_ELEMENT_ARRAY_BARRIER_BIT: boolean read self.val and $0002 <> 0; public property HAS_FLAG_ELEMENT_ARRAY_BARRIER_BIT_EXT: boolean read self.val and $0002 <> 0; public property HAS_FLAG_UNIFORM_BARRIER_BIT: boolean read self.val and $0004 <> 0; public property HAS_FLAG_UNIFORM_BARRIER_BIT_EXT: boolean read self.val and $0004 <> 0; public property HAS_FLAG_TEXTURE_FETCH_BARRIER_BIT: boolean read self.val and $0008 <> 0; public property HAS_FLAG_TEXTURE_FETCH_BARRIER_BIT_EXT: boolean read self.val and $0008 <> 0; public property HAS_FLAG_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV: boolean read self.val and $0010 <> 0; public property HAS_FLAG_SHADER_IMAGE_ACCESS_BARRIER_BIT: boolean read self.val and $0020 <> 0; public property HAS_FLAG_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT: boolean read self.val and $0020 <> 0; public property HAS_FLAG_COMMAND_BARRIER_BIT: boolean read self.val and $0040 <> 0; public property HAS_FLAG_COMMAND_BARRIER_BIT_EXT: boolean read self.val and $0040 <> 0; public property HAS_FLAG_PIXEL_BUFFER_BARRIER_BIT: boolean read self.val and $0080 <> 0; public property HAS_FLAG_PIXEL_BUFFER_BARRIER_BIT_EXT: boolean read self.val and $0080 <> 0; public property HAS_FLAG_TEXTURE_UPDATE_BARRIER_BIT: boolean read self.val and $0100 <> 0; public property HAS_FLAG_TEXTURE_UPDATE_BARRIER_BIT_EXT: boolean read self.val and $0100 <> 0; public property HAS_FLAG_BUFFER_UPDATE_BARRIER_BIT: boolean read self.val and $0200 <> 0; public property HAS_FLAG_BUFFER_UPDATE_BARRIER_BIT_EXT: boolean read self.val and $0200 <> 0; public property HAS_FLAG_FRAMEBUFFER_BARRIER_BIT: boolean read self.val and $0400 <> 0; public property HAS_FLAG_FRAMEBUFFER_BARRIER_BIT_EXT: boolean read self.val and $0400 <> 0; public property HAS_FLAG_TRANSFORM_FEEDBACK_BARRIER_BIT: boolean read self.val and $0800 <> 0; public property HAS_FLAG_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT: boolean read self.val and $0800 <> 0; public property HAS_FLAG_ATOMIC_COUNTER_BARRIER_BIT: boolean read self.val and $1000 <> 0; public property HAS_FLAG_ATOMIC_COUNTER_BARRIER_BIT_EXT: boolean read self.val and $1000 <> 0; public property HAS_FLAG_SHADER_STORAGE_BARRIER_BIT: boolean read self.val and $2000 <> 0; public property HAS_FLAG_CLIENT_MAPPED_BUFFER_BARRIER_BIT: boolean read self.val and $4000 <> 0; public property HAS_FLAG_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT: boolean read self.val and $4000 <> 0; public property HAS_FLAG_QUERY_BUFFER_BARRIER_BIT: boolean read self.val and $8000 <> 0; public property HAS_FLAG_ALL_BARRIER_BITS: boolean read self.val and $FFFFFFFF <> 0; public property HAS_FLAG_ALL_BARRIER_BITS_EXT: boolean read self.val and $FFFFFFFF <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0001) = UInt32($0001) then res += 'VERTEX_ATTRIB_ARRAY_BARRIER_BIT+'; if self.val and UInt32($0001) = UInt32($0001) then res += 'VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'ELEMENT_ARRAY_BARRIER_BIT+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'ELEMENT_ARRAY_BARRIER_BIT_EXT+'; if self.val and UInt32($0004) = UInt32($0004) then res += 'UNIFORM_BARRIER_BIT+'; if self.val and UInt32($0004) = UInt32($0004) then res += 'UNIFORM_BARRIER_BIT_EXT+'; if self.val and UInt32($0008) = UInt32($0008) then res += 'TEXTURE_FETCH_BARRIER_BIT+'; if self.val and UInt32($0008) = UInt32($0008) then res += 'TEXTURE_FETCH_BARRIER_BIT_EXT+'; if self.val and UInt32($0010) = UInt32($0010) then res += 'SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV+'; if self.val and UInt32($0020) = UInt32($0020) then res += 'SHADER_IMAGE_ACCESS_BARRIER_BIT+'; if self.val and UInt32($0020) = UInt32($0020) then res += 'SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT+'; if self.val and UInt32($0040) = UInt32($0040) then res += 'COMMAND_BARRIER_BIT+'; if self.val and UInt32($0040) = UInt32($0040) then res += 'COMMAND_BARRIER_BIT_EXT+'; if self.val and UInt32($0080) = UInt32($0080) then res += 'PIXEL_BUFFER_BARRIER_BIT+'; if self.val and UInt32($0080) = UInt32($0080) then res += 'PIXEL_BUFFER_BARRIER_BIT_EXT+'; if self.val and UInt32($0100) = UInt32($0100) then res += 'TEXTURE_UPDATE_BARRIER_BIT+'; if self.val and UInt32($0100) = UInt32($0100) then res += 'TEXTURE_UPDATE_BARRIER_BIT_EXT+'; if self.val and UInt32($0200) = UInt32($0200) then res += 'BUFFER_UPDATE_BARRIER_BIT+'; if self.val and UInt32($0200) = UInt32($0200) then res += 'BUFFER_UPDATE_BARRIER_BIT_EXT+'; if self.val and UInt32($0400) = UInt32($0400) then res += 'FRAMEBUFFER_BARRIER_BIT+'; if self.val and UInt32($0400) = UInt32($0400) then res += 'FRAMEBUFFER_BARRIER_BIT_EXT+'; if self.val and UInt32($0800) = UInt32($0800) then res += 'TRANSFORM_FEEDBACK_BARRIER_BIT+'; if self.val and UInt32($0800) = UInt32($0800) then res += 'TRANSFORM_FEEDBACK_BARRIER_BIT_EXT+'; if self.val and UInt32($1000) = UInt32($1000) then res += 'ATOMIC_COUNTER_BARRIER_BIT+'; if self.val and UInt32($1000) = UInt32($1000) then res += 'ATOMIC_COUNTER_BARRIER_BIT_EXT+'; if self.val and UInt32($2000) = UInt32($2000) then res += 'SHADER_STORAGE_BARRIER_BIT+'; if self.val and UInt32($4000) = UInt32($4000) then res += 'CLIENT_MAPPED_BUFFER_BARRIER_BIT+'; if self.val and UInt32($4000) = UInt32($4000) then res += 'CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT+'; if self.val and UInt32($8000) = UInt32($8000) then res += 'QUERY_BUFFER_BARRIER_BIT+'; if self.val and UInt32($FFFFFFFF) = UInt32($FFFFFFFF) then res += 'ALL_BARRIER_BITS+'; if self.val and UInt32($FFFFFFFF) = UInt32($FFFFFFFF) then res += 'ALL_BARRIER_BITS_EXT+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'MemoryBarrierMask[{self.val}]'; end; end; MemoryObjectParameterName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property DEDICATED_MEMORY_OBJECT_EXT: MemoryObjectParameterName read new MemoryObjectParameterName($9581); public static property PROTECTED_MEMORY_OBJECT_EXT: MemoryObjectParameterName read new MemoryObjectParameterName($959B); public function ToString: string; override; begin if self.val = UInt32($9581) then Result := 'DEDICATED_MEMORY_OBJECT_EXT' else if self.val = UInt32($959B) then Result := 'PROTECTED_MEMORY_OBJECT_EXT' else Result := $'MemoryObjectParameterName[{self.val}]'; end; end; MeshMode1 = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property POINT: MeshMode1 read new MeshMode1($1B00); public static property LINE: MeshMode1 read new MeshMode1($1B01); public function ToString: string; override; begin if self.val = UInt32($1B00) then Result := 'POINT' else if self.val = UInt32($1B01) then Result := 'LINE' else Result := $'MeshMode1[{self.val}]'; end; end; MeshMode2 = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property POINT: MeshMode2 read new MeshMode2($1B00); public static property LINE: MeshMode2 read new MeshMode2($1B01); public static property FILL: MeshMode2 read new MeshMode2($1B02); public function ToString: string; override; begin if self.val = UInt32($1B00) then Result := 'POINT' else if self.val = UInt32($1B01) then Result := 'LINE' else if self.val = UInt32($1B02) then Result := 'FILL' else Result := $'MeshMode2[{self.val}]'; end; end; MinmaxTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property MINMAX: MinmaxTarget read new MinmaxTarget($802E); public function ToString: string; override; begin if self.val = UInt32($802E) then Result := 'MINMAX' else Result := $'MinmaxTarget[{self.val}]'; end; end; NormalPointerType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BYTE: NormalPointerType read new NormalPointerType($1400); public static property SHORT: NormalPointerType read new NormalPointerType($1402); public static property INT: NormalPointerType read new NormalPointerType($1404); public static property FLOAT: NormalPointerType read new NormalPointerType($1406); public static property DOUBLE: NormalPointerType read new NormalPointerType($140A); public function ToString: string; override; begin if self.val = UInt32($1400) then Result := 'BYTE' else if self.val = UInt32($1402) then Result := 'SHORT' else if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else Result := $'NormalPointerType[{self.val}]'; end; end; ObjectIdentifier = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE: ObjectIdentifier read new ObjectIdentifier($1702); public static property VERTEX_ARRAY: ObjectIdentifier read new ObjectIdentifier($8074); public static property BUFFER: ObjectIdentifier read new ObjectIdentifier($82E0); public static property SHADER: ObjectIdentifier read new ObjectIdentifier($82E1); public static property &PROGRAM: ObjectIdentifier read new ObjectIdentifier($82E2); public static property QUERY: ObjectIdentifier read new ObjectIdentifier($82E3); public static property PROGRAM_PIPELINE: ObjectIdentifier read new ObjectIdentifier($82E4); public static property SAMPLER: ObjectIdentifier read new ObjectIdentifier($82E6); public static property FRAMEBUFFER: ObjectIdentifier read new ObjectIdentifier($8D40); public static property RENDERBUFFER: ObjectIdentifier read new ObjectIdentifier($8D41); public static property TRANSFORM_FEEDBACK: ObjectIdentifier read new ObjectIdentifier($8E22); public function ToString: string; override; begin if self.val = UInt32($1702) then Result := 'TEXTURE' else if self.val = UInt32($8074) then Result := 'VERTEX_ARRAY' else if self.val = UInt32($82E0) then Result := 'BUFFER' else if self.val = UInt32($82E1) then Result := 'SHADER' else if self.val = UInt32($82E2) then Result := 'PROGRAM' else if self.val = UInt32($82E3) then Result := 'QUERY' else if self.val = UInt32($82E4) then Result := 'PROGRAM_PIPELINE' else if self.val = UInt32($82E6) then Result := 'SAMPLER' else if self.val = UInt32($8D40) then Result := 'FRAMEBUFFER' else if self.val = UInt32($8D41) then Result := 'RENDERBUFFER' else if self.val = UInt32($8E22) then Result := 'TRANSFORM_FEEDBACK' else Result := $'ObjectIdentifier[{self.val}]'; end; end; PatchParameterName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PATCH_VERTICES: PatchParameterName read new PatchParameterName($8E72); public static property PATCH_DEFAULT_INNER_LEVEL: PatchParameterName read new PatchParameterName($8E73); public static property PATCH_DEFAULT_OUTER_LEVEL: PatchParameterName read new PatchParameterName($8E74); public function ToString: string; override; begin if self.val = UInt32($8E72) then Result := 'PATCH_VERTICES' else if self.val = UInt32($8E73) then Result := 'PATCH_DEFAULT_INNER_LEVEL' else if self.val = UInt32($8E74) then Result := 'PATCH_DEFAULT_OUTER_LEVEL' else Result := $'PatchParameterName[{self.val}]'; end; end; PathColor = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PRIMARY_COLOR_NV: PathColor read new PathColor($852C); public static property SECONDARY_COLOR_NV: PathColor read new PathColor($852D); public static property PRIMARY_COLOR: PathColor read new PathColor($8577); public function ToString: string; override; begin if self.val = UInt32($852C) then Result := 'PRIMARY_COLOR_NV' else if self.val = UInt32($852D) then Result := 'SECONDARY_COLOR_NV' else if self.val = UInt32($8577) then Result := 'PRIMARY_COLOR' else Result := $'PathColor[{self.val}]'; end; end; PathColorFormat = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NONE: PathColorFormat read new PathColorFormat($0000); public static property ALPHA: PathColorFormat read new PathColorFormat($1906); public static property RGB: PathColorFormat read new PathColorFormat($1907); public static property RGBA: PathColorFormat read new PathColorFormat($1908); public static property LUMINANCE: PathColorFormat read new PathColorFormat($1909); public static property LUMINANCE_ALPHA: PathColorFormat read new PathColorFormat($190A); public static property INTENSITY: PathColorFormat read new PathColorFormat($8049); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'NONE' else if self.val = UInt32($1906) then Result := 'ALPHA' else if self.val = UInt32($1907) then Result := 'RGB' else if self.val = UInt32($1908) then Result := 'RGBA' else if self.val = UInt32($1909) then Result := 'LUMINANCE' else if self.val = UInt32($190A) then Result := 'LUMINANCE_ALPHA' else if self.val = UInt32($8049) then Result := 'INTENSITY' else Result := $'PathColorFormat[{self.val}]'; end; end; PathCoordType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CLOSE_PATH_NV: PathCoordType read new PathCoordType($0000); public static property MOVE_TO_NV: PathCoordType read new PathCoordType($0002); public static property RELATIVE_MOVE_TO_NV: PathCoordType read new PathCoordType($0003); public static property LINE_TO_NV: PathCoordType read new PathCoordType($0004); public static property RELATIVE_LINE_TO_NV: PathCoordType read new PathCoordType($0005); public static property HORIZONTAL_LINE_TO_NV: PathCoordType read new PathCoordType($0006); public static property RELATIVE_HORIZONTAL_LINE_TO_NV: PathCoordType read new PathCoordType($0007); public static property VERTICAL_LINE_TO_NV: PathCoordType read new PathCoordType($0008); public static property RELATIVE_VERTICAL_LINE_TO_NV: PathCoordType read new PathCoordType($0009); public static property QUADRATIC_CURVE_TO_NV: PathCoordType read new PathCoordType($000A); public static property RELATIVE_QUADRATIC_CURVE_TO_NV: PathCoordType read new PathCoordType($000B); public static property CUBIC_CURVE_TO_NV: PathCoordType read new PathCoordType($000C); public static property RELATIVE_CUBIC_CURVE_TO_NV: PathCoordType read new PathCoordType($000D); public static property SMOOTH_QUADRATIC_CURVE_TO_NV: PathCoordType read new PathCoordType($000E); public static property RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV: PathCoordType read new PathCoordType($000F); public static property SMOOTH_CUBIC_CURVE_TO_NV: PathCoordType read new PathCoordType($0010); public static property RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV: PathCoordType read new PathCoordType($0011); public static property SMALL_CCW_ARC_TO_NV: PathCoordType read new PathCoordType($0012); public static property RELATIVE_SMALL_CCW_ARC_TO_NV: PathCoordType read new PathCoordType($0013); public static property SMALL_CW_ARC_TO_NV: PathCoordType read new PathCoordType($0014); public static property RELATIVE_SMALL_CW_ARC_TO_NV: PathCoordType read new PathCoordType($0015); public static property LARGE_CCW_ARC_TO_NV: PathCoordType read new PathCoordType($0016); public static property RELATIVE_LARGE_CCW_ARC_TO_NV: PathCoordType read new PathCoordType($0017); public static property LARGE_CW_ARC_TO_NV: PathCoordType read new PathCoordType($0018); public static property RELATIVE_LARGE_CW_ARC_TO_NV: PathCoordType read new PathCoordType($0019); public static property CONIC_CURVE_TO_NV: PathCoordType read new PathCoordType($001A); public static property RELATIVE_CONIC_CURVE_TO_NV: PathCoordType read new PathCoordType($001B); public static property ROUNDED_RECT_NV: PathCoordType read new PathCoordType($00E8); public static property RELATIVE_ROUNDED_RECT_NV: PathCoordType read new PathCoordType($00E9); public static property ROUNDED_RECT2_NV: PathCoordType read new PathCoordType($00EA); public static property RELATIVE_ROUNDED_RECT2_NV: PathCoordType read new PathCoordType($00EB); public static property ROUNDED_RECT4_NV: PathCoordType read new PathCoordType($00EC); public static property RELATIVE_ROUNDED_RECT4_NV: PathCoordType read new PathCoordType($00ED); public static property ROUNDED_RECT8_NV: PathCoordType read new PathCoordType($00EE); public static property RELATIVE_ROUNDED_RECT8_NV: PathCoordType read new PathCoordType($00EF); public static property RESTART_PATH_NV: PathCoordType read new PathCoordType($00F0); public static property DUP_FIRST_CUBIC_CURVE_TO_NV: PathCoordType read new PathCoordType($00F2); public static property DUP_LAST_CUBIC_CURVE_TO_NV: PathCoordType read new PathCoordType($00F4); public static property RECT_NV: PathCoordType read new PathCoordType($00F6); public static property RELATIVE_RECT_NV: PathCoordType read new PathCoordType($00F7); public static property CIRCULAR_CCW_ARC_TO_NV: PathCoordType read new PathCoordType($00F8); public static property CIRCULAR_CW_ARC_TO_NV: PathCoordType read new PathCoordType($00FA); public static property CIRCULAR_TANGENT_ARC_TO_NV: PathCoordType read new PathCoordType($00FC); public static property ARC_TO_NV: PathCoordType read new PathCoordType($00FE); public static property RELATIVE_ARC_TO_NV: PathCoordType read new PathCoordType($00FF); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'CLOSE_PATH_NV' else if self.val = UInt32($0002) then Result := 'MOVE_TO_NV' else if self.val = UInt32($0003) then Result := 'RELATIVE_MOVE_TO_NV' else if self.val = UInt32($0004) then Result := 'LINE_TO_NV' else if self.val = UInt32($0005) then Result := 'RELATIVE_LINE_TO_NV' else if self.val = UInt32($0006) then Result := 'HORIZONTAL_LINE_TO_NV' else if self.val = UInt32($0007) then Result := 'RELATIVE_HORIZONTAL_LINE_TO_NV' else if self.val = UInt32($0008) then Result := 'VERTICAL_LINE_TO_NV' else if self.val = UInt32($0009) then Result := 'RELATIVE_VERTICAL_LINE_TO_NV' else if self.val = UInt32($000A) then Result := 'QUADRATIC_CURVE_TO_NV' else if self.val = UInt32($000B) then Result := 'RELATIVE_QUADRATIC_CURVE_TO_NV' else if self.val = UInt32($000C) then Result := 'CUBIC_CURVE_TO_NV' else if self.val = UInt32($000D) then Result := 'RELATIVE_CUBIC_CURVE_TO_NV' else if self.val = UInt32($000E) then Result := 'SMOOTH_QUADRATIC_CURVE_TO_NV' else if self.val = UInt32($000F) then Result := 'RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV' else if self.val = UInt32($0010) then Result := 'SMOOTH_CUBIC_CURVE_TO_NV' else if self.val = UInt32($0011) then Result := 'RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV' else if self.val = UInt32($0012) then Result := 'SMALL_CCW_ARC_TO_NV' else if self.val = UInt32($0013) then Result := 'RELATIVE_SMALL_CCW_ARC_TO_NV' else if self.val = UInt32($0014) then Result := 'SMALL_CW_ARC_TO_NV' else if self.val = UInt32($0015) then Result := 'RELATIVE_SMALL_CW_ARC_TO_NV' else if self.val = UInt32($0016) then Result := 'LARGE_CCW_ARC_TO_NV' else if self.val = UInt32($0017) then Result := 'RELATIVE_LARGE_CCW_ARC_TO_NV' else if self.val = UInt32($0018) then Result := 'LARGE_CW_ARC_TO_NV' else if self.val = UInt32($0019) then Result := 'RELATIVE_LARGE_CW_ARC_TO_NV' else if self.val = UInt32($001A) then Result := 'CONIC_CURVE_TO_NV' else if self.val = UInt32($001B) then Result := 'RELATIVE_CONIC_CURVE_TO_NV' else if self.val = UInt32($00E8) then Result := 'ROUNDED_RECT_NV' else if self.val = UInt32($00E9) then Result := 'RELATIVE_ROUNDED_RECT_NV' else if self.val = UInt32($00EA) then Result := 'ROUNDED_RECT2_NV' else if self.val = UInt32($00EB) then Result := 'RELATIVE_ROUNDED_RECT2_NV' else if self.val = UInt32($00EC) then Result := 'ROUNDED_RECT4_NV' else if self.val = UInt32($00ED) then Result := 'RELATIVE_ROUNDED_RECT4_NV' else if self.val = UInt32($00EE) then Result := 'ROUNDED_RECT8_NV' else if self.val = UInt32($00EF) then Result := 'RELATIVE_ROUNDED_RECT8_NV' else if self.val = UInt32($00F0) then Result := 'RESTART_PATH_NV' else if self.val = UInt32($00F2) then Result := 'DUP_FIRST_CUBIC_CURVE_TO_NV' else if self.val = UInt32($00F4) then Result := 'DUP_LAST_CUBIC_CURVE_TO_NV' else if self.val = UInt32($00F6) then Result := 'RECT_NV' else if self.val = UInt32($00F7) then Result := 'RELATIVE_RECT_NV' else if self.val = UInt32($00F8) then Result := 'CIRCULAR_CCW_ARC_TO_NV' else if self.val = UInt32($00FA) then Result := 'CIRCULAR_CW_ARC_TO_NV' else if self.val = UInt32($00FC) then Result := 'CIRCULAR_TANGENT_ARC_TO_NV' else if self.val = UInt32($00FE) then Result := 'ARC_TO_NV' else if self.val = UInt32($00FF) then Result := 'RELATIVE_ARC_TO_NV' else Result := $'PathCoordType[{self.val}]'; end; end; PathCoverMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PATH_FILL_COVER_MODE_NV: PathCoverMode read new PathCoverMode($9082); public static property CONVEX_HULL_NV: PathCoverMode read new PathCoverMode($908B); public static property BOUNDING_BOX_NV: PathCoverMode read new PathCoverMode($908D); public static property BOUNDING_BOX_OF_BOUNDING_BOXES_NV: PathCoverMode read new PathCoverMode($909C); public function ToString: string; override; begin if self.val = UInt32($9082) then Result := 'PATH_FILL_COVER_MODE_NV' else if self.val = UInt32($908B) then Result := 'CONVEX_HULL_NV' else if self.val = UInt32($908D) then Result := 'BOUNDING_BOX_NV' else if self.val = UInt32($909C) then Result := 'BOUNDING_BOX_OF_BOUNDING_BOXES_NV' else Result := $'PathCoverMode[{self.val}]'; end; end; PathElementType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property UTF8_NV: PathElementType read new PathElementType($909A); public static property UTF16_NV: PathElementType read new PathElementType($909B); public function ToString: string; override; begin if self.val = UInt32($909A) then Result := 'UTF8_NV' else if self.val = UInt32($909B) then Result := 'UTF16_NV' else Result := $'PathElementType[{self.val}]'; end; end; PathFillMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property INVERT: PathFillMode read new PathFillMode($150A); public static property PATH_FILL_MODE_NV: PathFillMode read new PathFillMode($9080); public static property COUNT_UP_NV: PathFillMode read new PathFillMode($9088); public static property COUNT_DOWN_NV: PathFillMode read new PathFillMode($9089); public function ToString: string; override; begin if self.val = UInt32($150A) then Result := 'INVERT' else if self.val = UInt32($9080) then Result := 'PATH_FILL_MODE_NV' else if self.val = UInt32($9088) then Result := 'COUNT_UP_NV' else if self.val = UInt32($9089) then Result := 'COUNT_DOWN_NV' else Result := $'PathFillMode[{self.val}]'; end; end; PathFontStyle = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NONE: PathFontStyle read new PathFontStyle($0000); public static property BOLD_BIT_NV: PathFontStyle read new PathFontStyle($0001); public static property ITALIC_BIT_NV: PathFontStyle read new PathFontStyle($0002); public static function operator+(f1,f2: PathFontStyle) := new PathFontStyle(f1.val or f2.val); public static function operator or(f1,f2: PathFontStyle) := f1+f2; public property ANY_FLAGS: boolean read self.val<>0; public property HAS_FLAG_BOLD_BIT_NV: boolean read self.val and $0001 <> 0; public property HAS_FLAG_ITALIC_BIT_NV: boolean read self.val and $0002 <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0000) = UInt32($0000) then res += 'NONE+'; if self.val and UInt32($0001) = UInt32($0001) then res += 'BOLD_BIT_NV+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'ITALIC_BIT_NV+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'PathFontStyle[{self.val}]'; end; end; PathFontTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property STANDARD_FONT_NAME_NV: PathFontTarget read new PathFontTarget($9072); public static property SYSTEM_FONT_NAME_NV: PathFontTarget read new PathFontTarget($9073); public static property FILE_NAME_NV: PathFontTarget read new PathFontTarget($9074); public function ToString: string; override; begin if self.val = UInt32($9072) then Result := 'STANDARD_FONT_NAME_NV' else if self.val = UInt32($9073) then Result := 'SYSTEM_FONT_NAME_NV' else if self.val = UInt32($9074) then Result := 'FILE_NAME_NV' else Result := $'PathFontTarget[{self.val}]'; end; end; PathGenMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NONE: PathGenMode read new PathGenMode($0000); public static property EYE_LINEAR: PathGenMode read new PathGenMode($2400); public static property OBJECT_LINEAR: PathGenMode read new PathGenMode($2401); public static property CONSTANT: PathGenMode read new PathGenMode($8576); public static property PATH_OBJECT_BOUNDING_BOX_NV: PathGenMode read new PathGenMode($908A); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'NONE' else if self.val = UInt32($2400) then Result := 'EYE_LINEAR' else if self.val = UInt32($2401) then Result := 'OBJECT_LINEAR' else if self.val = UInt32($8576) then Result := 'CONSTANT' else if self.val = UInt32($908A) then Result := 'PATH_OBJECT_BOUNDING_BOX_NV' else Result := $'PathGenMode[{self.val}]'; end; end; PathHandleMissingGlyphs = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SKIP_MISSING_GLYPH_NV: PathHandleMissingGlyphs read new PathHandleMissingGlyphs($90A9); public static property USE_MISSING_GLYPH_NV: PathHandleMissingGlyphs read new PathHandleMissingGlyphs($90AA); public function ToString: string; override; begin if self.val = UInt32($90A9) then Result := 'SKIP_MISSING_GLYPH_NV' else if self.val = UInt32($90AA) then Result := 'USE_MISSING_GLYPH_NV' else Result := $'PathHandleMissingGlyphs[{self.val}]'; end; end; PathListMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ACCUM_ADJACENT_PAIRS_NV: PathListMode read new PathListMode($90AD); public static property ADJACENT_PAIRS_NV: PathListMode read new PathListMode($90AE); public static property FIRST_TO_REST_NV: PathListMode read new PathListMode($90AF); public function ToString: string; override; begin if self.val = UInt32($90AD) then Result := 'ACCUM_ADJACENT_PAIRS_NV' else if self.val = UInt32($90AE) then Result := 'ADJACENT_PAIRS_NV' else if self.val = UInt32($90AF) then Result := 'FIRST_TO_REST_NV' else Result := $'PathListMode[{self.val}]'; end; end; PathMetricMask = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property GLYPH_WIDTH_BIT_NV: PathMetricMask read new PathMetricMask($0001); public static property GLYPH_HEIGHT_BIT_NV: PathMetricMask read new PathMetricMask($0002); public static property GLYPH_HORIZONTAL_BEARING_X_BIT_NV: PathMetricMask read new PathMetricMask($0004); public static property GLYPH_HORIZONTAL_BEARING_Y_BIT_NV: PathMetricMask read new PathMetricMask($0008); public static property GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV: PathMetricMask read new PathMetricMask($0010); public static property GLYPH_VERTICAL_BEARING_X_BIT_NV: PathMetricMask read new PathMetricMask($0020); public static property GLYPH_VERTICAL_BEARING_Y_BIT_NV: PathMetricMask read new PathMetricMask($0040); public static property GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV: PathMetricMask read new PathMetricMask($0080); public static property GLYPH_HAS_KERNING_BIT_NV: PathMetricMask read new PathMetricMask($0100); public static property FONT_X_MIN_BOUNDS_BIT_NV: PathMetricMask read new PathMetricMask($10000); public static property FONT_Y_MIN_BOUNDS_BIT_NV: PathMetricMask read new PathMetricMask($20000); public static property FONT_X_MAX_BOUNDS_BIT_NV: PathMetricMask read new PathMetricMask($40000); public static property FONT_Y_MAX_BOUNDS_BIT_NV: PathMetricMask read new PathMetricMask($80000); public static property FONT_UNITS_PER_EM_BIT_NV: PathMetricMask read new PathMetricMask($100000); public static property FONT_ASCENDER_BIT_NV: PathMetricMask read new PathMetricMask($200000); public static property FONT_DESCENDER_BIT_NV: PathMetricMask read new PathMetricMask($400000); public static property FONT_HEIGHT_BIT_NV: PathMetricMask read new PathMetricMask($800000); public static property FONT_MAX_ADVANCE_WIDTH_BIT_NV: PathMetricMask read new PathMetricMask($1000000); public static property FONT_MAX_ADVANCE_HEIGHT_BIT_NV: PathMetricMask read new PathMetricMask($2000000); public static property FONT_UNDERLINE_POSITION_BIT_NV: PathMetricMask read new PathMetricMask($4000000); public static property FONT_UNDERLINE_THICKNESS_BIT_NV: PathMetricMask read new PathMetricMask($8000000); public static property FONT_HAS_KERNING_BIT_NV: PathMetricMask read new PathMetricMask($10000000); public static property FONT_NUM_GLYPH_INDICES_BIT_NV: PathMetricMask read new PathMetricMask($20000000); public static function operator+(f1,f2: PathMetricMask) := new PathMetricMask(f1.val or f2.val); public static function operator or(f1,f2: PathMetricMask) := f1+f2; public property HAS_FLAG_GLYPH_WIDTH_BIT_NV: boolean read self.val and $0001 <> 0; public property HAS_FLAG_GLYPH_HEIGHT_BIT_NV: boolean read self.val and $0002 <> 0; public property HAS_FLAG_GLYPH_HORIZONTAL_BEARING_X_BIT_NV: boolean read self.val and $0004 <> 0; public property HAS_FLAG_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV: boolean read self.val and $0008 <> 0; public property HAS_FLAG_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV: boolean read self.val and $0010 <> 0; public property HAS_FLAG_GLYPH_VERTICAL_BEARING_X_BIT_NV: boolean read self.val and $0020 <> 0; public property HAS_FLAG_GLYPH_VERTICAL_BEARING_Y_BIT_NV: boolean read self.val and $0040 <> 0; public property HAS_FLAG_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV: boolean read self.val and $0080 <> 0; public property HAS_FLAG_GLYPH_HAS_KERNING_BIT_NV: boolean read self.val and $0100 <> 0; public property HAS_FLAG_FONT_X_MIN_BOUNDS_BIT_NV: boolean read self.val and $10000 <> 0; public property HAS_FLAG_FONT_Y_MIN_BOUNDS_BIT_NV: boolean read self.val and $20000 <> 0; public property HAS_FLAG_FONT_X_MAX_BOUNDS_BIT_NV: boolean read self.val and $40000 <> 0; public property HAS_FLAG_FONT_Y_MAX_BOUNDS_BIT_NV: boolean read self.val and $80000 <> 0; public property HAS_FLAG_FONT_UNITS_PER_EM_BIT_NV: boolean read self.val and $100000 <> 0; public property HAS_FLAG_FONT_ASCENDER_BIT_NV: boolean read self.val and $200000 <> 0; public property HAS_FLAG_FONT_DESCENDER_BIT_NV: boolean read self.val and $400000 <> 0; public property HAS_FLAG_FONT_HEIGHT_BIT_NV: boolean read self.val and $800000 <> 0; public property HAS_FLAG_FONT_MAX_ADVANCE_WIDTH_BIT_NV: boolean read self.val and $1000000 <> 0; public property HAS_FLAG_FONT_MAX_ADVANCE_HEIGHT_BIT_NV: boolean read self.val and $2000000 <> 0; public property HAS_FLAG_FONT_UNDERLINE_POSITION_BIT_NV: boolean read self.val and $4000000 <> 0; public property HAS_FLAG_FONT_UNDERLINE_THICKNESS_BIT_NV: boolean read self.val and $8000000 <> 0; public property HAS_FLAG_FONT_HAS_KERNING_BIT_NV: boolean read self.val and $10000000 <> 0; public property HAS_FLAG_FONT_NUM_GLYPH_INDICES_BIT_NV: boolean read self.val and $20000000 <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0001) = UInt32($0001) then res += 'GLYPH_WIDTH_BIT_NV+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'GLYPH_HEIGHT_BIT_NV+'; if self.val and UInt32($0004) = UInt32($0004) then res += 'GLYPH_HORIZONTAL_BEARING_X_BIT_NV+'; if self.val and UInt32($0008) = UInt32($0008) then res += 'GLYPH_HORIZONTAL_BEARING_Y_BIT_NV+'; if self.val and UInt32($0010) = UInt32($0010) then res += 'GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV+'; if self.val and UInt32($0020) = UInt32($0020) then res += 'GLYPH_VERTICAL_BEARING_X_BIT_NV+'; if self.val and UInt32($0040) = UInt32($0040) then res += 'GLYPH_VERTICAL_BEARING_Y_BIT_NV+'; if self.val and UInt32($0080) = UInt32($0080) then res += 'GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV+'; if self.val and UInt32($0100) = UInt32($0100) then res += 'GLYPH_HAS_KERNING_BIT_NV+'; if self.val and UInt32($10000) = UInt32($10000) then res += 'FONT_X_MIN_BOUNDS_BIT_NV+'; if self.val and UInt32($20000) = UInt32($20000) then res += 'FONT_Y_MIN_BOUNDS_BIT_NV+'; if self.val and UInt32($40000) = UInt32($40000) then res += 'FONT_X_MAX_BOUNDS_BIT_NV+'; if self.val and UInt32($80000) = UInt32($80000) then res += 'FONT_Y_MAX_BOUNDS_BIT_NV+'; if self.val and UInt32($100000) = UInt32($100000) then res += 'FONT_UNITS_PER_EM_BIT_NV+'; if self.val and UInt32($200000) = UInt32($200000) then res += 'FONT_ASCENDER_BIT_NV+'; if self.val and UInt32($400000) = UInt32($400000) then res += 'FONT_DESCENDER_BIT_NV+'; if self.val and UInt32($800000) = UInt32($800000) then res += 'FONT_HEIGHT_BIT_NV+'; if self.val and UInt32($1000000) = UInt32($1000000) then res += 'FONT_MAX_ADVANCE_WIDTH_BIT_NV+'; if self.val and UInt32($2000000) = UInt32($2000000) then res += 'FONT_MAX_ADVANCE_HEIGHT_BIT_NV+'; if self.val and UInt32($4000000) = UInt32($4000000) then res += 'FONT_UNDERLINE_POSITION_BIT_NV+'; if self.val and UInt32($8000000) = UInt32($8000000) then res += 'FONT_UNDERLINE_THICKNESS_BIT_NV+'; if self.val and UInt32($10000000) = UInt32($10000000) then res += 'FONT_HAS_KERNING_BIT_NV+'; if self.val and UInt32($20000000) = UInt32($20000000) then res += 'FONT_NUM_GLYPH_INDICES_BIT_NV+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'PathMetricMask[{self.val}]'; end; end; PathParameter = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PATH_STROKE_WIDTH_NV: PathParameter read new PathParameter($9075); public static property PATH_END_CAPS_NV: PathParameter read new PathParameter($9076); public static property PATH_INITIAL_END_CAP_NV: PathParameter read new PathParameter($9077); public static property PATH_TERMINAL_END_CAP_NV: PathParameter read new PathParameter($9078); public static property PATH_JOIN_STYLE_NV: PathParameter read new PathParameter($9079); public static property PATH_MITER_LIMIT_NV: PathParameter read new PathParameter($907A); public static property PATH_DASH_CAPS_NV: PathParameter read new PathParameter($907B); public static property PATH_INITIAL_DASH_CAP_NV: PathParameter read new PathParameter($907C); public static property PATH_TERMINAL_DASH_CAP_NV: PathParameter read new PathParameter($907D); public static property PATH_DASH_OFFSET_NV: PathParameter read new PathParameter($907E); public static property PATH_CLIENT_LENGTH_NV: PathParameter read new PathParameter($907F); public static property PATH_FILL_MODE_NV: PathParameter read new PathParameter($9080); public static property PATH_FILL_MASK_NV: PathParameter read new PathParameter($9081); public static property PATH_FILL_COVER_MODE_NV: PathParameter read new PathParameter($9082); public static property PATH_STROKE_COVER_MODE_NV: PathParameter read new PathParameter($9083); public static property PATH_STROKE_MASK_NV: PathParameter read new PathParameter($9084); public static property PATH_OBJECT_BOUNDING_BOX_NV: PathParameter read new PathParameter($908A); public static property PATH_COMMAND_COUNT_NV: PathParameter read new PathParameter($909D); public static property PATH_COORD_COUNT_NV: PathParameter read new PathParameter($909E); public static property PATH_DASH_ARRAY_COUNT_NV: PathParameter read new PathParameter($909F); public static property PATH_COMPUTED_LENGTH_NV: PathParameter read new PathParameter($90A0); public static property PATH_FILL_BOUNDING_BOX_NV: PathParameter read new PathParameter($90A1); public static property PATH_STROKE_BOUNDING_BOX_NV: PathParameter read new PathParameter($90A2); public static property PATH_DASH_OFFSET_RESET_NV: PathParameter read new PathParameter($90B4); public function ToString: string; override; begin if self.val = UInt32($9075) then Result := 'PATH_STROKE_WIDTH_NV' else if self.val = UInt32($9076) then Result := 'PATH_END_CAPS_NV' else if self.val = UInt32($9077) then Result := 'PATH_INITIAL_END_CAP_NV' else if self.val = UInt32($9078) then Result := 'PATH_TERMINAL_END_CAP_NV' else if self.val = UInt32($9079) then Result := 'PATH_JOIN_STYLE_NV' else if self.val = UInt32($907A) then Result := 'PATH_MITER_LIMIT_NV' else if self.val = UInt32($907B) then Result := 'PATH_DASH_CAPS_NV' else if self.val = UInt32($907C) then Result := 'PATH_INITIAL_DASH_CAP_NV' else if self.val = UInt32($907D) then Result := 'PATH_TERMINAL_DASH_CAP_NV' else if self.val = UInt32($907E) then Result := 'PATH_DASH_OFFSET_NV' else if self.val = UInt32($907F) then Result := 'PATH_CLIENT_LENGTH_NV' else if self.val = UInt32($9080) then Result := 'PATH_FILL_MODE_NV' else if self.val = UInt32($9081) then Result := 'PATH_FILL_MASK_NV' else if self.val = UInt32($9082) then Result := 'PATH_FILL_COVER_MODE_NV' else if self.val = UInt32($9083) then Result := 'PATH_STROKE_COVER_MODE_NV' else if self.val = UInt32($9084) then Result := 'PATH_STROKE_MASK_NV' else if self.val = UInt32($908A) then Result := 'PATH_OBJECT_BOUNDING_BOX_NV' else if self.val = UInt32($909D) then Result := 'PATH_COMMAND_COUNT_NV' else if self.val = UInt32($909E) then Result := 'PATH_COORD_COUNT_NV' else if self.val = UInt32($909F) then Result := 'PATH_DASH_ARRAY_COUNT_NV' else if self.val = UInt32($90A0) then Result := 'PATH_COMPUTED_LENGTH_NV' else if self.val = UInt32($90A1) then Result := 'PATH_FILL_BOUNDING_BOX_NV' else if self.val = UInt32($90A2) then Result := 'PATH_STROKE_BOUNDING_BOX_NV' else if self.val = UInt32($90B4) then Result := 'PATH_DASH_OFFSET_RESET_NV' else Result := $'PathParameter[{self.val}]'; end; end; PathStringFormat = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PATH_FORMAT_SVG_NV: PathStringFormat read new PathStringFormat($9070); public static property PATH_FORMAT_PS_NV: PathStringFormat read new PathStringFormat($9071); public function ToString: string; override; begin if self.val = UInt32($9070) then Result := 'PATH_FORMAT_SVG_NV' else if self.val = UInt32($9071) then Result := 'PATH_FORMAT_PS_NV' else Result := $'PathStringFormat[{self.val}]'; end; end; PathTransformType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NONE: PathTransformType read new PathTransformType($0000); public static property TRANSLATE_X_NV: PathTransformType read new PathTransformType($908E); public static property TRANSLATE_Y_NV: PathTransformType read new PathTransformType($908F); public static property TRANSLATE_2D_NV: PathTransformType read new PathTransformType($9090); public static property TRANSLATE_3D_NV: PathTransformType read new PathTransformType($9091); public static property AFFINE_2D_NV: PathTransformType read new PathTransformType($9092); public static property AFFINE_3D_NV: PathTransformType read new PathTransformType($9094); public static property TRANSPOSE_AFFINE_2D_NV: PathTransformType read new PathTransformType($9096); public static property TRANSPOSE_AFFINE_3D_NV: PathTransformType read new PathTransformType($9098); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'NONE' else if self.val = UInt32($908E) then Result := 'TRANSLATE_X_NV' else if self.val = UInt32($908F) then Result := 'TRANSLATE_Y_NV' else if self.val = UInt32($9090) then Result := 'TRANSLATE_2D_NV' else if self.val = UInt32($9091) then Result := 'TRANSLATE_3D_NV' else if self.val = UInt32($9092) then Result := 'AFFINE_2D_NV' else if self.val = UInt32($9094) then Result := 'AFFINE_3D_NV' else if self.val = UInt32($9096) then Result := 'TRANSPOSE_AFFINE_2D_NV' else if self.val = UInt32($9098) then Result := 'TRANSPOSE_AFFINE_3D_NV' else Result := $'PathTransformType[{self.val}]'; end; end; PipelineParameterName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ACTIVE_PROGRAM: PipelineParameterName read new PipelineParameterName($8259); public static property FRAGMENT_SHADER: PipelineParameterName read new PipelineParameterName($8B30); public static property VERTEX_SHADER: PipelineParameterName read new PipelineParameterName($8B31); public static property INFO_LOG_LENGTH: PipelineParameterName read new PipelineParameterName($8B84); public static property GEOMETRY_SHADER: PipelineParameterName read new PipelineParameterName($8DD9); public static property TESS_EVALUATION_SHADER: PipelineParameterName read new PipelineParameterName($8E87); public static property TESS_CONTROL_SHADER: PipelineParameterName read new PipelineParameterName($8E88); public function ToString: string; override; begin if self.val = UInt32($8259) then Result := 'ACTIVE_PROGRAM' else if self.val = UInt32($8B30) then Result := 'FRAGMENT_SHADER' else if self.val = UInt32($8B31) then Result := 'VERTEX_SHADER' else if self.val = UInt32($8B84) then Result := 'INFO_LOG_LENGTH' else if self.val = UInt32($8DD9) then Result := 'GEOMETRY_SHADER' else if self.val = UInt32($8E87) then Result := 'TESS_EVALUATION_SHADER' else if self.val = UInt32($8E88) then Result := 'TESS_CONTROL_SHADER' else Result := $'PipelineParameterName[{self.val}]'; end; end; PipeParticipationTypeFlags = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property DISPLAY_PIPE_SGIX: PipeParticipationTypeFlags read new PipeParticipationTypeFlags($0001); public static property RENDER_PIPE_SGIX: PipeParticipationTypeFlags read new PipeParticipationTypeFlags($0002); public static function operator+(f1,f2: PipeParticipationTypeFlags) := new PipeParticipationTypeFlags(f1.val or f2.val); public static function operator or(f1,f2: PipeParticipationTypeFlags) := f1+f2; public property HAS_FLAG_DISPLAY_PIPE_SGIX: boolean read self.val and $0001 <> 0; public property HAS_FLAG_RENDER_PIPE_SGIX: boolean read self.val and $0002 <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0001) = UInt32($0001) then res += 'DISPLAY_PIPE_SGIX+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'RENDER_PIPE_SGIX+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'PipeParticipationTypeFlags[{self.val}]'; end; end; PixelCopyType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property COLOR: PixelCopyType read new PixelCopyType($1800); public static property COLOR_EXT: PixelCopyType read new PixelCopyType($1800); public static property DEPTH: PixelCopyType read new PixelCopyType($1801); public static property DEPTH_EXT: PixelCopyType read new PixelCopyType($1801); public static property STENCIL: PixelCopyType read new PixelCopyType($1802); public static property STENCIL_EXT: PixelCopyType read new PixelCopyType($1802); public function ToString: string; override; begin if self.val = UInt32($1800) then Result := 'COLOR' else if self.val = UInt32($1800) then Result := 'COLOR_EXT' else if self.val = UInt32($1801) then Result := 'DEPTH' else if self.val = UInt32($1801) then Result := 'DEPTH_EXT' else if self.val = UInt32($1802) then Result := 'STENCIL' else if self.val = UInt32($1802) then Result := 'STENCIL_EXT' else Result := $'PixelCopyType[{self.val}]'; end; end; PixelFormat = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property UNSIGNED_SHORT: PixelFormat read new PixelFormat($1403); public static property UNSIGNED_INT: PixelFormat read new PixelFormat($1405); public static property COLOR_INDEX: PixelFormat read new PixelFormat($1900); public static property STENCIL_INDEX: PixelFormat read new PixelFormat($1901); public static property DEPTH_COMPONENT: PixelFormat read new PixelFormat($1902); public static property RED: PixelFormat read new PixelFormat($1903); public static property RED_EXT: PixelFormat read new PixelFormat($1903); public static property GREEN: PixelFormat read new PixelFormat($1904); public static property BLUE: PixelFormat read new PixelFormat($1905); public static property ALPHA: PixelFormat read new PixelFormat($1906); public static property RGB: PixelFormat read new PixelFormat($1907); public static property RGBA: PixelFormat read new PixelFormat($1908); public static property LUMINANCE: PixelFormat read new PixelFormat($1909); public static property LUMINANCE_ALPHA: PixelFormat read new PixelFormat($190A); public static property ABGR_EXT: PixelFormat read new PixelFormat($8000); public static property CMYK_EXT: PixelFormat read new PixelFormat($800C); public static property CMYKA_EXT: PixelFormat read new PixelFormat($800D); public static property BGR: PixelFormat read new PixelFormat($80E0); public static property BGRA: PixelFormat read new PixelFormat($80E1); public static property YCRCB_422_SGIX: PixelFormat read new PixelFormat($81BB); public static property YCRCB_444_SGIX: PixelFormat read new PixelFormat($81BC); public static property RG: PixelFormat read new PixelFormat($8227); public static property RG_INTEGER: PixelFormat read new PixelFormat($8228); public static property DEPTH_STENCIL: PixelFormat read new PixelFormat($84F9); public static property RED_INTEGER: PixelFormat read new PixelFormat($8D94); public static property GREEN_INTEGER: PixelFormat read new PixelFormat($8D95); public static property BLUE_INTEGER: PixelFormat read new PixelFormat($8D96); public static property RGB_INTEGER: PixelFormat read new PixelFormat($8D98); public static property RGBA_INTEGER: PixelFormat read new PixelFormat($8D99); public static property BGR_INTEGER: PixelFormat read new PixelFormat($8D9A); public static property BGRA_INTEGER: PixelFormat read new PixelFormat($8D9B); public function ToString: string; override; begin if self.val = UInt32($1403) then Result := 'UNSIGNED_SHORT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else if self.val = UInt32($1900) then Result := 'COLOR_INDEX' else if self.val = UInt32($1901) then Result := 'STENCIL_INDEX' else if self.val = UInt32($1902) then Result := 'DEPTH_COMPONENT' else if self.val = UInt32($1903) then Result := 'RED' else if self.val = UInt32($1903) then Result := 'RED_EXT' else if self.val = UInt32($1904) then Result := 'GREEN' else if self.val = UInt32($1905) then Result := 'BLUE' else if self.val = UInt32($1906) then Result := 'ALPHA' else if self.val = UInt32($1907) then Result := 'RGB' else if self.val = UInt32($1908) then Result := 'RGBA' else if self.val = UInt32($1909) then Result := 'LUMINANCE' else if self.val = UInt32($190A) then Result := 'LUMINANCE_ALPHA' else if self.val = UInt32($8000) then Result := 'ABGR_EXT' else if self.val = UInt32($800C) then Result := 'CMYK_EXT' else if self.val = UInt32($800D) then Result := 'CMYKA_EXT' else if self.val = UInt32($80E0) then Result := 'BGR' else if self.val = UInt32($80E1) then Result := 'BGRA' else if self.val = UInt32($81BB) then Result := 'YCRCB_422_SGIX' else if self.val = UInt32($81BC) then Result := 'YCRCB_444_SGIX' else if self.val = UInt32($8227) then Result := 'RG' else if self.val = UInt32($8228) then Result := 'RG_INTEGER' else if self.val = UInt32($84F9) then Result := 'DEPTH_STENCIL' else if self.val = UInt32($8D94) then Result := 'RED_INTEGER' else if self.val = UInt32($8D95) then Result := 'GREEN_INTEGER' else if self.val = UInt32($8D96) then Result := 'BLUE_INTEGER' else if self.val = UInt32($8D98) then Result := 'RGB_INTEGER' else if self.val = UInt32($8D99) then Result := 'RGBA_INTEGER' else if self.val = UInt32($8D9A) then Result := 'BGR_INTEGER' else if self.val = UInt32($8D9B) then Result := 'BGRA_INTEGER' else Result := $'PixelFormat[{self.val}]'; end; end; PixelMap = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PIXEL_MAP_I_TO_I: PixelMap read new PixelMap($0C70); public static property PIXEL_MAP_S_TO_S: PixelMap read new PixelMap($0C71); public static property PIXEL_MAP_I_TO_R: PixelMap read new PixelMap($0C72); public static property PIXEL_MAP_I_TO_G: PixelMap read new PixelMap($0C73); public static property PIXEL_MAP_I_TO_B: PixelMap read new PixelMap($0C74); public static property PIXEL_MAP_I_TO_A: PixelMap read new PixelMap($0C75); public static property PIXEL_MAP_R_TO_R: PixelMap read new PixelMap($0C76); public static property PIXEL_MAP_G_TO_G: PixelMap read new PixelMap($0C77); public static property PIXEL_MAP_B_TO_B: PixelMap read new PixelMap($0C78); public static property PIXEL_MAP_A_TO_A: PixelMap read new PixelMap($0C79); public function ToString: string; override; begin if self.val = UInt32($0C70) then Result := 'PIXEL_MAP_I_TO_I' else if self.val = UInt32($0C71) then Result := 'PIXEL_MAP_S_TO_S' else if self.val = UInt32($0C72) then Result := 'PIXEL_MAP_I_TO_R' else if self.val = UInt32($0C73) then Result := 'PIXEL_MAP_I_TO_G' else if self.val = UInt32($0C74) then Result := 'PIXEL_MAP_I_TO_B' else if self.val = UInt32($0C75) then Result := 'PIXEL_MAP_I_TO_A' else if self.val = UInt32($0C76) then Result := 'PIXEL_MAP_R_TO_R' else if self.val = UInt32($0C77) then Result := 'PIXEL_MAP_G_TO_G' else if self.val = UInt32($0C78) then Result := 'PIXEL_MAP_B_TO_B' else if self.val = UInt32($0C79) then Result := 'PIXEL_MAP_A_TO_A' else Result := $'PixelMap[{self.val}]'; end; end; PixelStoreParameter = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property UNPACK_SWAP_BYTES: PixelStoreParameter read new PixelStoreParameter($0CF0); public static property UNPACK_LSB_FIRST: PixelStoreParameter read new PixelStoreParameter($0CF1); public static property UNPACK_ROW_LENGTH: PixelStoreParameter read new PixelStoreParameter($0CF2); public static property UNPACK_ROW_LENGTH_EXT: PixelStoreParameter read new PixelStoreParameter($0CF2); public static property UNPACK_SKIP_ROWS: PixelStoreParameter read new PixelStoreParameter($0CF3); public static property UNPACK_SKIP_ROWS_EXT: PixelStoreParameter read new PixelStoreParameter($0CF3); public static property UNPACK_SKIP_PIXELS: PixelStoreParameter read new PixelStoreParameter($0CF4); public static property UNPACK_SKIP_PIXELS_EXT: PixelStoreParameter read new PixelStoreParameter($0CF4); public static property UNPACK_ALIGNMENT: PixelStoreParameter read new PixelStoreParameter($0CF5); public static property PACK_SWAP_BYTES: PixelStoreParameter read new PixelStoreParameter($0D00); public static property PACK_LSB_FIRST: PixelStoreParameter read new PixelStoreParameter($0D01); public static property PACK_ROW_LENGTH: PixelStoreParameter read new PixelStoreParameter($0D02); public static property PACK_SKIP_ROWS: PixelStoreParameter read new PixelStoreParameter($0D03); public static property PACK_SKIP_PIXELS: PixelStoreParameter read new PixelStoreParameter($0D04); public static property PACK_ALIGNMENT: PixelStoreParameter read new PixelStoreParameter($0D05); public static property PACK_SKIP_IMAGES: PixelStoreParameter read new PixelStoreParameter($806B); public static property PACK_SKIP_IMAGES_EXT: PixelStoreParameter read new PixelStoreParameter($806B); public static property PACK_IMAGE_HEIGHT: PixelStoreParameter read new PixelStoreParameter($806C); public static property PACK_IMAGE_HEIGHT_EXT: PixelStoreParameter read new PixelStoreParameter($806C); public static property UNPACK_SKIP_IMAGES: PixelStoreParameter read new PixelStoreParameter($806D); public static property UNPACK_SKIP_IMAGES_EXT: PixelStoreParameter read new PixelStoreParameter($806D); public static property UNPACK_IMAGE_HEIGHT: PixelStoreParameter read new PixelStoreParameter($806E); public static property UNPACK_IMAGE_HEIGHT_EXT: PixelStoreParameter read new PixelStoreParameter($806E); public static property PACK_SKIP_VOLUMES_SGIS: PixelStoreParameter read new PixelStoreParameter($8130); public static property PACK_IMAGE_DEPTH_SGIS: PixelStoreParameter read new PixelStoreParameter($8131); public static property UNPACK_SKIP_VOLUMES_SGIS: PixelStoreParameter read new PixelStoreParameter($8132); public static property UNPACK_IMAGE_DEPTH_SGIS: PixelStoreParameter read new PixelStoreParameter($8133); public static property PIXEL_TILE_WIDTH_SGIX: PixelStoreParameter read new PixelStoreParameter($8140); public static property PIXEL_TILE_HEIGHT_SGIX: PixelStoreParameter read new PixelStoreParameter($8141); public static property PIXEL_TILE_GRID_WIDTH_SGIX: PixelStoreParameter read new PixelStoreParameter($8142); public static property PIXEL_TILE_GRID_HEIGHT_SGIX: PixelStoreParameter read new PixelStoreParameter($8143); public static property PIXEL_TILE_GRID_DEPTH_SGIX: PixelStoreParameter read new PixelStoreParameter($8144); public static property PIXEL_TILE_CACHE_SIZE_SGIX: PixelStoreParameter read new PixelStoreParameter($8145); public static property PACK_RESAMPLE_SGIX: PixelStoreParameter read new PixelStoreParameter($842E); public static property UNPACK_RESAMPLE_SGIX: PixelStoreParameter read new PixelStoreParameter($842F); public static property PACK_SUBSAMPLE_RATE_SGIX: PixelStoreParameter read new PixelStoreParameter($85A0); public static property UNPACK_SUBSAMPLE_RATE_SGIX: PixelStoreParameter read new PixelStoreParameter($85A1); public static property PACK_RESAMPLE_OML: PixelStoreParameter read new PixelStoreParameter($8984); public static property UNPACK_RESAMPLE_OML: PixelStoreParameter read new PixelStoreParameter($8985); public function ToString: string; override; begin if self.val = UInt32($0CF0) then Result := 'UNPACK_SWAP_BYTES' else if self.val = UInt32($0CF1) then Result := 'UNPACK_LSB_FIRST' else if self.val = UInt32($0CF2) then Result := 'UNPACK_ROW_LENGTH' else if self.val = UInt32($0CF2) then Result := 'UNPACK_ROW_LENGTH_EXT' else if self.val = UInt32($0CF3) then Result := 'UNPACK_SKIP_ROWS' else if self.val = UInt32($0CF3) then Result := 'UNPACK_SKIP_ROWS_EXT' else if self.val = UInt32($0CF4) then Result := 'UNPACK_SKIP_PIXELS' else if self.val = UInt32($0CF4) then Result := 'UNPACK_SKIP_PIXELS_EXT' else if self.val = UInt32($0CF5) then Result := 'UNPACK_ALIGNMENT' else if self.val = UInt32($0D00) then Result := 'PACK_SWAP_BYTES' else if self.val = UInt32($0D01) then Result := 'PACK_LSB_FIRST' else if self.val = UInt32($0D02) then Result := 'PACK_ROW_LENGTH' else if self.val = UInt32($0D03) then Result := 'PACK_SKIP_ROWS' else if self.val = UInt32($0D04) then Result := 'PACK_SKIP_PIXELS' else if self.val = UInt32($0D05) then Result := 'PACK_ALIGNMENT' else if self.val = UInt32($806B) then Result := 'PACK_SKIP_IMAGES' else if self.val = UInt32($806B) then Result := 'PACK_SKIP_IMAGES_EXT' else if self.val = UInt32($806C) then Result := 'PACK_IMAGE_HEIGHT' else if self.val = UInt32($806C) then Result := 'PACK_IMAGE_HEIGHT_EXT' else if self.val = UInt32($806D) then Result := 'UNPACK_SKIP_IMAGES' else if self.val = UInt32($806D) then Result := 'UNPACK_SKIP_IMAGES_EXT' else if self.val = UInt32($806E) then Result := 'UNPACK_IMAGE_HEIGHT' else if self.val = UInt32($806E) then Result := 'UNPACK_IMAGE_HEIGHT_EXT' else if self.val = UInt32($8130) then Result := 'PACK_SKIP_VOLUMES_SGIS' else if self.val = UInt32($8131) then Result := 'PACK_IMAGE_DEPTH_SGIS' else if self.val = UInt32($8132) then Result := 'UNPACK_SKIP_VOLUMES_SGIS' else if self.val = UInt32($8133) then Result := 'UNPACK_IMAGE_DEPTH_SGIS' else if self.val = UInt32($8140) then Result := 'PIXEL_TILE_WIDTH_SGIX' else if self.val = UInt32($8141) then Result := 'PIXEL_TILE_HEIGHT_SGIX' else if self.val = UInt32($8142) then Result := 'PIXEL_TILE_GRID_WIDTH_SGIX' else if self.val = UInt32($8143) then Result := 'PIXEL_TILE_GRID_HEIGHT_SGIX' else if self.val = UInt32($8144) then Result := 'PIXEL_TILE_GRID_DEPTH_SGIX' else if self.val = UInt32($8145) then Result := 'PIXEL_TILE_CACHE_SIZE_SGIX' else if self.val = UInt32($842E) then Result := 'PACK_RESAMPLE_SGIX' else if self.val = UInt32($842F) then Result := 'UNPACK_RESAMPLE_SGIX' else if self.val = UInt32($85A0) then Result := 'PACK_SUBSAMPLE_RATE_SGIX' else if self.val = UInt32($85A1) then Result := 'UNPACK_SUBSAMPLE_RATE_SGIX' else if self.val = UInt32($8984) then Result := 'PACK_RESAMPLE_OML' else if self.val = UInt32($8985) then Result := 'UNPACK_RESAMPLE_OML' else Result := $'PixelStoreParameter[{self.val}]'; end; end; PixelTransferParameter = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property MAP_COLOR: PixelTransferParameter read new PixelTransferParameter($0D10); public static property MAP_STENCIL: PixelTransferParameter read new PixelTransferParameter($0D11); public static property INDEX_SHIFT: PixelTransferParameter read new PixelTransferParameter($0D12); public static property INDEX_OFFSET: PixelTransferParameter read new PixelTransferParameter($0D13); public static property RED_SCALE: PixelTransferParameter read new PixelTransferParameter($0D14); public static property RED_BIAS: PixelTransferParameter read new PixelTransferParameter($0D15); public static property GREEN_SCALE: PixelTransferParameter read new PixelTransferParameter($0D18); public static property GREEN_BIAS: PixelTransferParameter read new PixelTransferParameter($0D19); public static property BLUE_SCALE: PixelTransferParameter read new PixelTransferParameter($0D1A); public static property BLUE_BIAS: PixelTransferParameter read new PixelTransferParameter($0D1B); public static property ALPHA_SCALE: PixelTransferParameter read new PixelTransferParameter($0D1C); public static property ALPHA_BIAS: PixelTransferParameter read new PixelTransferParameter($0D1D); public static property DEPTH_SCALE: PixelTransferParameter read new PixelTransferParameter($0D1E); public static property DEPTH_BIAS: PixelTransferParameter read new PixelTransferParameter($0D1F); public static property POST_CONVOLUTION_RED_SCALE: PixelTransferParameter read new PixelTransferParameter($801C); public static property POST_CONVOLUTION_RED_SCALE_EXT: PixelTransferParameter read new PixelTransferParameter($801C); public static property POST_CONVOLUTION_GREEN_SCALE: PixelTransferParameter read new PixelTransferParameter($801D); public static property POST_CONVOLUTION_GREEN_SCALE_EXT: PixelTransferParameter read new PixelTransferParameter($801D); public static property POST_CONVOLUTION_BLUE_SCALE: PixelTransferParameter read new PixelTransferParameter($801E); public static property POST_CONVOLUTION_BLUE_SCALE_EXT: PixelTransferParameter read new PixelTransferParameter($801E); public static property POST_CONVOLUTION_ALPHA_SCALE: PixelTransferParameter read new PixelTransferParameter($801F); public static property POST_CONVOLUTION_ALPHA_SCALE_EXT: PixelTransferParameter read new PixelTransferParameter($801F); public static property POST_CONVOLUTION_RED_BIAS: PixelTransferParameter read new PixelTransferParameter($8020); public static property POST_CONVOLUTION_RED_BIAS_EXT: PixelTransferParameter read new PixelTransferParameter($8020); public static property POST_CONVOLUTION_GREEN_BIAS: PixelTransferParameter read new PixelTransferParameter($8021); public static property POST_CONVOLUTION_GREEN_BIAS_EXT: PixelTransferParameter read new PixelTransferParameter($8021); public static property POST_CONVOLUTION_BLUE_BIAS: PixelTransferParameter read new PixelTransferParameter($8022); public static property POST_CONVOLUTION_BLUE_BIAS_EXT: PixelTransferParameter read new PixelTransferParameter($8022); public static property POST_CONVOLUTION_ALPHA_BIAS: PixelTransferParameter read new PixelTransferParameter($8023); public static property POST_CONVOLUTION_ALPHA_BIAS_EXT: PixelTransferParameter read new PixelTransferParameter($8023); public static property POST_COLOR_MATRIX_RED_SCALE: PixelTransferParameter read new PixelTransferParameter($80B4); public static property POST_COLOR_MATRIX_RED_SCALE_SGI: PixelTransferParameter read new PixelTransferParameter($80B4); public static property POST_COLOR_MATRIX_GREEN_SCALE: PixelTransferParameter read new PixelTransferParameter($80B5); public static property POST_COLOR_MATRIX_GREEN_SCALE_SGI: PixelTransferParameter read new PixelTransferParameter($80B5); public static property POST_COLOR_MATRIX_BLUE_SCALE: PixelTransferParameter read new PixelTransferParameter($80B6); public static property POST_COLOR_MATRIX_BLUE_SCALE_SGI: PixelTransferParameter read new PixelTransferParameter($80B6); public static property POST_COLOR_MATRIX_ALPHA_SCALE: PixelTransferParameter read new PixelTransferParameter($80B7); public static property POST_COLOR_MATRIX_ALPHA_SCALE_SGI: PixelTransferParameter read new PixelTransferParameter($80B7); public static property POST_COLOR_MATRIX_RED_BIAS: PixelTransferParameter read new PixelTransferParameter($80B8); public static property POST_COLOR_MATRIX_RED_BIAS_SGI: PixelTransferParameter read new PixelTransferParameter($80B8); public static property POST_COLOR_MATRIX_GREEN_BIAS: PixelTransferParameter read new PixelTransferParameter($80B9); public static property POST_COLOR_MATRIX_GREEN_BIAS_SGI: PixelTransferParameter read new PixelTransferParameter($80B9); public static property POST_COLOR_MATRIX_BLUE_BIAS: PixelTransferParameter read new PixelTransferParameter($80BA); public static property POST_COLOR_MATRIX_BLUE_BIAS_SGI: PixelTransferParameter read new PixelTransferParameter($80BA); public static property POST_COLOR_MATRIX_ALPHA_BIAS: PixelTransferParameter read new PixelTransferParameter($80BB); public static property POST_COLOR_MATRIX_ALPHA_BIAS_SGI: PixelTransferParameter read new PixelTransferParameter($80BB); public function ToString: string; override; begin if self.val = UInt32($0D10) then Result := 'MAP_COLOR' else if self.val = UInt32($0D11) then Result := 'MAP_STENCIL' else if self.val = UInt32($0D12) then Result := 'INDEX_SHIFT' else if self.val = UInt32($0D13) then Result := 'INDEX_OFFSET' else if self.val = UInt32($0D14) then Result := 'RED_SCALE' else if self.val = UInt32($0D15) then Result := 'RED_BIAS' else if self.val = UInt32($0D18) then Result := 'GREEN_SCALE' else if self.val = UInt32($0D19) then Result := 'GREEN_BIAS' else if self.val = UInt32($0D1A) then Result := 'BLUE_SCALE' else if self.val = UInt32($0D1B) then Result := 'BLUE_BIAS' else if self.val = UInt32($0D1C) then Result := 'ALPHA_SCALE' else if self.val = UInt32($0D1D) then Result := 'ALPHA_BIAS' else if self.val = UInt32($0D1E) then Result := 'DEPTH_SCALE' else if self.val = UInt32($0D1F) then Result := 'DEPTH_BIAS' else if self.val = UInt32($801C) then Result := 'POST_CONVOLUTION_RED_SCALE' else if self.val = UInt32($801C) then Result := 'POST_CONVOLUTION_RED_SCALE_EXT' else if self.val = UInt32($801D) then Result := 'POST_CONVOLUTION_GREEN_SCALE' else if self.val = UInt32($801D) then Result := 'POST_CONVOLUTION_GREEN_SCALE_EXT' else if self.val = UInt32($801E) then Result := 'POST_CONVOLUTION_BLUE_SCALE' else if self.val = UInt32($801E) then Result := 'POST_CONVOLUTION_BLUE_SCALE_EXT' else if self.val = UInt32($801F) then Result := 'POST_CONVOLUTION_ALPHA_SCALE' else if self.val = UInt32($801F) then Result := 'POST_CONVOLUTION_ALPHA_SCALE_EXT' else if self.val = UInt32($8020) then Result := 'POST_CONVOLUTION_RED_BIAS' else if self.val = UInt32($8020) then Result := 'POST_CONVOLUTION_RED_BIAS_EXT' else if self.val = UInt32($8021) then Result := 'POST_CONVOLUTION_GREEN_BIAS' else if self.val = UInt32($8021) then Result := 'POST_CONVOLUTION_GREEN_BIAS_EXT' else if self.val = UInt32($8022) then Result := 'POST_CONVOLUTION_BLUE_BIAS' else if self.val = UInt32($8022) then Result := 'POST_CONVOLUTION_BLUE_BIAS_EXT' else if self.val = UInt32($8023) then Result := 'POST_CONVOLUTION_ALPHA_BIAS' else if self.val = UInt32($8023) then Result := 'POST_CONVOLUTION_ALPHA_BIAS_EXT' else if self.val = UInt32($80B4) then Result := 'POST_COLOR_MATRIX_RED_SCALE' else if self.val = UInt32($80B4) then Result := 'POST_COLOR_MATRIX_RED_SCALE_SGI' else if self.val = UInt32($80B5) then Result := 'POST_COLOR_MATRIX_GREEN_SCALE' else if self.val = UInt32($80B5) then Result := 'POST_COLOR_MATRIX_GREEN_SCALE_SGI' else if self.val = UInt32($80B6) then Result := 'POST_COLOR_MATRIX_BLUE_SCALE' else if self.val = UInt32($80B6) then Result := 'POST_COLOR_MATRIX_BLUE_SCALE_SGI' else if self.val = UInt32($80B7) then Result := 'POST_COLOR_MATRIX_ALPHA_SCALE' else if self.val = UInt32($80B7) then Result := 'POST_COLOR_MATRIX_ALPHA_SCALE_SGI' else if self.val = UInt32($80B8) then Result := 'POST_COLOR_MATRIX_RED_BIAS' else if self.val = UInt32($80B8) then Result := 'POST_COLOR_MATRIX_RED_BIAS_SGI' else if self.val = UInt32($80B9) then Result := 'POST_COLOR_MATRIX_GREEN_BIAS' else if self.val = UInt32($80B9) then Result := 'POST_COLOR_MATRIX_GREEN_BIAS_SGI' else if self.val = UInt32($80BA) then Result := 'POST_COLOR_MATRIX_BLUE_BIAS' else if self.val = UInt32($80BA) then Result := 'POST_COLOR_MATRIX_BLUE_BIAS_SGI' else if self.val = UInt32($80BB) then Result := 'POST_COLOR_MATRIX_ALPHA_BIAS' else if self.val = UInt32($80BB) then Result := 'POST_COLOR_MATRIX_ALPHA_BIAS_SGI' else Result := $'PixelTransferParameter[{self.val}]'; end; end; PixelType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BYTE: PixelType read new PixelType($1400); public static property UNSIGNED_BYTE: PixelType read new PixelType($1401); public static property SHORT: PixelType read new PixelType($1402); public static property UNSIGNED_SHORT: PixelType read new PixelType($1403); public static property INT: PixelType read new PixelType($1404); public static property UNSIGNED_INT: PixelType read new PixelType($1405); public static property FLOAT: PixelType read new PixelType($1406); public static property BITMAP: PixelType read new PixelType($1A00); public static property UNSIGNED_BYTE_3_3_2: PixelType read new PixelType($8032); public static property UNSIGNED_BYTE_3_3_2_EXT: PixelType read new PixelType($8032); public static property UNSIGNED_SHORT_4_4_4_4: PixelType read new PixelType($8033); public static property UNSIGNED_SHORT_4_4_4_4_EXT: PixelType read new PixelType($8033); public static property UNSIGNED_SHORT_5_5_5_1: PixelType read new PixelType($8034); public static property UNSIGNED_SHORT_5_5_5_1_EXT: PixelType read new PixelType($8034); public static property UNSIGNED_INT_8_8_8_8: PixelType read new PixelType($8035); public static property UNSIGNED_INT_8_8_8_8_EXT: PixelType read new PixelType($8035); public static property UNSIGNED_INT_10_10_10_2: PixelType read new PixelType($8036); public static property UNSIGNED_INT_10_10_10_2_EXT: PixelType read new PixelType($8036); public function ToString: string; override; begin if self.val = UInt32($1400) then Result := 'BYTE' else if self.val = UInt32($1401) then Result := 'UNSIGNED_BYTE' else if self.val = UInt32($1402) then Result := 'SHORT' else if self.val = UInt32($1403) then Result := 'UNSIGNED_SHORT' else if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($1A00) then Result := 'BITMAP' else if self.val = UInt32($8032) then Result := 'UNSIGNED_BYTE_3_3_2' else if self.val = UInt32($8032) then Result := 'UNSIGNED_BYTE_3_3_2_EXT' else if self.val = UInt32($8033) then Result := 'UNSIGNED_SHORT_4_4_4_4' else if self.val = UInt32($8033) then Result := 'UNSIGNED_SHORT_4_4_4_4_EXT' else if self.val = UInt32($8034) then Result := 'UNSIGNED_SHORT_5_5_5_1' else if self.val = UInt32($8034) then Result := 'UNSIGNED_SHORT_5_5_5_1_EXT' else if self.val = UInt32($8035) then Result := 'UNSIGNED_INT_8_8_8_8' else if self.val = UInt32($8035) then Result := 'UNSIGNED_INT_8_8_8_8_EXT' else if self.val = UInt32($8036) then Result := 'UNSIGNED_INT_10_10_10_2' else if self.val = UInt32($8036) then Result := 'UNSIGNED_INT_10_10_10_2_EXT' else Result := $'PixelType[{self.val}]'; end; end; PolygonMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property POINT: PolygonMode read new PolygonMode($1B00); public static property LINE: PolygonMode read new PolygonMode($1B01); public static property FILL: PolygonMode read new PolygonMode($1B02); public function ToString: string; override; begin if self.val = UInt32($1B00) then Result := 'POINT' else if self.val = UInt32($1B01) then Result := 'LINE' else if self.val = UInt32($1B02) then Result := 'FILL' else Result := $'PolygonMode[{self.val}]'; end; end; PrecisionType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property LOW_FLOAT: PrecisionType read new PrecisionType($8DF0); public static property MEDIUM_FLOAT: PrecisionType read new PrecisionType($8DF1); public static property HIGH_FLOAT: PrecisionType read new PrecisionType($8DF2); public static property LOW_INT: PrecisionType read new PrecisionType($8DF3); public static property MEDIUM_INT: PrecisionType read new PrecisionType($8DF4); public static property HIGH_INT: PrecisionType read new PrecisionType($8DF5); public function ToString: string; override; begin if self.val = UInt32($8DF0) then Result := 'LOW_FLOAT' else if self.val = UInt32($8DF1) then Result := 'MEDIUM_FLOAT' else if self.val = UInt32($8DF2) then Result := 'HIGH_FLOAT' else if self.val = UInt32($8DF3) then Result := 'LOW_INT' else if self.val = UInt32($8DF4) then Result := 'MEDIUM_INT' else if self.val = UInt32($8DF5) then Result := 'HIGH_INT' else Result := $'PrecisionType[{self.val}]'; end; end; PrimitiveType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property POINTS: PrimitiveType read new PrimitiveType($0000); public static property LINES: PrimitiveType read new PrimitiveType($0001); public static property LINE_LOOP: PrimitiveType read new PrimitiveType($0002); public static property LINE_STRIP: PrimitiveType read new PrimitiveType($0003); public static property TRIANGLES: PrimitiveType read new PrimitiveType($0004); public static property TRIANGLE_STRIP: PrimitiveType read new PrimitiveType($0005); public static property TRIANGLE_FAN: PrimitiveType read new PrimitiveType($0006); public static property QUADS: PrimitiveType read new PrimitiveType($0007); public static property QUADS_EXT: PrimitiveType read new PrimitiveType($0007); public static property QUAD_STRIP: PrimitiveType read new PrimitiveType($0008); public static property POLYGON: PrimitiveType read new PrimitiveType($0009); public static property LINES_ADJACENCY: PrimitiveType read new PrimitiveType($000A); public static property LINES_ADJACENCY_ARB: PrimitiveType read new PrimitiveType($000A); public static property LINES_ADJACENCY_EXT: PrimitiveType read new PrimitiveType($000A); public static property LINE_STRIP_ADJACENCY: PrimitiveType read new PrimitiveType($000B); public static property LINE_STRIP_ADJACENCY_ARB: PrimitiveType read new PrimitiveType($000B); public static property LINE_STRIP_ADJACENCY_EXT: PrimitiveType read new PrimitiveType($000B); public static property TRIANGLES_ADJACENCY: PrimitiveType read new PrimitiveType($000C); public static property TRIANGLES_ADJACENCY_ARB: PrimitiveType read new PrimitiveType($000C); public static property TRIANGLES_ADJACENCY_EXT: PrimitiveType read new PrimitiveType($000C); public static property TRIANGLE_STRIP_ADJACENCY: PrimitiveType read new PrimitiveType($000D); public static property TRIANGLE_STRIP_ADJACENCY_ARB: PrimitiveType read new PrimitiveType($000D); public static property TRIANGLE_STRIP_ADJACENCY_EXT: PrimitiveType read new PrimitiveType($000D); public static property PATCHES: PrimitiveType read new PrimitiveType($000E); public static property PATCHES_EXT: PrimitiveType read new PrimitiveType($000E); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'POINTS' else if self.val = UInt32($0001) then Result := 'LINES' else if self.val = UInt32($0002) then Result := 'LINE_LOOP' else if self.val = UInt32($0003) then Result := 'LINE_STRIP' else if self.val = UInt32($0004) then Result := 'TRIANGLES' else if self.val = UInt32($0005) then Result := 'TRIANGLE_STRIP' else if self.val = UInt32($0006) then Result := 'TRIANGLE_FAN' else if self.val = UInt32($0007) then Result := 'QUADS' else if self.val = UInt32($0007) then Result := 'QUADS_EXT' else if self.val = UInt32($0008) then Result := 'QUAD_STRIP' else if self.val = UInt32($0009) then Result := 'POLYGON' else if self.val = UInt32($000A) then Result := 'LINES_ADJACENCY' else if self.val = UInt32($000A) then Result := 'LINES_ADJACENCY_ARB' else if self.val = UInt32($000A) then Result := 'LINES_ADJACENCY_EXT' else if self.val = UInt32($000B) then Result := 'LINE_STRIP_ADJACENCY' else if self.val = UInt32($000B) then Result := 'LINE_STRIP_ADJACENCY_ARB' else if self.val = UInt32($000B) then Result := 'LINE_STRIP_ADJACENCY_EXT' else if self.val = UInt32($000C) then Result := 'TRIANGLES_ADJACENCY' else if self.val = UInt32($000C) then Result := 'TRIANGLES_ADJACENCY_ARB' else if self.val = UInt32($000C) then Result := 'TRIANGLES_ADJACENCY_EXT' else if self.val = UInt32($000D) then Result := 'TRIANGLE_STRIP_ADJACENCY' else if self.val = UInt32($000D) then Result := 'TRIANGLE_STRIP_ADJACENCY_ARB' else if self.val = UInt32($000D) then Result := 'TRIANGLE_STRIP_ADJACENCY_EXT' else if self.val = UInt32($000E) then Result := 'PATCHES' else if self.val = UInt32($000E) then Result := 'PATCHES_EXT' else Result := $'PrimitiveType[{self.val}]'; end; end; ProgramFormat = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PROGRAM_FORMAT_ASCII_ARB: ProgramFormat read new ProgramFormat($8875); public function ToString: string; override; begin if self.val = UInt32($8875) then Result := 'PROGRAM_FORMAT_ASCII_ARB' else Result := $'ProgramFormat[{self.val}]'; end; end; ProgramInterface = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TRANSFORM_FEEDBACK_BUFFER: ProgramInterface read new ProgramInterface($8C8E); public static property UNIFORM: ProgramInterface read new ProgramInterface($92E1); public static property UNIFORM_BLOCK: ProgramInterface read new ProgramInterface($92E2); public static property PROGRAM_INPUT: ProgramInterface read new ProgramInterface($92E3); public static property PROGRAM_OUTPUT: ProgramInterface read new ProgramInterface($92E4); public static property BUFFER_VARIABLE: ProgramInterface read new ProgramInterface($92E5); public static property SHADER_STORAGE_BLOCK: ProgramInterface read new ProgramInterface($92E6); public static property VERTEX_SUBROUTINE: ProgramInterface read new ProgramInterface($92E8); public static property TESS_CONTROL_SUBROUTINE: ProgramInterface read new ProgramInterface($92E9); public static property TESS_EVALUATION_SUBROUTINE: ProgramInterface read new ProgramInterface($92EA); public static property GEOMETRY_SUBROUTINE: ProgramInterface read new ProgramInterface($92EB); public static property FRAGMENT_SUBROUTINE: ProgramInterface read new ProgramInterface($92EC); public static property COMPUTE_SUBROUTINE: ProgramInterface read new ProgramInterface($92ED); public static property VERTEX_SUBROUTINE_UNIFORM: ProgramInterface read new ProgramInterface($92EE); public static property TESS_CONTROL_SUBROUTINE_UNIFORM: ProgramInterface read new ProgramInterface($92EF); public static property TESS_EVALUATION_SUBROUTINE_UNIFORM: ProgramInterface read new ProgramInterface($92F0); public static property GEOMETRY_SUBROUTINE_UNIFORM: ProgramInterface read new ProgramInterface($92F1); public static property FRAGMENT_SUBROUTINE_UNIFORM: ProgramInterface read new ProgramInterface($92F2); public static property COMPUTE_SUBROUTINE_UNIFORM: ProgramInterface read new ProgramInterface($92F3); public static property TRANSFORM_FEEDBACK_VARYING: ProgramInterface read new ProgramInterface($92F4); public function ToString: string; override; begin if self.val = UInt32($8C8E) then Result := 'TRANSFORM_FEEDBACK_BUFFER' else if self.val = UInt32($92E1) then Result := 'UNIFORM' else if self.val = UInt32($92E2) then Result := 'UNIFORM_BLOCK' else if self.val = UInt32($92E3) then Result := 'PROGRAM_INPUT' else if self.val = UInt32($92E4) then Result := 'PROGRAM_OUTPUT' else if self.val = UInt32($92E5) then Result := 'BUFFER_VARIABLE' else if self.val = UInt32($92E6) then Result := 'SHADER_STORAGE_BLOCK' else if self.val = UInt32($92E8) then Result := 'VERTEX_SUBROUTINE' else if self.val = UInt32($92E9) then Result := 'TESS_CONTROL_SUBROUTINE' else if self.val = UInt32($92EA) then Result := 'TESS_EVALUATION_SUBROUTINE' else if self.val = UInt32($92EB) then Result := 'GEOMETRY_SUBROUTINE' else if self.val = UInt32($92EC) then Result := 'FRAGMENT_SUBROUTINE' else if self.val = UInt32($92ED) then Result := 'COMPUTE_SUBROUTINE' else if self.val = UInt32($92EE) then Result := 'VERTEX_SUBROUTINE_UNIFORM' else if self.val = UInt32($92EF) then Result := 'TESS_CONTROL_SUBROUTINE_UNIFORM' else if self.val = UInt32($92F0) then Result := 'TESS_EVALUATION_SUBROUTINE_UNIFORM' else if self.val = UInt32($92F1) then Result := 'GEOMETRY_SUBROUTINE_UNIFORM' else if self.val = UInt32($92F2) then Result := 'FRAGMENT_SUBROUTINE_UNIFORM' else if self.val = UInt32($92F3) then Result := 'COMPUTE_SUBROUTINE_UNIFORM' else if self.val = UInt32($92F4) then Result := 'TRANSFORM_FEEDBACK_VARYING' else Result := $'ProgramInterface[{self.val}]'; end; end; ProgramInterfacePName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ACTIVE_RESOURCES: ProgramInterfacePName read new ProgramInterfacePName($92F5); public static property MAX_NAME_LENGTH: ProgramInterfacePName read new ProgramInterfacePName($92F6); public static property MAX_NUM_ACTIVE_VARIABLES: ProgramInterfacePName read new ProgramInterfacePName($92F7); public static property MAX_NUM_COMPATIBLE_SUBROUTINES: ProgramInterfacePName read new ProgramInterfacePName($92F8); public function ToString: string; override; begin if self.val = UInt32($92F5) then Result := 'ACTIVE_RESOURCES' else if self.val = UInt32($92F6) then Result := 'MAX_NAME_LENGTH' else if self.val = UInt32($92F7) then Result := 'MAX_NUM_ACTIVE_VARIABLES' else if self.val = UInt32($92F8) then Result := 'MAX_NUM_COMPATIBLE_SUBROUTINES' else Result := $'ProgramInterfacePName[{self.val}]'; end; end; ProgramParameterPName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PROGRAM_BINARY_RETRIEVABLE_HINT: ProgramParameterPName read new ProgramParameterPName($8257); public static property PROGRAM_SEPARABLE: ProgramParameterPName read new ProgramParameterPName($8258); public function ToString: string; override; begin if self.val = UInt32($8257) then Result := 'PROGRAM_BINARY_RETRIEVABLE_HINT' else if self.val = UInt32($8258) then Result := 'PROGRAM_SEPARABLE' else Result := $'ProgramParameterPName[{self.val}]'; end; end; ProgramResourceProperty = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NUM_COMPATIBLE_SUBROUTINES: ProgramResourceProperty read new ProgramResourceProperty($8E4A); public static property COMPATIBLE_SUBROUTINES: ProgramResourceProperty read new ProgramResourceProperty($8E4B); public static property UNIFORM: ProgramResourceProperty read new ProgramResourceProperty($92E1); public static property IS_PER_PATCH: ProgramResourceProperty read new ProgramResourceProperty($92E7); public static property NAME_LENGTH: ProgramResourceProperty read new ProgramResourceProperty($92F9); public static property &TYPE: ProgramResourceProperty read new ProgramResourceProperty($92FA); public static property ARRAY_SIZE: ProgramResourceProperty read new ProgramResourceProperty($92FB); public static property OFFSET: ProgramResourceProperty read new ProgramResourceProperty($92FC); public static property BLOCK_INDEX: ProgramResourceProperty read new ProgramResourceProperty($92FD); public static property ARRAY_STRIDE: ProgramResourceProperty read new ProgramResourceProperty($92FE); public static property MATRIX_STRIDE: ProgramResourceProperty read new ProgramResourceProperty($92FF); public static property IS_ROW_MAJOR: ProgramResourceProperty read new ProgramResourceProperty($9300); public static property ATOMIC_COUNTER_BUFFER_INDEX: ProgramResourceProperty read new ProgramResourceProperty($9301); public static property BUFFER_BINDING: ProgramResourceProperty read new ProgramResourceProperty($9302); public static property BUFFER_DATA_SIZE: ProgramResourceProperty read new ProgramResourceProperty($9303); public static property NUM_ACTIVE_VARIABLES: ProgramResourceProperty read new ProgramResourceProperty($9304); public static property ACTIVE_VARIABLES: ProgramResourceProperty read new ProgramResourceProperty($9305); public static property REFERENCED_BY_VERTEX_SHADER: ProgramResourceProperty read new ProgramResourceProperty($9306); public static property REFERENCED_BY_TESS_CONTROL_SHADER: ProgramResourceProperty read new ProgramResourceProperty($9307); public static property REFERENCED_BY_TESS_EVALUATION_SHADER: ProgramResourceProperty read new ProgramResourceProperty($9308); public static property REFERENCED_BY_GEOMETRY_SHADER: ProgramResourceProperty read new ProgramResourceProperty($9309); public static property REFERENCED_BY_FRAGMENT_SHADER: ProgramResourceProperty read new ProgramResourceProperty($930A); public static property REFERENCED_BY_COMPUTE_SHADER: ProgramResourceProperty read new ProgramResourceProperty($930B); public static property TOP_LEVEL_ARRAY_SIZE: ProgramResourceProperty read new ProgramResourceProperty($930C); public static property TOP_LEVEL_ARRAY_STRIDE: ProgramResourceProperty read new ProgramResourceProperty($930D); public static property LOCATION: ProgramResourceProperty read new ProgramResourceProperty($930E); public static property LOCATION_INDEX: ProgramResourceProperty read new ProgramResourceProperty($930F); public static property LOCATION_COMPONENT: ProgramResourceProperty read new ProgramResourceProperty($934A); public static property TRANSFORM_FEEDBACK_BUFFER_INDEX: ProgramResourceProperty read new ProgramResourceProperty($934B); public static property TRANSFORM_FEEDBACK_BUFFER_STRIDE: ProgramResourceProperty read new ProgramResourceProperty($934C); public function ToString: string; override; begin if self.val = UInt32($8E4A) then Result := 'NUM_COMPATIBLE_SUBROUTINES' else if self.val = UInt32($8E4B) then Result := 'COMPATIBLE_SUBROUTINES' else if self.val = UInt32($92E1) then Result := 'UNIFORM' else if self.val = UInt32($92E7) then Result := 'IS_PER_PATCH' else if self.val = UInt32($92F9) then Result := 'NAME_LENGTH' else if self.val = UInt32($92FA) then Result := 'TYPE' else if self.val = UInt32($92FB) then Result := 'ARRAY_SIZE' else if self.val = UInt32($92FC) then Result := 'OFFSET' else if self.val = UInt32($92FD) then Result := 'BLOCK_INDEX' else if self.val = UInt32($92FE) then Result := 'ARRAY_STRIDE' else if self.val = UInt32($92FF) then Result := 'MATRIX_STRIDE' else if self.val = UInt32($9300) then Result := 'IS_ROW_MAJOR' else if self.val = UInt32($9301) then Result := 'ATOMIC_COUNTER_BUFFER_INDEX' else if self.val = UInt32($9302) then Result := 'BUFFER_BINDING' else if self.val = UInt32($9303) then Result := 'BUFFER_DATA_SIZE' else if self.val = UInt32($9304) then Result := 'NUM_ACTIVE_VARIABLES' else if self.val = UInt32($9305) then Result := 'ACTIVE_VARIABLES' else if self.val = UInt32($9306) then Result := 'REFERENCED_BY_VERTEX_SHADER' else if self.val = UInt32($9307) then Result := 'REFERENCED_BY_TESS_CONTROL_SHADER' else if self.val = UInt32($9308) then Result := 'REFERENCED_BY_TESS_EVALUATION_SHADER' else if self.val = UInt32($9309) then Result := 'REFERENCED_BY_GEOMETRY_SHADER' else if self.val = UInt32($930A) then Result := 'REFERENCED_BY_FRAGMENT_SHADER' else if self.val = UInt32($930B) then Result := 'REFERENCED_BY_COMPUTE_SHADER' else if self.val = UInt32($930C) then Result := 'TOP_LEVEL_ARRAY_SIZE' else if self.val = UInt32($930D) then Result := 'TOP_LEVEL_ARRAY_STRIDE' else if self.val = UInt32($930E) then Result := 'LOCATION' else if self.val = UInt32($930F) then Result := 'LOCATION_INDEX' else if self.val = UInt32($934A) then Result := 'LOCATION_COMPONENT' else if self.val = UInt32($934B) then Result := 'TRANSFORM_FEEDBACK_BUFFER_INDEX' else if self.val = UInt32($934C) then Result := 'TRANSFORM_FEEDBACK_BUFFER_STRIDE' else Result := $'ProgramResourceProperty[{self.val}]'; end; end; ProgramStagePName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ACTIVE_SUBROUTINES: ProgramStagePName read new ProgramStagePName($8DE5); public static property ACTIVE_SUBROUTINE_UNIFORMS: ProgramStagePName read new ProgramStagePName($8DE6); public static property ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS: ProgramStagePName read new ProgramStagePName($8E47); public static property ACTIVE_SUBROUTINE_MAX_LENGTH: ProgramStagePName read new ProgramStagePName($8E48); public static property ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH: ProgramStagePName read new ProgramStagePName($8E49); public function ToString: string; override; begin if self.val = UInt32($8DE5) then Result := 'ACTIVE_SUBROUTINES' else if self.val = UInt32($8DE6) then Result := 'ACTIVE_SUBROUTINE_UNIFORMS' else if self.val = UInt32($8E47) then Result := 'ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS' else if self.val = UInt32($8E48) then Result := 'ACTIVE_SUBROUTINE_MAX_LENGTH' else if self.val = UInt32($8E49) then Result := 'ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH' else Result := $'ProgramStagePName[{self.val}]'; end; end; ProgramStringProperty = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PROGRAM_STRING_ARB: ProgramStringProperty read new ProgramStringProperty($8628); public function ToString: string; override; begin if self.val = UInt32($8628) then Result := 'PROGRAM_STRING_ARB' else Result := $'ProgramStringProperty[{self.val}]'; end; end; ProgramTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXT_FRAGMENT_SHADER_ATI: ProgramTarget read new ProgramTarget($8200); public static property VERTEX_PROGRAM_ARB: ProgramTarget read new ProgramTarget($8620); public static property FRAGMENT_PROGRAM_ARB: ProgramTarget read new ProgramTarget($8804); public static property TESS_CONTROL_PROGRAM_NV: ProgramTarget read new ProgramTarget($891E); public static property TESS_EVALUATION_PROGRAM_NV: ProgramTarget read new ProgramTarget($891F); public static property GEOMETRY_PROGRAM_NV: ProgramTarget read new ProgramTarget($8C26); public static property COMPUTE_PROGRAM_NV: ProgramTarget read new ProgramTarget($90FB); public function ToString: string; override; begin if self.val = UInt32($8200) then Result := 'TEXT_FRAGMENT_SHADER_ATI' else if self.val = UInt32($8620) then Result := 'VERTEX_PROGRAM_ARB' else if self.val = UInt32($8804) then Result := 'FRAGMENT_PROGRAM_ARB' else if self.val = UInt32($891E) then Result := 'TESS_CONTROL_PROGRAM_NV' else if self.val = UInt32($891F) then Result := 'TESS_EVALUATION_PROGRAM_NV' else if self.val = UInt32($8C26) then Result := 'GEOMETRY_PROGRAM_NV' else if self.val = UInt32($90FB) then Result := 'COMPUTE_PROGRAM_NV' else Result := $'ProgramTarget[{self.val}]'; end; end; QueryCounterTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TIMESTAMP: QueryCounterTarget read new QueryCounterTarget($8E28); public function ToString: string; override; begin if self.val = UInt32($8E28) then Result := 'TIMESTAMP' else Result := $'QueryCounterTarget[{self.val}]'; end; end; QueryObjectParameterName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property QUERY_TARGET: QueryObjectParameterName read new QueryObjectParameterName($82EA); public static property QUERY_RESULT: QueryObjectParameterName read new QueryObjectParameterName($8866); public static property QUERY_RESULT_AVAILABLE: QueryObjectParameterName read new QueryObjectParameterName($8867); public static property QUERY_RESULT_NO_WAIT: QueryObjectParameterName read new QueryObjectParameterName($9194); public function ToString: string; override; begin if self.val = UInt32($82EA) then Result := 'QUERY_TARGET' else if self.val = UInt32($8866) then Result := 'QUERY_RESULT' else if self.val = UInt32($8867) then Result := 'QUERY_RESULT_AVAILABLE' else if self.val = UInt32($9194) then Result := 'QUERY_RESULT_NO_WAIT' else Result := $'QueryObjectParameterName[{self.val}]'; end; end; QueryParameterName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property QUERY_COUNTER_BITS: QueryParameterName read new QueryParameterName($8864); public static property CURRENT_QUERY: QueryParameterName read new QueryParameterName($8865); public function ToString: string; override; begin if self.val = UInt32($8864) then Result := 'QUERY_COUNTER_BITS' else if self.val = UInt32($8865) then Result := 'CURRENT_QUERY' else Result := $'QueryParameterName[{self.val}]'; end; end; QueryTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TRANSFORM_FEEDBACK_OVERFLOW: QueryTarget read new QueryTarget($82EC); public static property VERTICES_SUBMITTED: QueryTarget read new QueryTarget($82EE); public static property PRIMITIVES_SUBMITTED: QueryTarget read new QueryTarget($82EF); public static property VERTEX_SHADER_INVOCATIONS: QueryTarget read new QueryTarget($82F0); public static property TIME_ELAPSED: QueryTarget read new QueryTarget($88BF); public static property SAMPLES_PASSED: QueryTarget read new QueryTarget($8914); public static property ANY_SAMPLES_PASSED: QueryTarget read new QueryTarget($8C2F); public static property PRIMITIVES_GENERATED: QueryTarget read new QueryTarget($8C87); public static property TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: QueryTarget read new QueryTarget($8C88); public static property ANY_SAMPLES_PASSED_CONSERVATIVE: QueryTarget read new QueryTarget($8D6A); public function ToString: string; override; begin if self.val = UInt32($82EC) then Result := 'TRANSFORM_FEEDBACK_OVERFLOW' else if self.val = UInt32($82EE) then Result := 'VERTICES_SUBMITTED' else if self.val = UInt32($82EF) then Result := 'PRIMITIVES_SUBMITTED' else if self.val = UInt32($82F0) then Result := 'VERTEX_SHADER_INVOCATIONS' else if self.val = UInt32($88BF) then Result := 'TIME_ELAPSED' else if self.val = UInt32($8914) then Result := 'SAMPLES_PASSED' else if self.val = UInt32($8C2F) then Result := 'ANY_SAMPLES_PASSED' else if self.val = UInt32($8C87) then Result := 'PRIMITIVES_GENERATED' else if self.val = UInt32($8C88) then Result := 'TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN' else if self.val = UInt32($8D6A) then Result := 'ANY_SAMPLES_PASSED_CONSERVATIVE' else Result := $'QueryTarget[{self.val}]'; end; end; ReadBufferMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NONE: ReadBufferMode read new ReadBufferMode($0000); public static property NONE_OES: ReadBufferMode read new ReadBufferMode($0000); public static property FRONT_LEFT: ReadBufferMode read new ReadBufferMode($0400); public static property FRONT_RIGHT: ReadBufferMode read new ReadBufferMode($0401); public static property BACK_LEFT: ReadBufferMode read new ReadBufferMode($0402); public static property BACK_RIGHT: ReadBufferMode read new ReadBufferMode($0403); public static property FRONT: ReadBufferMode read new ReadBufferMode($0404); public static property BACK: ReadBufferMode read new ReadBufferMode($0405); public static property LEFT: ReadBufferMode read new ReadBufferMode($0406); public static property RIGHT: ReadBufferMode read new ReadBufferMode($0407); public static property AUX0: ReadBufferMode read new ReadBufferMode($0409); public static property AUX1: ReadBufferMode read new ReadBufferMode($040A); public static property AUX2: ReadBufferMode read new ReadBufferMode($040B); public static property AUX3: ReadBufferMode read new ReadBufferMode($040C); public static property COLOR_ATTACHMENT0: ReadBufferMode read new ReadBufferMode($8CE0); public static property COLOR_ATTACHMENT1: ReadBufferMode read new ReadBufferMode($8CE1); public static property COLOR_ATTACHMENT2: ReadBufferMode read new ReadBufferMode($8CE2); public static property COLOR_ATTACHMENT3: ReadBufferMode read new ReadBufferMode($8CE3); public static property COLOR_ATTACHMENT4: ReadBufferMode read new ReadBufferMode($8CE4); public static property COLOR_ATTACHMENT5: ReadBufferMode read new ReadBufferMode($8CE5); public static property COLOR_ATTACHMENT6: ReadBufferMode read new ReadBufferMode($8CE6); public static property COLOR_ATTACHMENT7: ReadBufferMode read new ReadBufferMode($8CE7); public static property COLOR_ATTACHMENT8: ReadBufferMode read new ReadBufferMode($8CE8); public static property COLOR_ATTACHMENT9: ReadBufferMode read new ReadBufferMode($8CE9); public static property COLOR_ATTACHMENT10: ReadBufferMode read new ReadBufferMode($8CEA); public static property COLOR_ATTACHMENT11: ReadBufferMode read new ReadBufferMode($8CEB); public static property COLOR_ATTACHMENT12: ReadBufferMode read new ReadBufferMode($8CEC); public static property COLOR_ATTACHMENT13: ReadBufferMode read new ReadBufferMode($8CED); public static property COLOR_ATTACHMENT14: ReadBufferMode read new ReadBufferMode($8CEE); public static property COLOR_ATTACHMENT15: ReadBufferMode read new ReadBufferMode($8CEF); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'NONE' else if self.val = UInt32($0000) then Result := 'NONE_OES' else if self.val = UInt32($0400) then Result := 'FRONT_LEFT' else if self.val = UInt32($0401) then Result := 'FRONT_RIGHT' else if self.val = UInt32($0402) then Result := 'BACK_LEFT' else if self.val = UInt32($0403) then Result := 'BACK_RIGHT' else if self.val = UInt32($0404) then Result := 'FRONT' else if self.val = UInt32($0405) then Result := 'BACK' else if self.val = UInt32($0406) then Result := 'LEFT' else if self.val = UInt32($0407) then Result := 'RIGHT' else if self.val = UInt32($0409) then Result := 'AUX0' else if self.val = UInt32($040A) then Result := 'AUX1' else if self.val = UInt32($040B) then Result := 'AUX2' else if self.val = UInt32($040C) then Result := 'AUX3' else if self.val = UInt32($8CE0) then Result := 'COLOR_ATTACHMENT0' else if self.val = UInt32($8CE1) then Result := 'COLOR_ATTACHMENT1' else if self.val = UInt32($8CE2) then Result := 'COLOR_ATTACHMENT2' else if self.val = UInt32($8CE3) then Result := 'COLOR_ATTACHMENT3' else if self.val = UInt32($8CE4) then Result := 'COLOR_ATTACHMENT4' else if self.val = UInt32($8CE5) then Result := 'COLOR_ATTACHMENT5' else if self.val = UInt32($8CE6) then Result := 'COLOR_ATTACHMENT6' else if self.val = UInt32($8CE7) then Result := 'COLOR_ATTACHMENT7' else if self.val = UInt32($8CE8) then Result := 'COLOR_ATTACHMENT8' else if self.val = UInt32($8CE9) then Result := 'COLOR_ATTACHMENT9' else if self.val = UInt32($8CEA) then Result := 'COLOR_ATTACHMENT10' else if self.val = UInt32($8CEB) then Result := 'COLOR_ATTACHMENT11' else if self.val = UInt32($8CEC) then Result := 'COLOR_ATTACHMENT12' else if self.val = UInt32($8CED) then Result := 'COLOR_ATTACHMENT13' else if self.val = UInt32($8CEE) then Result := 'COLOR_ATTACHMENT14' else if self.val = UInt32($8CEF) then Result := 'COLOR_ATTACHMENT15' else Result := $'ReadBufferMode[{self.val}]'; end; end; RenderbufferParameterName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property RENDERBUFFER_COVERAGE_SAMPLES_NV: RenderbufferParameterName read new RenderbufferParameterName($8CAB); public static property RENDERBUFFER_SAMPLES: RenderbufferParameterName read new RenderbufferParameterName($8CAB); public static property RENDERBUFFER_SAMPLES_ANGLE: RenderbufferParameterName read new RenderbufferParameterName($8CAB); public static property RENDERBUFFER_SAMPLES_APPLE: RenderbufferParameterName read new RenderbufferParameterName($8CAB); public static property RENDERBUFFER_SAMPLES_EXT: RenderbufferParameterName read new RenderbufferParameterName($8CAB); public static property RENDERBUFFER_SAMPLES_NV: RenderbufferParameterName read new RenderbufferParameterName($8CAB); public static property RENDERBUFFER_WIDTH: RenderbufferParameterName read new RenderbufferParameterName($8D42); public static property RENDERBUFFER_WIDTH_EXT: RenderbufferParameterName read new RenderbufferParameterName($8D42); public static property RENDERBUFFER_WIDTH_OES: RenderbufferParameterName read new RenderbufferParameterName($8D42); public static property RENDERBUFFER_HEIGHT: RenderbufferParameterName read new RenderbufferParameterName($8D43); public static property RENDERBUFFER_HEIGHT_EXT: RenderbufferParameterName read new RenderbufferParameterName($8D43); public static property RENDERBUFFER_HEIGHT_OES: RenderbufferParameterName read new RenderbufferParameterName($8D43); public static property RENDERBUFFER_INTERNAL_FORMAT: RenderbufferParameterName read new RenderbufferParameterName($8D44); public static property RENDERBUFFER_INTERNAL_FORMAT_EXT: RenderbufferParameterName read new RenderbufferParameterName($8D44); public static property RENDERBUFFER_INTERNAL_FORMAT_OES: RenderbufferParameterName read new RenderbufferParameterName($8D44); public static property RENDERBUFFER_RED_SIZE: RenderbufferParameterName read new RenderbufferParameterName($8D50); public static property RENDERBUFFER_RED_SIZE_EXT: RenderbufferParameterName read new RenderbufferParameterName($8D50); public static property RENDERBUFFER_RED_SIZE_OES: RenderbufferParameterName read new RenderbufferParameterName($8D50); public static property RENDERBUFFER_GREEN_SIZE: RenderbufferParameterName read new RenderbufferParameterName($8D51); public static property RENDERBUFFER_GREEN_SIZE_EXT: RenderbufferParameterName read new RenderbufferParameterName($8D51); public static property RENDERBUFFER_GREEN_SIZE_OES: RenderbufferParameterName read new RenderbufferParameterName($8D51); public static property RENDERBUFFER_BLUE_SIZE: RenderbufferParameterName read new RenderbufferParameterName($8D52); public static property RENDERBUFFER_BLUE_SIZE_EXT: RenderbufferParameterName read new RenderbufferParameterName($8D52); public static property RENDERBUFFER_BLUE_SIZE_OES: RenderbufferParameterName read new RenderbufferParameterName($8D52); public static property RENDERBUFFER_ALPHA_SIZE: RenderbufferParameterName read new RenderbufferParameterName($8D53); public static property RENDERBUFFER_ALPHA_SIZE_EXT: RenderbufferParameterName read new RenderbufferParameterName($8D53); public static property RENDERBUFFER_ALPHA_SIZE_OES: RenderbufferParameterName read new RenderbufferParameterName($8D53); public static property RENDERBUFFER_DEPTH_SIZE: RenderbufferParameterName read new RenderbufferParameterName($8D54); public static property RENDERBUFFER_DEPTH_SIZE_EXT: RenderbufferParameterName read new RenderbufferParameterName($8D54); public static property RENDERBUFFER_DEPTH_SIZE_OES: RenderbufferParameterName read new RenderbufferParameterName($8D54); public static property RENDERBUFFER_STENCIL_SIZE: RenderbufferParameterName read new RenderbufferParameterName($8D55); public static property RENDERBUFFER_STENCIL_SIZE_EXT: RenderbufferParameterName read new RenderbufferParameterName($8D55); public static property RENDERBUFFER_STENCIL_SIZE_OES: RenderbufferParameterName read new RenderbufferParameterName($8D55); public static property RENDERBUFFER_COLOR_SAMPLES_NV: RenderbufferParameterName read new RenderbufferParameterName($8E10); public static property RENDERBUFFER_SAMPLES_IMG: RenderbufferParameterName read new RenderbufferParameterName($9133); public static property RENDERBUFFER_STORAGE_SAMPLES_AMD: RenderbufferParameterName read new RenderbufferParameterName($91B2); public function ToString: string; override; begin if self.val = UInt32($8CAB) then Result := 'RENDERBUFFER_COVERAGE_SAMPLES_NV' else if self.val = UInt32($8CAB) then Result := 'RENDERBUFFER_SAMPLES' else if self.val = UInt32($8CAB) then Result := 'RENDERBUFFER_SAMPLES_ANGLE' else if self.val = UInt32($8CAB) then Result := 'RENDERBUFFER_SAMPLES_APPLE' else if self.val = UInt32($8CAB) then Result := 'RENDERBUFFER_SAMPLES_EXT' else if self.val = UInt32($8CAB) then Result := 'RENDERBUFFER_SAMPLES_NV' else if self.val = UInt32($8D42) then Result := 'RENDERBUFFER_WIDTH' else if self.val = UInt32($8D42) then Result := 'RENDERBUFFER_WIDTH_EXT' else if self.val = UInt32($8D42) then Result := 'RENDERBUFFER_WIDTH_OES' else if self.val = UInt32($8D43) then Result := 'RENDERBUFFER_HEIGHT' else if self.val = UInt32($8D43) then Result := 'RENDERBUFFER_HEIGHT_EXT' else if self.val = UInt32($8D43) then Result := 'RENDERBUFFER_HEIGHT_OES' else if self.val = UInt32($8D44) then Result := 'RENDERBUFFER_INTERNAL_FORMAT' else if self.val = UInt32($8D44) then Result := 'RENDERBUFFER_INTERNAL_FORMAT_EXT' else if self.val = UInt32($8D44) then Result := 'RENDERBUFFER_INTERNAL_FORMAT_OES' else if self.val = UInt32($8D50) then Result := 'RENDERBUFFER_RED_SIZE' else if self.val = UInt32($8D50) then Result := 'RENDERBUFFER_RED_SIZE_EXT' else if self.val = UInt32($8D50) then Result := 'RENDERBUFFER_RED_SIZE_OES' else if self.val = UInt32($8D51) then Result := 'RENDERBUFFER_GREEN_SIZE' else if self.val = UInt32($8D51) then Result := 'RENDERBUFFER_GREEN_SIZE_EXT' else if self.val = UInt32($8D51) then Result := 'RENDERBUFFER_GREEN_SIZE_OES' else if self.val = UInt32($8D52) then Result := 'RENDERBUFFER_BLUE_SIZE' else if self.val = UInt32($8D52) then Result := 'RENDERBUFFER_BLUE_SIZE_EXT' else if self.val = UInt32($8D52) then Result := 'RENDERBUFFER_BLUE_SIZE_OES' else if self.val = UInt32($8D53) then Result := 'RENDERBUFFER_ALPHA_SIZE' else if self.val = UInt32($8D53) then Result := 'RENDERBUFFER_ALPHA_SIZE_EXT' else if self.val = UInt32($8D53) then Result := 'RENDERBUFFER_ALPHA_SIZE_OES' else if self.val = UInt32($8D54) then Result := 'RENDERBUFFER_DEPTH_SIZE' else if self.val = UInt32($8D54) then Result := 'RENDERBUFFER_DEPTH_SIZE_EXT' else if self.val = UInt32($8D54) then Result := 'RENDERBUFFER_DEPTH_SIZE_OES' else if self.val = UInt32($8D55) then Result := 'RENDERBUFFER_STENCIL_SIZE' else if self.val = UInt32($8D55) then Result := 'RENDERBUFFER_STENCIL_SIZE_EXT' else if self.val = UInt32($8D55) then Result := 'RENDERBUFFER_STENCIL_SIZE_OES' else if self.val = UInt32($8E10) then Result := 'RENDERBUFFER_COLOR_SAMPLES_NV' else if self.val = UInt32($9133) then Result := 'RENDERBUFFER_SAMPLES_IMG' else if self.val = UInt32($91B2) then Result := 'RENDERBUFFER_STORAGE_SAMPLES_AMD' else Result := $'RenderbufferParameterName[{self.val}]'; end; end; RenderbufferTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property RENDERBUFFER: RenderbufferTarget read new RenderbufferTarget($8D41); public static property RENDERBUFFER_OES: RenderbufferTarget read new RenderbufferTarget($8D41); public function ToString: string; override; begin if self.val = UInt32($8D41) then Result := 'RENDERBUFFER' else if self.val = UInt32($8D41) then Result := 'RENDERBUFFER_OES' else Result := $'RenderbufferTarget[{self.val}]'; end; end; RenderingMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property RENDER: RenderingMode read new RenderingMode($1C00); public static property FEEDBACK: RenderingMode read new RenderingMode($1C01); public static property SELECT: RenderingMode read new RenderingMode($1C02); public function ToString: string; override; begin if self.val = UInt32($1C00) then Result := 'RENDER' else if self.val = UInt32($1C01) then Result := 'FEEDBACK' else if self.val = UInt32($1C02) then Result := 'SELECT' else Result := $'RenderingMode[{self.val}]'; end; end; SamplerParameterF = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE_BORDER_COLOR: SamplerParameterF read new SamplerParameterF($1004); public static property TEXTURE_MIN_LOD: SamplerParameterF read new SamplerParameterF($813A); public static property TEXTURE_MAX_LOD: SamplerParameterF read new SamplerParameterF($813B); public static property TEXTURE_MAX_ANISOTROPY: SamplerParameterF read new SamplerParameterF($84FE); public static property TEXTURE_LOD_BIAS: SamplerParameterF read new SamplerParameterF($8501); public static property TEXTURE_UNNORMALIZED_COORDINATES_ARM: SamplerParameterF read new SamplerParameterF($8F6A); public function ToString: string; override; begin if self.val = UInt32($1004) then Result := 'TEXTURE_BORDER_COLOR' else if self.val = UInt32($813A) then Result := 'TEXTURE_MIN_LOD' else if self.val = UInt32($813B) then Result := 'TEXTURE_MAX_LOD' else if self.val = UInt32($84FE) then Result := 'TEXTURE_MAX_ANISOTROPY' else if self.val = UInt32($8501) then Result := 'TEXTURE_LOD_BIAS' else if self.val = UInt32($8F6A) then Result := 'TEXTURE_UNNORMALIZED_COORDINATES_ARM' else Result := $'SamplerParameterF[{self.val}]'; end; end; SamplerParameterI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE_MAG_FILTER: SamplerParameterI read new SamplerParameterI($2800); public static property TEXTURE_MIN_FILTER: SamplerParameterI read new SamplerParameterI($2801); public static property TEXTURE_WRAP_S: SamplerParameterI read new SamplerParameterI($2802); public static property TEXTURE_WRAP_T: SamplerParameterI read new SamplerParameterI($2803); public static property TEXTURE_WRAP_R: SamplerParameterI read new SamplerParameterI($8072); public static property TEXTURE_COMPARE_MODE: SamplerParameterI read new SamplerParameterI($884C); public static property TEXTURE_COMPARE_FUNC: SamplerParameterI read new SamplerParameterI($884D); public static property TEXTURE_UNNORMALIZED_COORDINATES_ARM: SamplerParameterI read new SamplerParameterI($8F6A); public function ToString: string; override; begin if self.val = UInt32($2800) then Result := 'TEXTURE_MAG_FILTER' else if self.val = UInt32($2801) then Result := 'TEXTURE_MIN_FILTER' else if self.val = UInt32($2802) then Result := 'TEXTURE_WRAP_S' else if self.val = UInt32($2803) then Result := 'TEXTURE_WRAP_T' else if self.val = UInt32($8072) then Result := 'TEXTURE_WRAP_R' else if self.val = UInt32($884C) then Result := 'TEXTURE_COMPARE_MODE' else if self.val = UInt32($884D) then Result := 'TEXTURE_COMPARE_FUNC' else if self.val = UInt32($8F6A) then Result := 'TEXTURE_UNNORMALIZED_COORDINATES_ARM' else Result := $'SamplerParameterI[{self.val}]'; end; end; ScalarType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property UNSIGNED_BYTE: ScalarType read new ScalarType($1401); public static property UNSIGNED_SHORT: ScalarType read new ScalarType($1403); public static property UNSIGNED_INT: ScalarType read new ScalarType($1405); public function ToString: string; override; begin if self.val = UInt32($1401) then Result := 'UNSIGNED_BYTE' else if self.val = UInt32($1403) then Result := 'UNSIGNED_SHORT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else Result := $'ScalarType[{self.val}]'; end; end; SemaphoreParameterName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property D3D12_FENCE_VALUE_EXT: SemaphoreParameterName read new SemaphoreParameterName($9595); public static property TIMELINE_SEMAPHORE_VALUE_NV: SemaphoreParameterName read new SemaphoreParameterName($9595); public static property SEMAPHORE_TYPE_NV: SemaphoreParameterName read new SemaphoreParameterName($95B3); public static property SEMAPHORE_TYPE_BINARY_NV: SemaphoreParameterName read new SemaphoreParameterName($95B4); public static property SEMAPHORE_TYPE_TIMELINE_NV: SemaphoreParameterName read new SemaphoreParameterName($95B5); public function ToString: string; override; begin if self.val = UInt32($9595) then Result := 'D3D12_FENCE_VALUE_EXT' else if self.val = UInt32($9595) then Result := 'TIMELINE_SEMAPHORE_VALUE_NV' else if self.val = UInt32($95B3) then Result := 'SEMAPHORE_TYPE_NV' else if self.val = UInt32($95B4) then Result := 'SEMAPHORE_TYPE_BINARY_NV' else if self.val = UInt32($95B5) then Result := 'SEMAPHORE_TYPE_TIMELINE_NV' else Result := $'SemaphoreParameterName[{self.val}]'; end; end; SeparableTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SEPARABLE_2D: SeparableTarget read new SeparableTarget($8012); public function ToString: string; override; begin if self.val = UInt32($8012) then Result := 'SEPARABLE_2D' else Result := $'SeparableTarget[{self.val}]'; end; end; ShaderBinaryFormat = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SGX_BINARY_IMG: ShaderBinaryFormat read new ShaderBinaryFormat($8C0A); public static property MALI_SHADER_BINARY_ARM: ShaderBinaryFormat read new ShaderBinaryFormat($8F60); public static property SHADER_BINARY_VIV: ShaderBinaryFormat read new ShaderBinaryFormat($8FC4); public static property SHADER_BINARY_DMP: ShaderBinaryFormat read new ShaderBinaryFormat($9250); public static property GCCSO_SHADER_BINARY_FJ: ShaderBinaryFormat read new ShaderBinaryFormat($9260); public static property SHADER_BINARY_FORMAT_SPIR_V: ShaderBinaryFormat read new ShaderBinaryFormat($9551); public function ToString: string; override; begin if self.val = UInt32($8C0A) then Result := 'SGX_BINARY_IMG' else if self.val = UInt32($8F60) then Result := 'MALI_SHADER_BINARY_ARM' else if self.val = UInt32($8FC4) then Result := 'SHADER_BINARY_VIV' else if self.val = UInt32($9250) then Result := 'SHADER_BINARY_DMP' else if self.val = UInt32($9260) then Result := 'GCCSO_SHADER_BINARY_FJ' else if self.val = UInt32($9551) then Result := 'SHADER_BINARY_FORMAT_SPIR_V' else Result := $'ShaderBinaryFormat[{self.val}]'; end; end; ShaderParameterName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SHADER_TYPE: ShaderParameterName read new ShaderParameterName($8B4F); public static property DELETE_STATUS: ShaderParameterName read new ShaderParameterName($8B80); public static property COMPILE_STATUS: ShaderParameterName read new ShaderParameterName($8B81); public static property INFO_LOG_LENGTH: ShaderParameterName read new ShaderParameterName($8B84); public static property SHADER_SOURCE_LENGTH: ShaderParameterName read new ShaderParameterName($8B88); public function ToString: string; override; begin if self.val = UInt32($8B4F) then Result := 'SHADER_TYPE' else if self.val = UInt32($8B80) then Result := 'DELETE_STATUS' else if self.val = UInt32($8B81) then Result := 'COMPILE_STATUS' else if self.val = UInt32($8B84) then Result := 'INFO_LOG_LENGTH' else if self.val = UInt32($8B88) then Result := 'SHADER_SOURCE_LENGTH' else Result := $'ShaderParameterName[{self.val}]'; end; end; ShaderType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FRAGMENT_SHADER: ShaderType read new ShaderType($8B30); public static property FRAGMENT_SHADER_ARB: ShaderType read new ShaderType($8B30); public static property VERTEX_SHADER: ShaderType read new ShaderType($8B31); public static property VERTEX_SHADER_ARB: ShaderType read new ShaderType($8B31); public static property GEOMETRY_SHADER: ShaderType read new ShaderType($8DD9); public static property TESS_EVALUATION_SHADER: ShaderType read new ShaderType($8E87); public static property TESS_CONTROL_SHADER: ShaderType read new ShaderType($8E88); public static property COMPUTE_SHADER: ShaderType read new ShaderType($91B9); public function ToString: string; override; begin if self.val = UInt32($8B30) then Result := 'FRAGMENT_SHADER' else if self.val = UInt32($8B30) then Result := 'FRAGMENT_SHADER_ARB' else if self.val = UInt32($8B31) then Result := 'VERTEX_SHADER' else if self.val = UInt32($8B31) then Result := 'VERTEX_SHADER_ARB' else if self.val = UInt32($8DD9) then Result := 'GEOMETRY_SHADER' else if self.val = UInt32($8E87) then Result := 'TESS_EVALUATION_SHADER' else if self.val = UInt32($8E88) then Result := 'TESS_CONTROL_SHADER' else if self.val = UInt32($91B9) then Result := 'COMPUTE_SHADER' else Result := $'ShaderType[{self.val}]'; end; end; ShadingModel = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FLAT: ShadingModel read new ShadingModel($1D00); public static property SMOOTH: ShadingModel read new ShadingModel($1D01); public function ToString: string; override; begin if self.val = UInt32($1D00) then Result := 'FLAT' else if self.val = UInt32($1D01) then Result := 'SMOOTH' else Result := $'ShadingModel[{self.val}]'; end; end; SizedInternalFormat = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property R3_G3_B2: SizedInternalFormat read new SizedInternalFormat($2A10); public static property ALPHA4: SizedInternalFormat read new SizedInternalFormat($803B); public static property ALPHA4_EXT: SizedInternalFormat read new SizedInternalFormat($803B); public static property ALPHA8: SizedInternalFormat read new SizedInternalFormat($803C); public static property ALPHA8_EXT: SizedInternalFormat read new SizedInternalFormat($803C); public static property ALPHA8_OES: SizedInternalFormat read new SizedInternalFormat($803C); public static property ALPHA12: SizedInternalFormat read new SizedInternalFormat($803D); public static property ALPHA12_EXT: SizedInternalFormat read new SizedInternalFormat($803D); public static property ALPHA16: SizedInternalFormat read new SizedInternalFormat($803E); public static property ALPHA16_EXT: SizedInternalFormat read new SizedInternalFormat($803E); public static property LUMINANCE4: SizedInternalFormat read new SizedInternalFormat($803F); public static property LUMINANCE4_EXT: SizedInternalFormat read new SizedInternalFormat($803F); public static property LUMINANCE8: SizedInternalFormat read new SizedInternalFormat($8040); public static property LUMINANCE8_EXT: SizedInternalFormat read new SizedInternalFormat($8040); public static property LUMINANCE8_OES: SizedInternalFormat read new SizedInternalFormat($8040); public static property LUMINANCE12: SizedInternalFormat read new SizedInternalFormat($8041); public static property LUMINANCE12_EXT: SizedInternalFormat read new SizedInternalFormat($8041); public static property LUMINANCE16: SizedInternalFormat read new SizedInternalFormat($8042); public static property LUMINANCE16_EXT: SizedInternalFormat read new SizedInternalFormat($8042); public static property LUMINANCE4_ALPHA4: SizedInternalFormat read new SizedInternalFormat($8043); public static property LUMINANCE4_ALPHA4_EXT: SizedInternalFormat read new SizedInternalFormat($8043); public static property LUMINANCE4_ALPHA4_OES: SizedInternalFormat read new SizedInternalFormat($8043); public static property LUMINANCE6_ALPHA2: SizedInternalFormat read new SizedInternalFormat($8044); public static property LUMINANCE6_ALPHA2_EXT: SizedInternalFormat read new SizedInternalFormat($8044); public static property LUMINANCE8_ALPHA8: SizedInternalFormat read new SizedInternalFormat($8045); public static property LUMINANCE8_ALPHA8_EXT: SizedInternalFormat read new SizedInternalFormat($8045); public static property LUMINANCE8_ALPHA8_OES: SizedInternalFormat read new SizedInternalFormat($8045); public static property LUMINANCE12_ALPHA4: SizedInternalFormat read new SizedInternalFormat($8046); public static property LUMINANCE12_ALPHA4_EXT: SizedInternalFormat read new SizedInternalFormat($8046); public static property LUMINANCE12_ALPHA12: SizedInternalFormat read new SizedInternalFormat($8047); public static property LUMINANCE12_ALPHA12_EXT: SizedInternalFormat read new SizedInternalFormat($8047); public static property LUMINANCE16_ALPHA16: SizedInternalFormat read new SizedInternalFormat($8048); public static property LUMINANCE16_ALPHA16_EXT: SizedInternalFormat read new SizedInternalFormat($8048); public static property INTENSITY4: SizedInternalFormat read new SizedInternalFormat($804A); public static property INTENSITY4_EXT: SizedInternalFormat read new SizedInternalFormat($804A); public static property INTENSITY8: SizedInternalFormat read new SizedInternalFormat($804B); public static property INTENSITY8_EXT: SizedInternalFormat read new SizedInternalFormat($804B); public static property INTENSITY12: SizedInternalFormat read new SizedInternalFormat($804C); public static property INTENSITY12_EXT: SizedInternalFormat read new SizedInternalFormat($804C); public static property INTENSITY16: SizedInternalFormat read new SizedInternalFormat($804D); public static property INTENSITY16_EXT: SizedInternalFormat read new SizedInternalFormat($804D); public static property RGB2_EXT: SizedInternalFormat read new SizedInternalFormat($804E); public static property RGB4: SizedInternalFormat read new SizedInternalFormat($804F); public static property RGB4_EXT: SizedInternalFormat read new SizedInternalFormat($804F); public static property RGB5: SizedInternalFormat read new SizedInternalFormat($8050); public static property RGB5_EXT: SizedInternalFormat read new SizedInternalFormat($8050); public static property RGB8: SizedInternalFormat read new SizedInternalFormat($8051); public static property RGB8_EXT: SizedInternalFormat read new SizedInternalFormat($8051); public static property RGB8_OES: SizedInternalFormat read new SizedInternalFormat($8051); public static property RGB10: SizedInternalFormat read new SizedInternalFormat($8052); public static property RGB10_EXT: SizedInternalFormat read new SizedInternalFormat($8052); public static property RGB12: SizedInternalFormat read new SizedInternalFormat($8053); public static property RGB12_EXT: SizedInternalFormat read new SizedInternalFormat($8053); public static property RGB16: SizedInternalFormat read new SizedInternalFormat($8054); public static property RGB16_EXT: SizedInternalFormat read new SizedInternalFormat($8054); public static property RGBA2: SizedInternalFormat read new SizedInternalFormat($8055); public static property RGBA2_EXT: SizedInternalFormat read new SizedInternalFormat($8055); public static property RGBA4: SizedInternalFormat read new SizedInternalFormat($8056); public static property RGBA4_EXT: SizedInternalFormat read new SizedInternalFormat($8056); public static property RGBA4_OES: SizedInternalFormat read new SizedInternalFormat($8056); public static property RGB5_A1: SizedInternalFormat read new SizedInternalFormat($8057); public static property RGB5_A1_EXT: SizedInternalFormat read new SizedInternalFormat($8057); public static property RGB5_A1_OES: SizedInternalFormat read new SizedInternalFormat($8057); public static property RGBA8: SizedInternalFormat read new SizedInternalFormat($8058); public static property RGBA8_EXT: SizedInternalFormat read new SizedInternalFormat($8058); public static property RGBA8_OES: SizedInternalFormat read new SizedInternalFormat($8058); public static property RGB10_A2: SizedInternalFormat read new SizedInternalFormat($8059); public static property RGB10_A2_EXT: SizedInternalFormat read new SizedInternalFormat($8059); public static property RGBA12: SizedInternalFormat read new SizedInternalFormat($805A); public static property RGBA12_EXT: SizedInternalFormat read new SizedInternalFormat($805A); public static property RGBA16: SizedInternalFormat read new SizedInternalFormat($805B); public static property RGBA16_EXT: SizedInternalFormat read new SizedInternalFormat($805B); public static property DEPTH_COMPONENT16: SizedInternalFormat read new SizedInternalFormat($81A5); public static property DEPTH_COMPONENT16_ARB: SizedInternalFormat read new SizedInternalFormat($81A5); public static property DEPTH_COMPONENT16_OES: SizedInternalFormat read new SizedInternalFormat($81A5); public static property DEPTH_COMPONENT16_SGIX: SizedInternalFormat read new SizedInternalFormat($81A5); public static property DEPTH_COMPONENT24: SizedInternalFormat read new SizedInternalFormat($81A6); public static property DEPTH_COMPONENT24_ARB: SizedInternalFormat read new SizedInternalFormat($81A6); public static property DEPTH_COMPONENT24_OES: SizedInternalFormat read new SizedInternalFormat($81A6); public static property DEPTH_COMPONENT24_SGIX: SizedInternalFormat read new SizedInternalFormat($81A6); public static property DEPTH_COMPONENT32: SizedInternalFormat read new SizedInternalFormat($81A7); public static property DEPTH_COMPONENT32_ARB: SizedInternalFormat read new SizedInternalFormat($81A7); public static property DEPTH_COMPONENT32_OES: SizedInternalFormat read new SizedInternalFormat($81A7); public static property DEPTH_COMPONENT32_SGIX: SizedInternalFormat read new SizedInternalFormat($81A7); public static property R8: SizedInternalFormat read new SizedInternalFormat($8229); public static property R8_EXT: SizedInternalFormat read new SizedInternalFormat($8229); public static property R16: SizedInternalFormat read new SizedInternalFormat($822A); public static property R16_EXT: SizedInternalFormat read new SizedInternalFormat($822A); public static property RG8: SizedInternalFormat read new SizedInternalFormat($822B); public static property RG8_EXT: SizedInternalFormat read new SizedInternalFormat($822B); public static property RG16: SizedInternalFormat read new SizedInternalFormat($822C); public static property RG16_EXT: SizedInternalFormat read new SizedInternalFormat($822C); public static property R16F: SizedInternalFormat read new SizedInternalFormat($822D); public static property R16F_EXT: SizedInternalFormat read new SizedInternalFormat($822D); public static property R32F: SizedInternalFormat read new SizedInternalFormat($822E); public static property R32F_EXT: SizedInternalFormat read new SizedInternalFormat($822E); public static property RG16F: SizedInternalFormat read new SizedInternalFormat($822F); public static property RG16F_EXT: SizedInternalFormat read new SizedInternalFormat($822F); public static property RG32F: SizedInternalFormat read new SizedInternalFormat($8230); public static property RG32F_EXT: SizedInternalFormat read new SizedInternalFormat($8230); public static property R8I: SizedInternalFormat read new SizedInternalFormat($8231); public static property R8UI: SizedInternalFormat read new SizedInternalFormat($8232); public static property R16I: SizedInternalFormat read new SizedInternalFormat($8233); public static property R16UI: SizedInternalFormat read new SizedInternalFormat($8234); public static property R32I: SizedInternalFormat read new SizedInternalFormat($8235); public static property R32UI: SizedInternalFormat read new SizedInternalFormat($8236); public static property RG8I: SizedInternalFormat read new SizedInternalFormat($8237); public static property RG8UI: SizedInternalFormat read new SizedInternalFormat($8238); public static property RG16I: SizedInternalFormat read new SizedInternalFormat($8239); public static property RG16UI: SizedInternalFormat read new SizedInternalFormat($823A); public static property RG32I: SizedInternalFormat read new SizedInternalFormat($823B); public static property RG32UI: SizedInternalFormat read new SizedInternalFormat($823C); public static property COMPRESSED_RGB_S3TC_DXT1_EXT: SizedInternalFormat read new SizedInternalFormat($83F0); public static property COMPRESSED_RGBA_S3TC_DXT1_EXT: SizedInternalFormat read new SizedInternalFormat($83F1); public static property COMPRESSED_RGBA_S3TC_DXT3_ANGLE: SizedInternalFormat read new SizedInternalFormat($83F2); public static property COMPRESSED_RGBA_S3TC_DXT3_EXT: SizedInternalFormat read new SizedInternalFormat($83F2); public static property COMPRESSED_RGBA_S3TC_DXT5_ANGLE: SizedInternalFormat read new SizedInternalFormat($83F3); public static property COMPRESSED_RGBA_S3TC_DXT5_EXT: SizedInternalFormat read new SizedInternalFormat($83F3); public static property RGBA32F: SizedInternalFormat read new SizedInternalFormat($8814); public static property RGBA32F_ARB: SizedInternalFormat read new SizedInternalFormat($8814); public static property RGBA32F_EXT: SizedInternalFormat read new SizedInternalFormat($8814); public static property RGB32F: SizedInternalFormat read new SizedInternalFormat($8815); public static property RGB32F_ARB: SizedInternalFormat read new SizedInternalFormat($8815); public static property RGB32F_EXT: SizedInternalFormat read new SizedInternalFormat($8815); public static property RGBA16F: SizedInternalFormat read new SizedInternalFormat($881A); public static property RGBA16F_ARB: SizedInternalFormat read new SizedInternalFormat($881A); public static property RGBA16F_EXT: SizedInternalFormat read new SizedInternalFormat($881A); public static property RGB16F: SizedInternalFormat read new SizedInternalFormat($881B); public static property RGB16F_ARB: SizedInternalFormat read new SizedInternalFormat($881B); public static property RGB16F_EXT: SizedInternalFormat read new SizedInternalFormat($881B); public static property DEPTH24_STENCIL8: SizedInternalFormat read new SizedInternalFormat($88F0); public static property DEPTH24_STENCIL8_EXT: SizedInternalFormat read new SizedInternalFormat($88F0); public static property DEPTH24_STENCIL8_OES: SizedInternalFormat read new SizedInternalFormat($88F0); public static property R11F_G11F_B10F: SizedInternalFormat read new SizedInternalFormat($8C3A); public static property R11F_G11F_B10F_APPLE: SizedInternalFormat read new SizedInternalFormat($8C3A); public static property R11F_G11F_B10F_EXT: SizedInternalFormat read new SizedInternalFormat($8C3A); public static property RGB9_E5: SizedInternalFormat read new SizedInternalFormat($8C3D); public static property RGB9_E5_APPLE: SizedInternalFormat read new SizedInternalFormat($8C3D); public static property RGB9_E5_EXT: SizedInternalFormat read new SizedInternalFormat($8C3D); public static property SRGB8: SizedInternalFormat read new SizedInternalFormat($8C41); public static property SRGB8_EXT: SizedInternalFormat read new SizedInternalFormat($8C41); public static property SRGB8_NV: SizedInternalFormat read new SizedInternalFormat($8C41); public static property SRGB8_ALPHA8: SizedInternalFormat read new SizedInternalFormat($8C43); public static property SRGB8_ALPHA8_EXT: SizedInternalFormat read new SizedInternalFormat($8C43); public static property COMPRESSED_SRGB_S3TC_DXT1_EXT: SizedInternalFormat read new SizedInternalFormat($8C4C); public static property COMPRESSED_SRGB_S3TC_DXT1_NV: SizedInternalFormat read new SizedInternalFormat($8C4C); public static property COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: SizedInternalFormat read new SizedInternalFormat($8C4D); public static property COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV: SizedInternalFormat read new SizedInternalFormat($8C4D); public static property COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: SizedInternalFormat read new SizedInternalFormat($8C4E); public static property COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV: SizedInternalFormat read new SizedInternalFormat($8C4E); public static property COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: SizedInternalFormat read new SizedInternalFormat($8C4F); public static property COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV: SizedInternalFormat read new SizedInternalFormat($8C4F); public static property DEPTH_COMPONENT32F: SizedInternalFormat read new SizedInternalFormat($8CAC); public static property DEPTH32F_STENCIL8: SizedInternalFormat read new SizedInternalFormat($8CAD); public static property STENCIL_INDEX1: SizedInternalFormat read new SizedInternalFormat($8D46); public static property STENCIL_INDEX1_EXT: SizedInternalFormat read new SizedInternalFormat($8D46); public static property STENCIL_INDEX1_OES: SizedInternalFormat read new SizedInternalFormat($8D46); public static property STENCIL_INDEX4: SizedInternalFormat read new SizedInternalFormat($8D47); public static property STENCIL_INDEX4_EXT: SizedInternalFormat read new SizedInternalFormat($8D47); public static property STENCIL_INDEX4_OES: SizedInternalFormat read new SizedInternalFormat($8D47); public static property STENCIL_INDEX8: SizedInternalFormat read new SizedInternalFormat($8D48); public static property STENCIL_INDEX8_EXT: SizedInternalFormat read new SizedInternalFormat($8D48); public static property STENCIL_INDEX8_OES: SizedInternalFormat read new SizedInternalFormat($8D48); public static property STENCIL_INDEX16: SizedInternalFormat read new SizedInternalFormat($8D49); public static property STENCIL_INDEX16_EXT: SizedInternalFormat read new SizedInternalFormat($8D49); public static property RGB565: SizedInternalFormat read new SizedInternalFormat($8D62); public static property RGB565_OES: SizedInternalFormat read new SizedInternalFormat($8D62); public static property ETC1_RGB8_OES: SizedInternalFormat read new SizedInternalFormat($8D64); public static property RGBA32UI: SizedInternalFormat read new SizedInternalFormat($8D70); public static property RGBA32UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D70); public static property RGB32UI: SizedInternalFormat read new SizedInternalFormat($8D71); public static property RGB32UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D71); public static property ALPHA32UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D72); public static property INTENSITY32UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D73); public static property LUMINANCE32UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D74); public static property LUMINANCE_ALPHA32UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D75); public static property RGBA16UI: SizedInternalFormat read new SizedInternalFormat($8D76); public static property RGBA16UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D76); public static property RGB16UI: SizedInternalFormat read new SizedInternalFormat($8D77); public static property RGB16UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D77); public static property ALPHA16UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D78); public static property INTENSITY16UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D79); public static property LUMINANCE16UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D7A); public static property LUMINANCE_ALPHA16UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D7B); public static property RGBA8UI: SizedInternalFormat read new SizedInternalFormat($8D7C); public static property RGBA8UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D7C); public static property RGB8UI: SizedInternalFormat read new SizedInternalFormat($8D7D); public static property RGB8UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D7D); public static property ALPHA8UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D7E); public static property INTENSITY8UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D7F); public static property LUMINANCE8UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D80); public static property LUMINANCE_ALPHA8UI_EXT: SizedInternalFormat read new SizedInternalFormat($8D81); public static property RGBA32I: SizedInternalFormat read new SizedInternalFormat($8D82); public static property RGBA32I_EXT: SizedInternalFormat read new SizedInternalFormat($8D82); public static property RGB32I: SizedInternalFormat read new SizedInternalFormat($8D83); public static property RGB32I_EXT: SizedInternalFormat read new SizedInternalFormat($8D83); public static property ALPHA32I_EXT: SizedInternalFormat read new SizedInternalFormat($8D84); public static property INTENSITY32I_EXT: SizedInternalFormat read new SizedInternalFormat($8D85); public static property LUMINANCE32I_EXT: SizedInternalFormat read new SizedInternalFormat($8D86); public static property LUMINANCE_ALPHA32I_EXT: SizedInternalFormat read new SizedInternalFormat($8D87); public static property RGBA16I: SizedInternalFormat read new SizedInternalFormat($8D88); public static property RGBA16I_EXT: SizedInternalFormat read new SizedInternalFormat($8D88); public static property RGB16I: SizedInternalFormat read new SizedInternalFormat($8D89); public static property RGB16I_EXT: SizedInternalFormat read new SizedInternalFormat($8D89); public static property ALPHA16I_EXT: SizedInternalFormat read new SizedInternalFormat($8D8A); public static property INTENSITY16I_EXT: SizedInternalFormat read new SizedInternalFormat($8D8B); public static property LUMINANCE16I_EXT: SizedInternalFormat read new SizedInternalFormat($8D8C); public static property LUMINANCE_ALPHA16I_EXT: SizedInternalFormat read new SizedInternalFormat($8D8D); public static property RGBA8I: SizedInternalFormat read new SizedInternalFormat($8D8E); public static property RGBA8I_EXT: SizedInternalFormat read new SizedInternalFormat($8D8E); public static property RGB8I: SizedInternalFormat read new SizedInternalFormat($8D8F); public static property RGB8I_EXT: SizedInternalFormat read new SizedInternalFormat($8D8F); public static property ALPHA8I_EXT: SizedInternalFormat read new SizedInternalFormat($8D90); public static property INTENSITY8I_EXT: SizedInternalFormat read new SizedInternalFormat($8D91); public static property LUMINANCE8I_EXT: SizedInternalFormat read new SizedInternalFormat($8D92); public static property LUMINANCE_ALPHA8I_EXT: SizedInternalFormat read new SizedInternalFormat($8D93); public static property DEPTH_COMPONENT32F_NV: SizedInternalFormat read new SizedInternalFormat($8DAB); public static property DEPTH32F_STENCIL8_NV: SizedInternalFormat read new SizedInternalFormat($8DAC); public static property COMPRESSED_RED_RGTC1: SizedInternalFormat read new SizedInternalFormat($8DBB); public static property COMPRESSED_RED_RGTC1_EXT: SizedInternalFormat read new SizedInternalFormat($8DBB); public static property COMPRESSED_SIGNED_RED_RGTC1: SizedInternalFormat read new SizedInternalFormat($8DBC); public static property COMPRESSED_SIGNED_RED_RGTC1_EXT: SizedInternalFormat read new SizedInternalFormat($8DBC); public static property COMPRESSED_RED_GREEN_RGTC2_EXT: SizedInternalFormat read new SizedInternalFormat($8DBD); public static property COMPRESSED_RG_RGTC2: SizedInternalFormat read new SizedInternalFormat($8DBD); public static property COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: SizedInternalFormat read new SizedInternalFormat($8DBE); public static property COMPRESSED_SIGNED_RG_RGTC2: SizedInternalFormat read new SizedInternalFormat($8DBE); public static property COMPRESSED_RGBA_BPTC_UNORM: SizedInternalFormat read new SizedInternalFormat($8E8C); public static property COMPRESSED_RGBA_BPTC_UNORM_ARB: SizedInternalFormat read new SizedInternalFormat($8E8C); public static property COMPRESSED_RGBA_BPTC_UNORM_EXT: SizedInternalFormat read new SizedInternalFormat($8E8C); public static property COMPRESSED_SRGB_ALPHA_BPTC_UNORM: SizedInternalFormat read new SizedInternalFormat($8E8D); public static property COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB: SizedInternalFormat read new SizedInternalFormat($8E8D); public static property COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT: SizedInternalFormat read new SizedInternalFormat($8E8D); public static property COMPRESSED_RGB_BPTC_SIGNED_FLOAT: SizedInternalFormat read new SizedInternalFormat($8E8E); public static property COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB: SizedInternalFormat read new SizedInternalFormat($8E8E); public static property COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT: SizedInternalFormat read new SizedInternalFormat($8E8E); public static property COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT: SizedInternalFormat read new SizedInternalFormat($8E8F); public static property COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB: SizedInternalFormat read new SizedInternalFormat($8E8F); public static property COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: SizedInternalFormat read new SizedInternalFormat($8E8F); public static property R8_SNORM: SizedInternalFormat read new SizedInternalFormat($8F94); public static property RG8_SNORM: SizedInternalFormat read new SizedInternalFormat($8F95); public static property RGB8_SNORM: SizedInternalFormat read new SizedInternalFormat($8F96); public static property RGBA8_SNORM: SizedInternalFormat read new SizedInternalFormat($8F97); public static property R16_SNORM: SizedInternalFormat read new SizedInternalFormat($8F98); public static property R16_SNORM_EXT: SizedInternalFormat read new SizedInternalFormat($8F98); public static property RG16_SNORM: SizedInternalFormat read new SizedInternalFormat($8F99); public static property RG16_SNORM_EXT: SizedInternalFormat read new SizedInternalFormat($8F99); public static property RGB16_SNORM: SizedInternalFormat read new SizedInternalFormat($8F9A); public static property RGB16_SNORM_EXT: SizedInternalFormat read new SizedInternalFormat($8F9A); public static property RGBA16_SNORM: SizedInternalFormat read new SizedInternalFormat($8F9B); public static property RGBA16_SNORM_EXT: SizedInternalFormat read new SizedInternalFormat($8F9B); public static property RGB10_A2UI: SizedInternalFormat read new SizedInternalFormat($906F); public static property COMPRESSED_R11_EAC: SizedInternalFormat read new SizedInternalFormat($9270); public static property COMPRESSED_R11_EAC_OES: SizedInternalFormat read new SizedInternalFormat($9270); public static property COMPRESSED_SIGNED_R11_EAC: SizedInternalFormat read new SizedInternalFormat($9271); public static property COMPRESSED_SIGNED_R11_EAC_OES: SizedInternalFormat read new SizedInternalFormat($9271); public static property COMPRESSED_RG11_EAC: SizedInternalFormat read new SizedInternalFormat($9272); public static property COMPRESSED_RG11_EAC_OES: SizedInternalFormat read new SizedInternalFormat($9272); public static property COMPRESSED_SIGNED_RG11_EAC: SizedInternalFormat read new SizedInternalFormat($9273); public static property COMPRESSED_SIGNED_RG11_EAC_OES: SizedInternalFormat read new SizedInternalFormat($9273); public static property COMPRESSED_RGB8_ETC2: SizedInternalFormat read new SizedInternalFormat($9274); public static property COMPRESSED_RGB8_ETC2_OES: SizedInternalFormat read new SizedInternalFormat($9274); public static property COMPRESSED_SRGB8_ETC2: SizedInternalFormat read new SizedInternalFormat($9275); public static property COMPRESSED_SRGB8_ETC2_OES: SizedInternalFormat read new SizedInternalFormat($9275); public static property COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: SizedInternalFormat read new SizedInternalFormat($9276); public static property COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES: SizedInternalFormat read new SizedInternalFormat($9276); public static property COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: SizedInternalFormat read new SizedInternalFormat($9277); public static property COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES: SizedInternalFormat read new SizedInternalFormat($9277); public static property COMPRESSED_RGBA8_ETC2_EAC: SizedInternalFormat read new SizedInternalFormat($9278); public static property COMPRESSED_RGBA8_ETC2_EAC_OES: SizedInternalFormat read new SizedInternalFormat($9278); public static property COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: SizedInternalFormat read new SizedInternalFormat($9279); public static property COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_OES: SizedInternalFormat read new SizedInternalFormat($9279); public static property COMPRESSED_RGBA_ASTC_4x4: SizedInternalFormat read new SizedInternalFormat($93B0); public static property COMPRESSED_RGBA_ASTC_4x4_KHR: SizedInternalFormat read new SizedInternalFormat($93B0); public static property COMPRESSED_RGBA_ASTC_5x4: SizedInternalFormat read new SizedInternalFormat($93B1); public static property COMPRESSED_RGBA_ASTC_5x4_KHR: SizedInternalFormat read new SizedInternalFormat($93B1); public static property COMPRESSED_RGBA_ASTC_5x5: SizedInternalFormat read new SizedInternalFormat($93B2); public static property COMPRESSED_RGBA_ASTC_5x5_KHR: SizedInternalFormat read new SizedInternalFormat($93B2); public static property COMPRESSED_RGBA_ASTC_6x5: SizedInternalFormat read new SizedInternalFormat($93B3); public static property COMPRESSED_RGBA_ASTC_6x5_KHR: SizedInternalFormat read new SizedInternalFormat($93B3); public static property COMPRESSED_RGBA_ASTC_6x6: SizedInternalFormat read new SizedInternalFormat($93B4); public static property COMPRESSED_RGBA_ASTC_6x6_KHR: SizedInternalFormat read new SizedInternalFormat($93B4); public static property COMPRESSED_RGBA_ASTC_8x5: SizedInternalFormat read new SizedInternalFormat($93B5); public static property COMPRESSED_RGBA_ASTC_8x5_KHR: SizedInternalFormat read new SizedInternalFormat($93B5); public static property COMPRESSED_RGBA_ASTC_8x6: SizedInternalFormat read new SizedInternalFormat($93B6); public static property COMPRESSED_RGBA_ASTC_8x6_KHR: SizedInternalFormat read new SizedInternalFormat($93B6); public static property COMPRESSED_RGBA_ASTC_8x8: SizedInternalFormat read new SizedInternalFormat($93B7); public static property COMPRESSED_RGBA_ASTC_8x8_KHR: SizedInternalFormat read new SizedInternalFormat($93B7); public static property COMPRESSED_RGBA_ASTC_10x5: SizedInternalFormat read new SizedInternalFormat($93B8); public static property COMPRESSED_RGBA_ASTC_10x5_KHR: SizedInternalFormat read new SizedInternalFormat($93B8); public static property COMPRESSED_RGBA_ASTC_10x6: SizedInternalFormat read new SizedInternalFormat($93B9); public static property COMPRESSED_RGBA_ASTC_10x6_KHR: SizedInternalFormat read new SizedInternalFormat($93B9); public static property COMPRESSED_RGBA_ASTC_10x8: SizedInternalFormat read new SizedInternalFormat($93BA); public static property COMPRESSED_RGBA_ASTC_10x8_KHR: SizedInternalFormat read new SizedInternalFormat($93BA); public static property COMPRESSED_RGBA_ASTC_10x10: SizedInternalFormat read new SizedInternalFormat($93BB); public static property COMPRESSED_RGBA_ASTC_10x10_KHR: SizedInternalFormat read new SizedInternalFormat($93BB); public static property COMPRESSED_RGBA_ASTC_12x10: SizedInternalFormat read new SizedInternalFormat($93BC); public static property COMPRESSED_RGBA_ASTC_12x10_KHR: SizedInternalFormat read new SizedInternalFormat($93BC); public static property COMPRESSED_RGBA_ASTC_12x12: SizedInternalFormat read new SizedInternalFormat($93BD); public static property COMPRESSED_RGBA_ASTC_12x12_KHR: SizedInternalFormat read new SizedInternalFormat($93BD); public static property COMPRESSED_RGBA_ASTC_3x3x3_OES: SizedInternalFormat read new SizedInternalFormat($93C0); public static property COMPRESSED_RGBA_ASTC_4x3x3_OES: SizedInternalFormat read new SizedInternalFormat($93C1); public static property COMPRESSED_RGBA_ASTC_4x4x3_OES: SizedInternalFormat read new SizedInternalFormat($93C2); public static property COMPRESSED_RGBA_ASTC_4x4x4_OES: SizedInternalFormat read new SizedInternalFormat($93C3); public static property COMPRESSED_RGBA_ASTC_5x4x4_OES: SizedInternalFormat read new SizedInternalFormat($93C4); public static property COMPRESSED_RGBA_ASTC_5x5x4_OES: SizedInternalFormat read new SizedInternalFormat($93C5); public static property COMPRESSED_RGBA_ASTC_5x5x5_OES: SizedInternalFormat read new SizedInternalFormat($93C6); public static property COMPRESSED_RGBA_ASTC_6x5x5_OES: SizedInternalFormat read new SizedInternalFormat($93C7); public static property COMPRESSED_RGBA_ASTC_6x6x5_OES: SizedInternalFormat read new SizedInternalFormat($93C8); public static property COMPRESSED_RGBA_ASTC_6x6x6_OES: SizedInternalFormat read new SizedInternalFormat($93C9); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_4x4: SizedInternalFormat read new SizedInternalFormat($93D0); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: SizedInternalFormat read new SizedInternalFormat($93D0); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_5x4: SizedInternalFormat read new SizedInternalFormat($93D1); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: SizedInternalFormat read new SizedInternalFormat($93D1); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_5x5: SizedInternalFormat read new SizedInternalFormat($93D2); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: SizedInternalFormat read new SizedInternalFormat($93D2); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_6x5: SizedInternalFormat read new SizedInternalFormat($93D3); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: SizedInternalFormat read new SizedInternalFormat($93D3); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_6x6: SizedInternalFormat read new SizedInternalFormat($93D4); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: SizedInternalFormat read new SizedInternalFormat($93D4); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_8x5: SizedInternalFormat read new SizedInternalFormat($93D5); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: SizedInternalFormat read new SizedInternalFormat($93D5); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_8x6: SizedInternalFormat read new SizedInternalFormat($93D6); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: SizedInternalFormat read new SizedInternalFormat($93D6); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_8x8: SizedInternalFormat read new SizedInternalFormat($93D7); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: SizedInternalFormat read new SizedInternalFormat($93D7); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x5: SizedInternalFormat read new SizedInternalFormat($93D8); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: SizedInternalFormat read new SizedInternalFormat($93D8); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x6: SizedInternalFormat read new SizedInternalFormat($93D9); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: SizedInternalFormat read new SizedInternalFormat($93D9); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x8: SizedInternalFormat read new SizedInternalFormat($93DA); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: SizedInternalFormat read new SizedInternalFormat($93DA); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x10: SizedInternalFormat read new SizedInternalFormat($93DB); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: SizedInternalFormat read new SizedInternalFormat($93DB); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_12x10: SizedInternalFormat read new SizedInternalFormat($93DC); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: SizedInternalFormat read new SizedInternalFormat($93DC); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_12x12: SizedInternalFormat read new SizedInternalFormat($93DD); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: SizedInternalFormat read new SizedInternalFormat($93DD); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES: SizedInternalFormat read new SizedInternalFormat($93E0); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES: SizedInternalFormat read new SizedInternalFormat($93E1); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES: SizedInternalFormat read new SizedInternalFormat($93E2); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES: SizedInternalFormat read new SizedInternalFormat($93E3); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES: SizedInternalFormat read new SizedInternalFormat($93E4); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES: SizedInternalFormat read new SizedInternalFormat($93E5); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES: SizedInternalFormat read new SizedInternalFormat($93E6); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES: SizedInternalFormat read new SizedInternalFormat($93E7); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES: SizedInternalFormat read new SizedInternalFormat($93E8); public static property COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES: SizedInternalFormat read new SizedInternalFormat($93E9); public function ToString: string; override; begin if self.val = UInt32($2A10) then Result := 'R3_G3_B2' else if self.val = UInt32($803B) then Result := 'ALPHA4' else if self.val = UInt32($803B) then Result := 'ALPHA4_EXT' else if self.val = UInt32($803C) then Result := 'ALPHA8' else if self.val = UInt32($803C) then Result := 'ALPHA8_EXT' else if self.val = UInt32($803C) then Result := 'ALPHA8_OES' else if self.val = UInt32($803D) then Result := 'ALPHA12' else if self.val = UInt32($803D) then Result := 'ALPHA12_EXT' else if self.val = UInt32($803E) then Result := 'ALPHA16' else if self.val = UInt32($803E) then Result := 'ALPHA16_EXT' else if self.val = UInt32($803F) then Result := 'LUMINANCE4' else if self.val = UInt32($803F) then Result := 'LUMINANCE4_EXT' else if self.val = UInt32($8040) then Result := 'LUMINANCE8' else if self.val = UInt32($8040) then Result := 'LUMINANCE8_EXT' else if self.val = UInt32($8040) then Result := 'LUMINANCE8_OES' else if self.val = UInt32($8041) then Result := 'LUMINANCE12' else if self.val = UInt32($8041) then Result := 'LUMINANCE12_EXT' else if self.val = UInt32($8042) then Result := 'LUMINANCE16' else if self.val = UInt32($8042) then Result := 'LUMINANCE16_EXT' else if self.val = UInt32($8043) then Result := 'LUMINANCE4_ALPHA4' else if self.val = UInt32($8043) then Result := 'LUMINANCE4_ALPHA4_EXT' else if self.val = UInt32($8043) then Result := 'LUMINANCE4_ALPHA4_OES' else if self.val = UInt32($8044) then Result := 'LUMINANCE6_ALPHA2' else if self.val = UInt32($8044) then Result := 'LUMINANCE6_ALPHA2_EXT' else if self.val = UInt32($8045) then Result := 'LUMINANCE8_ALPHA8' else if self.val = UInt32($8045) then Result := 'LUMINANCE8_ALPHA8_EXT' else if self.val = UInt32($8045) then Result := 'LUMINANCE8_ALPHA8_OES' else if self.val = UInt32($8046) then Result := 'LUMINANCE12_ALPHA4' else if self.val = UInt32($8046) then Result := 'LUMINANCE12_ALPHA4_EXT' else if self.val = UInt32($8047) then Result := 'LUMINANCE12_ALPHA12' else if self.val = UInt32($8047) then Result := 'LUMINANCE12_ALPHA12_EXT' else if self.val = UInt32($8048) then Result := 'LUMINANCE16_ALPHA16' else if self.val = UInt32($8048) then Result := 'LUMINANCE16_ALPHA16_EXT' else if self.val = UInt32($804A) then Result := 'INTENSITY4' else if self.val = UInt32($804A) then Result := 'INTENSITY4_EXT' else if self.val = UInt32($804B) then Result := 'INTENSITY8' else if self.val = UInt32($804B) then Result := 'INTENSITY8_EXT' else if self.val = UInt32($804C) then Result := 'INTENSITY12' else if self.val = UInt32($804C) then Result := 'INTENSITY12_EXT' else if self.val = UInt32($804D) then Result := 'INTENSITY16' else if self.val = UInt32($804D) then Result := 'INTENSITY16_EXT' else if self.val = UInt32($804E) then Result := 'RGB2_EXT' else if self.val = UInt32($804F) then Result := 'RGB4' else if self.val = UInt32($804F) then Result := 'RGB4_EXT' else if self.val = UInt32($8050) then Result := 'RGB5' else if self.val = UInt32($8050) then Result := 'RGB5_EXT' else if self.val = UInt32($8051) then Result := 'RGB8' else if self.val = UInt32($8051) then Result := 'RGB8_EXT' else if self.val = UInt32($8051) then Result := 'RGB8_OES' else if self.val = UInt32($8052) then Result := 'RGB10' else if self.val = UInt32($8052) then Result := 'RGB10_EXT' else if self.val = UInt32($8053) then Result := 'RGB12' else if self.val = UInt32($8053) then Result := 'RGB12_EXT' else if self.val = UInt32($8054) then Result := 'RGB16' else if self.val = UInt32($8054) then Result := 'RGB16_EXT' else if self.val = UInt32($8055) then Result := 'RGBA2' else if self.val = UInt32($8055) then Result := 'RGBA2_EXT' else if self.val = UInt32($8056) then Result := 'RGBA4' else if self.val = UInt32($8056) then Result := 'RGBA4_EXT' else if self.val = UInt32($8056) then Result := 'RGBA4_OES' else if self.val = UInt32($8057) then Result := 'RGB5_A1' else if self.val = UInt32($8057) then Result := 'RGB5_A1_EXT' else if self.val = UInt32($8057) then Result := 'RGB5_A1_OES' else if self.val = UInt32($8058) then Result := 'RGBA8' else if self.val = UInt32($8058) then Result := 'RGBA8_EXT' else if self.val = UInt32($8058) then Result := 'RGBA8_OES' else if self.val = UInt32($8059) then Result := 'RGB10_A2' else if self.val = UInt32($8059) then Result := 'RGB10_A2_EXT' else if self.val = UInt32($805A) then Result := 'RGBA12' else if self.val = UInt32($805A) then Result := 'RGBA12_EXT' else if self.val = UInt32($805B) then Result := 'RGBA16' else if self.val = UInt32($805B) then Result := 'RGBA16_EXT' else if self.val = UInt32($81A5) then Result := 'DEPTH_COMPONENT16' else if self.val = UInt32($81A5) then Result := 'DEPTH_COMPONENT16_ARB' else if self.val = UInt32($81A5) then Result := 'DEPTH_COMPONENT16_OES' else if self.val = UInt32($81A5) then Result := 'DEPTH_COMPONENT16_SGIX' else if self.val = UInt32($81A6) then Result := 'DEPTH_COMPONENT24' else if self.val = UInt32($81A6) then Result := 'DEPTH_COMPONENT24_ARB' else if self.val = UInt32($81A6) then Result := 'DEPTH_COMPONENT24_OES' else if self.val = UInt32($81A6) then Result := 'DEPTH_COMPONENT24_SGIX' else if self.val = UInt32($81A7) then Result := 'DEPTH_COMPONENT32' else if self.val = UInt32($81A7) then Result := 'DEPTH_COMPONENT32_ARB' else if self.val = UInt32($81A7) then Result := 'DEPTH_COMPONENT32_OES' else if self.val = UInt32($81A7) then Result := 'DEPTH_COMPONENT32_SGIX' else if self.val = UInt32($8229) then Result := 'R8' else if self.val = UInt32($8229) then Result := 'R8_EXT' else if self.val = UInt32($822A) then Result := 'R16' else if self.val = UInt32($822A) then Result := 'R16_EXT' else if self.val = UInt32($822B) then Result := 'RG8' else if self.val = UInt32($822B) then Result := 'RG8_EXT' else if self.val = UInt32($822C) then Result := 'RG16' else if self.val = UInt32($822C) then Result := 'RG16_EXT' else if self.val = UInt32($822D) then Result := 'R16F' else if self.val = UInt32($822D) then Result := 'R16F_EXT' else if self.val = UInt32($822E) then Result := 'R32F' else if self.val = UInt32($822E) then Result := 'R32F_EXT' else if self.val = UInt32($822F) then Result := 'RG16F' else if self.val = UInt32($822F) then Result := 'RG16F_EXT' else if self.val = UInt32($8230) then Result := 'RG32F' else if self.val = UInt32($8230) then Result := 'RG32F_EXT' else if self.val = UInt32($8231) then Result := 'R8I' else if self.val = UInt32($8232) then Result := 'R8UI' else if self.val = UInt32($8233) then Result := 'R16I' else if self.val = UInt32($8234) then Result := 'R16UI' else if self.val = UInt32($8235) then Result := 'R32I' else if self.val = UInt32($8236) then Result := 'R32UI' else if self.val = UInt32($8237) then Result := 'RG8I' else if self.val = UInt32($8238) then Result := 'RG8UI' else if self.val = UInt32($8239) then Result := 'RG16I' else if self.val = UInt32($823A) then Result := 'RG16UI' else if self.val = UInt32($823B) then Result := 'RG32I' else if self.val = UInt32($823C) then Result := 'RG32UI' else if self.val = UInt32($83F0) then Result := 'COMPRESSED_RGB_S3TC_DXT1_EXT' else if self.val = UInt32($83F1) then Result := 'COMPRESSED_RGBA_S3TC_DXT1_EXT' else if self.val = UInt32($83F2) then Result := 'COMPRESSED_RGBA_S3TC_DXT3_ANGLE' else if self.val = UInt32($83F2) then Result := 'COMPRESSED_RGBA_S3TC_DXT3_EXT' else if self.val = UInt32($83F3) then Result := 'COMPRESSED_RGBA_S3TC_DXT5_ANGLE' else if self.val = UInt32($83F3) then Result := 'COMPRESSED_RGBA_S3TC_DXT5_EXT' else if self.val = UInt32($8814) then Result := 'RGBA32F' else if self.val = UInt32($8814) then Result := 'RGBA32F_ARB' else if self.val = UInt32($8814) then Result := 'RGBA32F_EXT' else if self.val = UInt32($8815) then Result := 'RGB32F' else if self.val = UInt32($8815) then Result := 'RGB32F_ARB' else if self.val = UInt32($8815) then Result := 'RGB32F_EXT' else if self.val = UInt32($881A) then Result := 'RGBA16F' else if self.val = UInt32($881A) then Result := 'RGBA16F_ARB' else if self.val = UInt32($881A) then Result := 'RGBA16F_EXT' else if self.val = UInt32($881B) then Result := 'RGB16F' else if self.val = UInt32($881B) then Result := 'RGB16F_ARB' else if self.val = UInt32($881B) then Result := 'RGB16F_EXT' else if self.val = UInt32($88F0) then Result := 'DEPTH24_STENCIL8' else if self.val = UInt32($88F0) then Result := 'DEPTH24_STENCIL8_EXT' else if self.val = UInt32($88F0) then Result := 'DEPTH24_STENCIL8_OES' else if self.val = UInt32($8C3A) then Result := 'R11F_G11F_B10F' else if self.val = UInt32($8C3A) then Result := 'R11F_G11F_B10F_APPLE' else if self.val = UInt32($8C3A) then Result := 'R11F_G11F_B10F_EXT' else if self.val = UInt32($8C3D) then Result := 'RGB9_E5' else if self.val = UInt32($8C3D) then Result := 'RGB9_E5_APPLE' else if self.val = UInt32($8C3D) then Result := 'RGB9_E5_EXT' else if self.val = UInt32($8C41) then Result := 'SRGB8' else if self.val = UInt32($8C41) then Result := 'SRGB8_EXT' else if self.val = UInt32($8C41) then Result := 'SRGB8_NV' else if self.val = UInt32($8C43) then Result := 'SRGB8_ALPHA8' else if self.val = UInt32($8C43) then Result := 'SRGB8_ALPHA8_EXT' else if self.val = UInt32($8C4C) then Result := 'COMPRESSED_SRGB_S3TC_DXT1_EXT' else if self.val = UInt32($8C4C) then Result := 'COMPRESSED_SRGB_S3TC_DXT1_NV' else if self.val = UInt32($8C4D) then Result := 'COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT' else if self.val = UInt32($8C4D) then Result := 'COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV' else if self.val = UInt32($8C4E) then Result := 'COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT' else if self.val = UInt32($8C4E) then Result := 'COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV' else if self.val = UInt32($8C4F) then Result := 'COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT' else if self.val = UInt32($8C4F) then Result := 'COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV' else if self.val = UInt32($8CAC) then Result := 'DEPTH_COMPONENT32F' else if self.val = UInt32($8CAD) then Result := 'DEPTH32F_STENCIL8' else if self.val = UInt32($8D46) then Result := 'STENCIL_INDEX1' else if self.val = UInt32($8D46) then Result := 'STENCIL_INDEX1_EXT' else if self.val = UInt32($8D46) then Result := 'STENCIL_INDEX1_OES' else if self.val = UInt32($8D47) then Result := 'STENCIL_INDEX4' else if self.val = UInt32($8D47) then Result := 'STENCIL_INDEX4_EXT' else if self.val = UInt32($8D47) then Result := 'STENCIL_INDEX4_OES' else if self.val = UInt32($8D48) then Result := 'STENCIL_INDEX8' else if self.val = UInt32($8D48) then Result := 'STENCIL_INDEX8_EXT' else if self.val = UInt32($8D48) then Result := 'STENCIL_INDEX8_OES' else if self.val = UInt32($8D49) then Result := 'STENCIL_INDEX16' else if self.val = UInt32($8D49) then Result := 'STENCIL_INDEX16_EXT' else if self.val = UInt32($8D62) then Result := 'RGB565' else if self.val = UInt32($8D62) then Result := 'RGB565_OES' else if self.val = UInt32($8D64) then Result := 'ETC1_RGB8_OES' else if self.val = UInt32($8D70) then Result := 'RGBA32UI' else if self.val = UInt32($8D70) then Result := 'RGBA32UI_EXT' else if self.val = UInt32($8D71) then Result := 'RGB32UI' else if self.val = UInt32($8D71) then Result := 'RGB32UI_EXT' else if self.val = UInt32($8D72) then Result := 'ALPHA32UI_EXT' else if self.val = UInt32($8D73) then Result := 'INTENSITY32UI_EXT' else if self.val = UInt32($8D74) then Result := 'LUMINANCE32UI_EXT' else if self.val = UInt32($8D75) then Result := 'LUMINANCE_ALPHA32UI_EXT' else if self.val = UInt32($8D76) then Result := 'RGBA16UI' else if self.val = UInt32($8D76) then Result := 'RGBA16UI_EXT' else if self.val = UInt32($8D77) then Result := 'RGB16UI' else if self.val = UInt32($8D77) then Result := 'RGB16UI_EXT' else if self.val = UInt32($8D78) then Result := 'ALPHA16UI_EXT' else if self.val = UInt32($8D79) then Result := 'INTENSITY16UI_EXT' else if self.val = UInt32($8D7A) then Result := 'LUMINANCE16UI_EXT' else if self.val = UInt32($8D7B) then Result := 'LUMINANCE_ALPHA16UI_EXT' else if self.val = UInt32($8D7C) then Result := 'RGBA8UI' else if self.val = UInt32($8D7C) then Result := 'RGBA8UI_EXT' else if self.val = UInt32($8D7D) then Result := 'RGB8UI' else if self.val = UInt32($8D7D) then Result := 'RGB8UI_EXT' else if self.val = UInt32($8D7E) then Result := 'ALPHA8UI_EXT' else if self.val = UInt32($8D7F) then Result := 'INTENSITY8UI_EXT' else if self.val = UInt32($8D80) then Result := 'LUMINANCE8UI_EXT' else if self.val = UInt32($8D81) then Result := 'LUMINANCE_ALPHA8UI_EXT' else if self.val = UInt32($8D82) then Result := 'RGBA32I' else if self.val = UInt32($8D82) then Result := 'RGBA32I_EXT' else if self.val = UInt32($8D83) then Result := 'RGB32I' else if self.val = UInt32($8D83) then Result := 'RGB32I_EXT' else if self.val = UInt32($8D84) then Result := 'ALPHA32I_EXT' else if self.val = UInt32($8D85) then Result := 'INTENSITY32I_EXT' else if self.val = UInt32($8D86) then Result := 'LUMINANCE32I_EXT' else if self.val = UInt32($8D87) then Result := 'LUMINANCE_ALPHA32I_EXT' else if self.val = UInt32($8D88) then Result := 'RGBA16I' else if self.val = UInt32($8D88) then Result := 'RGBA16I_EXT' else if self.val = UInt32($8D89) then Result := 'RGB16I' else if self.val = UInt32($8D89) then Result := 'RGB16I_EXT' else if self.val = UInt32($8D8A) then Result := 'ALPHA16I_EXT' else if self.val = UInt32($8D8B) then Result := 'INTENSITY16I_EXT' else if self.val = UInt32($8D8C) then Result := 'LUMINANCE16I_EXT' else if self.val = UInt32($8D8D) then Result := 'LUMINANCE_ALPHA16I_EXT' else if self.val = UInt32($8D8E) then Result := 'RGBA8I' else if self.val = UInt32($8D8E) then Result := 'RGBA8I_EXT' else if self.val = UInt32($8D8F) then Result := 'RGB8I' else if self.val = UInt32($8D8F) then Result := 'RGB8I_EXT' else if self.val = UInt32($8D90) then Result := 'ALPHA8I_EXT' else if self.val = UInt32($8D91) then Result := 'INTENSITY8I_EXT' else if self.val = UInt32($8D92) then Result := 'LUMINANCE8I_EXT' else if self.val = UInt32($8D93) then Result := 'LUMINANCE_ALPHA8I_EXT' else if self.val = UInt32($8DAB) then Result := 'DEPTH_COMPONENT32F_NV' else if self.val = UInt32($8DAC) then Result := 'DEPTH32F_STENCIL8_NV' else if self.val = UInt32($8DBB) then Result := 'COMPRESSED_RED_RGTC1' else if self.val = UInt32($8DBB) then Result := 'COMPRESSED_RED_RGTC1_EXT' else if self.val = UInt32($8DBC) then Result := 'COMPRESSED_SIGNED_RED_RGTC1' else if self.val = UInt32($8DBC) then Result := 'COMPRESSED_SIGNED_RED_RGTC1_EXT' else if self.val = UInt32($8DBD) then Result := 'COMPRESSED_RED_GREEN_RGTC2_EXT' else if self.val = UInt32($8DBD) then Result := 'COMPRESSED_RG_RGTC2' else if self.val = UInt32($8DBE) then Result := 'COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT' else if self.val = UInt32($8DBE) then Result := 'COMPRESSED_SIGNED_RG_RGTC2' else if self.val = UInt32($8E8C) then Result := 'COMPRESSED_RGBA_BPTC_UNORM' else if self.val = UInt32($8E8C) then Result := 'COMPRESSED_RGBA_BPTC_UNORM_ARB' else if self.val = UInt32($8E8C) then Result := 'COMPRESSED_RGBA_BPTC_UNORM_EXT' else if self.val = UInt32($8E8D) then Result := 'COMPRESSED_SRGB_ALPHA_BPTC_UNORM' else if self.val = UInt32($8E8D) then Result := 'COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB' else if self.val = UInt32($8E8D) then Result := 'COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT' else if self.val = UInt32($8E8E) then Result := 'COMPRESSED_RGB_BPTC_SIGNED_FLOAT' else if self.val = UInt32($8E8E) then Result := 'COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB' else if self.val = UInt32($8E8E) then Result := 'COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT' else if self.val = UInt32($8E8F) then Result := 'COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT' else if self.val = UInt32($8E8F) then Result := 'COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB' else if self.val = UInt32($8E8F) then Result := 'COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT' else if self.val = UInt32($8F94) then Result := 'R8_SNORM' else if self.val = UInt32($8F95) then Result := 'RG8_SNORM' else if self.val = UInt32($8F96) then Result := 'RGB8_SNORM' else if self.val = UInt32($8F97) then Result := 'RGBA8_SNORM' else if self.val = UInt32($8F98) then Result := 'R16_SNORM' else if self.val = UInt32($8F98) then Result := 'R16_SNORM_EXT' else if self.val = UInt32($8F99) then Result := 'RG16_SNORM' else if self.val = UInt32($8F99) then Result := 'RG16_SNORM_EXT' else if self.val = UInt32($8F9A) then Result := 'RGB16_SNORM' else if self.val = UInt32($8F9A) then Result := 'RGB16_SNORM_EXT' else if self.val = UInt32($8F9B) then Result := 'RGBA16_SNORM' else if self.val = UInt32($8F9B) then Result := 'RGBA16_SNORM_EXT' else if self.val = UInt32($906F) then Result := 'RGB10_A2UI' else if self.val = UInt32($9270) then Result := 'COMPRESSED_R11_EAC' else if self.val = UInt32($9270) then Result := 'COMPRESSED_R11_EAC_OES' else if self.val = UInt32($9271) then Result := 'COMPRESSED_SIGNED_R11_EAC' else if self.val = UInt32($9271) then Result := 'COMPRESSED_SIGNED_R11_EAC_OES' else if self.val = UInt32($9272) then Result := 'COMPRESSED_RG11_EAC' else if self.val = UInt32($9272) then Result := 'COMPRESSED_RG11_EAC_OES' else if self.val = UInt32($9273) then Result := 'COMPRESSED_SIGNED_RG11_EAC' else if self.val = UInt32($9273) then Result := 'COMPRESSED_SIGNED_RG11_EAC_OES' else if self.val = UInt32($9274) then Result := 'COMPRESSED_RGB8_ETC2' else if self.val = UInt32($9274) then Result := 'COMPRESSED_RGB8_ETC2_OES' else if self.val = UInt32($9275) then Result := 'COMPRESSED_SRGB8_ETC2' else if self.val = UInt32($9275) then Result := 'COMPRESSED_SRGB8_ETC2_OES' else if self.val = UInt32($9276) then Result := 'COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2' else if self.val = UInt32($9276) then Result := 'COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES' else if self.val = UInt32($9277) then Result := 'COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2' else if self.val = UInt32($9277) then Result := 'COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES' else if self.val = UInt32($9278) then Result := 'COMPRESSED_RGBA8_ETC2_EAC' else if self.val = UInt32($9278) then Result := 'COMPRESSED_RGBA8_ETC2_EAC_OES' else if self.val = UInt32($9279) then Result := 'COMPRESSED_SRGB8_ALPHA8_ETC2_EAC' else if self.val = UInt32($9279) then Result := 'COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_OES' else if self.val = UInt32($93B0) then Result := 'COMPRESSED_RGBA_ASTC_4x4' else if self.val = UInt32($93B0) then Result := 'COMPRESSED_RGBA_ASTC_4x4_KHR' else if self.val = UInt32($93B1) then Result := 'COMPRESSED_RGBA_ASTC_5x4' else if self.val = UInt32($93B1) then Result := 'COMPRESSED_RGBA_ASTC_5x4_KHR' else if self.val = UInt32($93B2) then Result := 'COMPRESSED_RGBA_ASTC_5x5' else if self.val = UInt32($93B2) then Result := 'COMPRESSED_RGBA_ASTC_5x5_KHR' else if self.val = UInt32($93B3) then Result := 'COMPRESSED_RGBA_ASTC_6x5' else if self.val = UInt32($93B3) then Result := 'COMPRESSED_RGBA_ASTC_6x5_KHR' else if self.val = UInt32($93B4) then Result := 'COMPRESSED_RGBA_ASTC_6x6' else if self.val = UInt32($93B4) then Result := 'COMPRESSED_RGBA_ASTC_6x6_KHR' else if self.val = UInt32($93B5) then Result := 'COMPRESSED_RGBA_ASTC_8x5' else if self.val = UInt32($93B5) then Result := 'COMPRESSED_RGBA_ASTC_8x5_KHR' else if self.val = UInt32($93B6) then Result := 'COMPRESSED_RGBA_ASTC_8x6' else if self.val = UInt32($93B6) then Result := 'COMPRESSED_RGBA_ASTC_8x6_KHR' else if self.val = UInt32($93B7) then Result := 'COMPRESSED_RGBA_ASTC_8x8' else if self.val = UInt32($93B7) then Result := 'COMPRESSED_RGBA_ASTC_8x8_KHR' else if self.val = UInt32($93B8) then Result := 'COMPRESSED_RGBA_ASTC_10x5' else if self.val = UInt32($93B8) then Result := 'COMPRESSED_RGBA_ASTC_10x5_KHR' else if self.val = UInt32($93B9) then Result := 'COMPRESSED_RGBA_ASTC_10x6' else if self.val = UInt32($93B9) then Result := 'COMPRESSED_RGBA_ASTC_10x6_KHR' else if self.val = UInt32($93BA) then Result := 'COMPRESSED_RGBA_ASTC_10x8' else if self.val = UInt32($93BA) then Result := 'COMPRESSED_RGBA_ASTC_10x8_KHR' else if self.val = UInt32($93BB) then Result := 'COMPRESSED_RGBA_ASTC_10x10' else if self.val = UInt32($93BB) then Result := 'COMPRESSED_RGBA_ASTC_10x10_KHR' else if self.val = UInt32($93BC) then Result := 'COMPRESSED_RGBA_ASTC_12x10' else if self.val = UInt32($93BC) then Result := 'COMPRESSED_RGBA_ASTC_12x10_KHR' else if self.val = UInt32($93BD) then Result := 'COMPRESSED_RGBA_ASTC_12x12' else if self.val = UInt32($93BD) then Result := 'COMPRESSED_RGBA_ASTC_12x12_KHR' else if self.val = UInt32($93C0) then Result := 'COMPRESSED_RGBA_ASTC_3x3x3_OES' else if self.val = UInt32($93C1) then Result := 'COMPRESSED_RGBA_ASTC_4x3x3_OES' else if self.val = UInt32($93C2) then Result := 'COMPRESSED_RGBA_ASTC_4x4x3_OES' else if self.val = UInt32($93C3) then Result := 'COMPRESSED_RGBA_ASTC_4x4x4_OES' else if self.val = UInt32($93C4) then Result := 'COMPRESSED_RGBA_ASTC_5x4x4_OES' else if self.val = UInt32($93C5) then Result := 'COMPRESSED_RGBA_ASTC_5x5x4_OES' else if self.val = UInt32($93C6) then Result := 'COMPRESSED_RGBA_ASTC_5x5x5_OES' else if self.val = UInt32($93C7) then Result := 'COMPRESSED_RGBA_ASTC_6x5x5_OES' else if self.val = UInt32($93C8) then Result := 'COMPRESSED_RGBA_ASTC_6x6x5_OES' else if self.val = UInt32($93C9) then Result := 'COMPRESSED_RGBA_ASTC_6x6x6_OES' else if self.val = UInt32($93D0) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_4x4' else if self.val = UInt32($93D0) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR' else if self.val = UInt32($93D1) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_5x4' else if self.val = UInt32($93D1) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR' else if self.val = UInt32($93D2) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_5x5' else if self.val = UInt32($93D2) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR' else if self.val = UInt32($93D3) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_6x5' else if self.val = UInt32($93D3) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR' else if self.val = UInt32($93D4) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_6x6' else if self.val = UInt32($93D4) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR' else if self.val = UInt32($93D5) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_8x5' else if self.val = UInt32($93D5) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR' else if self.val = UInt32($93D6) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_8x6' else if self.val = UInt32($93D6) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR' else if self.val = UInt32($93D7) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_8x8' else if self.val = UInt32($93D7) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR' else if self.val = UInt32($93D8) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x5' else if self.val = UInt32($93D8) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR' else if self.val = UInt32($93D9) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x6' else if self.val = UInt32($93D9) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR' else if self.val = UInt32($93DA) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x8' else if self.val = UInt32($93DA) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR' else if self.val = UInt32($93DB) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x10' else if self.val = UInt32($93DB) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR' else if self.val = UInt32($93DC) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_12x10' else if self.val = UInt32($93DC) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR' else if self.val = UInt32($93DD) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_12x12' else if self.val = UInt32($93DD) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR' else if self.val = UInt32($93E0) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES' else if self.val = UInt32($93E1) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES' else if self.val = UInt32($93E2) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES' else if self.val = UInt32($93E3) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES' else if self.val = UInt32($93E4) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES' else if self.val = UInt32($93E5) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES' else if self.val = UInt32($93E6) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES' else if self.val = UInt32($93E7) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES' else if self.val = UInt32($93E8) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES' else if self.val = UInt32($93E9) then Result := 'COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES' else Result := $'SizedInternalFormat[{self.val}]'; end; end; StencilFaceDirection = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FRONT: StencilFaceDirection read new StencilFaceDirection($0404); public static property BACK: StencilFaceDirection read new StencilFaceDirection($0405); public static property FRONT_AND_BACK: StencilFaceDirection read new StencilFaceDirection($0408); public function ToString: string; override; begin if self.val = UInt32($0404) then Result := 'FRONT' else if self.val = UInt32($0405) then Result := 'BACK' else if self.val = UInt32($0408) then Result := 'FRONT_AND_BACK' else Result := $'StencilFaceDirection[{self.val}]'; end; end; StencilFunction = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NEVER: StencilFunction read new StencilFunction($0200); public static property LESS: StencilFunction read new StencilFunction($0201); public static property EQUAL: StencilFunction read new StencilFunction($0202); public static property LEQUAL: StencilFunction read new StencilFunction($0203); public static property GREATER: StencilFunction read new StencilFunction($0204); public static property NOTEQUAL: StencilFunction read new StencilFunction($0205); public static property GEQUAL: StencilFunction read new StencilFunction($0206); public static property ALWAYS: StencilFunction read new StencilFunction($0207); public function ToString: string; override; begin if self.val = UInt32($0200) then Result := 'NEVER' else if self.val = UInt32($0201) then Result := 'LESS' else if self.val = UInt32($0202) then Result := 'EQUAL' else if self.val = UInt32($0203) then Result := 'LEQUAL' else if self.val = UInt32($0204) then Result := 'GREATER' else if self.val = UInt32($0205) then Result := 'NOTEQUAL' else if self.val = UInt32($0206) then Result := 'GEQUAL' else if self.val = UInt32($0207) then Result := 'ALWAYS' else Result := $'StencilFunction[{self.val}]'; end; end; StencilOp = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ZERO: StencilOp read new StencilOp($0000); public static property INVERT: StencilOp read new StencilOp($150A); public static property KEEP: StencilOp read new StencilOp($1E00); public static property REPLACE: StencilOp read new StencilOp($1E01); public static property INCR: StencilOp read new StencilOp($1E02); public static property DECR: StencilOp read new StencilOp($1E03); public static property INCR_WRAP: StencilOp read new StencilOp($8507); public static property DECR_WRAP: StencilOp read new StencilOp($8508); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'ZERO' else if self.val = UInt32($150A) then Result := 'INVERT' else if self.val = UInt32($1E00) then Result := 'KEEP' else if self.val = UInt32($1E01) then Result := 'REPLACE' else if self.val = UInt32($1E02) then Result := 'INCR' else if self.val = UInt32($1E03) then Result := 'DECR' else if self.val = UInt32($8507) then Result := 'INCR_WRAP' else if self.val = UInt32($8508) then Result := 'DECR_WRAP' else Result := $'StencilOp[{self.val}]'; end; end; StringName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property VENDOR: StringName read new StringName($1F00); public static property RENDERER: StringName read new StringName($1F01); public static property VERSION: StringName read new StringName($1F02); public static property EXTENSIONS: StringName read new StringName($1F03); public static property SHADING_LANGUAGE_VERSION: StringName read new StringName($8B8C); public function ToString: string; override; begin if self.val = UInt32($1F00) then Result := 'VENDOR' else if self.val = UInt32($1F01) then Result := 'RENDERER' else if self.val = UInt32($1F02) then Result := 'VERSION' else if self.val = UInt32($1F03) then Result := 'EXTENSIONS' else if self.val = UInt32($8B8C) then Result := 'SHADING_LANGUAGE_VERSION' else Result := $'StringName[{self.val}]'; end; end; SubroutineParameterName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property UNIFORM_SIZE: SubroutineParameterName read new SubroutineParameterName($8A38); public static property UNIFORM_NAME_LENGTH: SubroutineParameterName read new SubroutineParameterName($8A39); public static property NUM_COMPATIBLE_SUBROUTINES: SubroutineParameterName read new SubroutineParameterName($8E4A); public static property COMPATIBLE_SUBROUTINES: SubroutineParameterName read new SubroutineParameterName($8E4B); public function ToString: string; override; begin if self.val = UInt32($8A38) then Result := 'UNIFORM_SIZE' else if self.val = UInt32($8A39) then Result := 'UNIFORM_NAME_LENGTH' else if self.val = UInt32($8E4A) then Result := 'NUM_COMPATIBLE_SUBROUTINES' else if self.val = UInt32($8E4B) then Result := 'COMPATIBLE_SUBROUTINES' else Result := $'SubroutineParameterName[{self.val}]'; end; end; SyncCondition = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SYNC_GPU_COMMANDS_COMPLETE: SyncCondition read new SyncCondition($9117); public function ToString: string; override; begin if self.val = UInt32($9117) then Result := 'SYNC_GPU_COMMANDS_COMPLETE' else Result := $'SyncCondition[{self.val}]'; end; end; SyncObjectMask = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SYNC_FLUSH_COMMANDS_BIT: SyncObjectMask read new SyncObjectMask($0001); public static property SYNC_FLUSH_COMMANDS_BIT_APPLE: SyncObjectMask read new SyncObjectMask($0001); public static function operator+(f1,f2: SyncObjectMask) := new SyncObjectMask(f1.val or f2.val); public static function operator or(f1,f2: SyncObjectMask) := f1+f2; public property HAS_FLAG_SYNC_FLUSH_COMMANDS_BIT: boolean read self.val and $0001 <> 0; public property HAS_FLAG_SYNC_FLUSH_COMMANDS_BIT_APPLE: boolean read self.val and $0001 <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0001) = UInt32($0001) then res += 'SYNC_FLUSH_COMMANDS_BIT+'; if self.val and UInt32($0001) = UInt32($0001) then res += 'SYNC_FLUSH_COMMANDS_BIT_APPLE+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'SyncObjectMask[{self.val}]'; end; end; SyncParameterName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property OBJECT_TYPE: SyncParameterName read new SyncParameterName($9112); public static property SYNC_CONDITION: SyncParameterName read new SyncParameterName($9113); public static property SYNC_STATUS: SyncParameterName read new SyncParameterName($9114); public static property SYNC_FLAGS: SyncParameterName read new SyncParameterName($9115); public function ToString: string; override; begin if self.val = UInt32($9112) then Result := 'OBJECT_TYPE' else if self.val = UInt32($9113) then Result := 'SYNC_CONDITION' else if self.val = UInt32($9114) then Result := 'SYNC_STATUS' else if self.val = UInt32($9115) then Result := 'SYNC_FLAGS' else Result := $'SyncParameterName[{self.val}]'; end; end; SyncStatus = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ALREADY_SIGNALED: SyncStatus read new SyncStatus($911A); public static property TIMEOUT_EXPIRED: SyncStatus read new SyncStatus($911B); public static property CONDITION_SATISFIED: SyncStatus read new SyncStatus($911C); public static property WAIT_FAILED: SyncStatus read new SyncStatus($911D); public function ToString: string; override; begin if self.val = UInt32($911A) then Result := 'ALREADY_SIGNALED' else if self.val = UInt32($911B) then Result := 'TIMEOUT_EXPIRED' else if self.val = UInt32($911C) then Result := 'CONDITION_SATISFIED' else if self.val = UInt32($911D) then Result := 'WAIT_FAILED' else Result := $'SyncStatus[{self.val}]'; end; end; TexCoordPointerType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SHORT: TexCoordPointerType read new TexCoordPointerType($1402); public static property INT: TexCoordPointerType read new TexCoordPointerType($1404); public static property FLOAT: TexCoordPointerType read new TexCoordPointerType($1406); public static property DOUBLE: TexCoordPointerType read new TexCoordPointerType($140A); public function ToString: string; override; begin if self.val = UInt32($1402) then Result := 'SHORT' else if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else Result := $'TexCoordPointerType[{self.val}]'; end; end; TextureCoordName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property S: TextureCoordName read new TextureCoordName($2000); public static property T: TextureCoordName read new TextureCoordName($2001); public static property R: TextureCoordName read new TextureCoordName($2002); public static property Q: TextureCoordName read new TextureCoordName($2003); public function ToString: string; override; begin if self.val = UInt32($2000) then Result := 'S' else if self.val = UInt32($2001) then Result := 'T' else if self.val = UInt32($2002) then Result := 'R' else if self.val = UInt32($2003) then Result := 'Q' else Result := $'TextureCoordName[{self.val}]'; end; end; TextureEnvParameter = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE_ENV_MODE: TextureEnvParameter read new TextureEnvParameter($2200); public static property TEXTURE_ENV_COLOR: TextureEnvParameter read new TextureEnvParameter($2201); public function ToString: string; override; begin if self.val = UInt32($2200) then Result := 'TEXTURE_ENV_MODE' else if self.val = UInt32($2201) then Result := 'TEXTURE_ENV_COLOR' else Result := $'TextureEnvParameter[{self.val}]'; end; end; TextureEnvTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE_ENV: TextureEnvTarget read new TextureEnvTarget($2300); public function ToString: string; override; begin if self.val = UInt32($2300) then Result := 'TEXTURE_ENV' else Result := $'TextureEnvTarget[{self.val}]'; end; end; TextureGenParameter = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE_GEN_MODE: TextureGenParameter read new TextureGenParameter($2500); public static property OBJECT_PLANE: TextureGenParameter read new TextureGenParameter($2501); public static property EYE_PLANE: TextureGenParameter read new TextureGenParameter($2502); public static property EYE_POINT_SGIS: TextureGenParameter read new TextureGenParameter($81F4); public static property OBJECT_POINT_SGIS: TextureGenParameter read new TextureGenParameter($81F5); public static property EYE_LINE_SGIS: TextureGenParameter read new TextureGenParameter($81F6); public static property OBJECT_LINE_SGIS: TextureGenParameter read new TextureGenParameter($81F7); public function ToString: string; override; begin if self.val = UInt32($2500) then Result := 'TEXTURE_GEN_MODE' else if self.val = UInt32($2501) then Result := 'OBJECT_PLANE' else if self.val = UInt32($2502) then Result := 'EYE_PLANE' else if self.val = UInt32($81F4) then Result := 'EYE_POINT_SGIS' else if self.val = UInt32($81F5) then Result := 'OBJECT_POINT_SGIS' else if self.val = UInt32($81F6) then Result := 'EYE_LINE_SGIS' else if self.val = UInt32($81F7) then Result := 'OBJECT_LINE_SGIS' else Result := $'TextureGenParameter[{self.val}]'; end; end; TextureLayout = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT: TextureLayout read new TextureLayout($9530); public static property LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT: TextureLayout read new TextureLayout($9531); public static property LAYOUT_GENERAL_EXT: TextureLayout read new TextureLayout($958D); public static property LAYOUT_COLOR_ATTACHMENT_EXT: TextureLayout read new TextureLayout($958E); public static property LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT: TextureLayout read new TextureLayout($958F); public static property LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT: TextureLayout read new TextureLayout($9590); public static property LAYOUT_SHADER_READ_ONLY_EXT: TextureLayout read new TextureLayout($9591); public static property LAYOUT_TRANSFER_SRC_EXT: TextureLayout read new TextureLayout($9592); public static property LAYOUT_TRANSFER_DST_EXT: TextureLayout read new TextureLayout($9593); public function ToString: string; override; begin if self.val = UInt32($9530) then Result := 'LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT' else if self.val = UInt32($9531) then Result := 'LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT' else if self.val = UInt32($958D) then Result := 'LAYOUT_GENERAL_EXT' else if self.val = UInt32($958E) then Result := 'LAYOUT_COLOR_ATTACHMENT_EXT' else if self.val = UInt32($958F) then Result := 'LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT' else if self.val = UInt32($9590) then Result := 'LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT' else if self.val = UInt32($9591) then Result := 'LAYOUT_SHADER_READ_ONLY_EXT' else if self.val = UInt32($9592) then Result := 'LAYOUT_TRANSFER_SRC_EXT' else if self.val = UInt32($9593) then Result := 'LAYOUT_TRANSFER_DST_EXT' else Result := $'TextureLayout[{self.val}]'; end; end; TextureParameterName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE_WIDTH: TextureParameterName read new TextureParameterName($1000); public static property TEXTURE_HEIGHT: TextureParameterName read new TextureParameterName($1001); public static property TEXTURE_COMPONENTS: TextureParameterName read new TextureParameterName($1003); public static property TEXTURE_INTERNAL_FORMAT: TextureParameterName read new TextureParameterName($1003); public static property TEXTURE_BORDER_COLOR: TextureParameterName read new TextureParameterName($1004); public static property TEXTURE_BORDER_COLOR_NV: TextureParameterName read new TextureParameterName($1004); public static property TEXTURE_BORDER: TextureParameterName read new TextureParameterName($1005); public static property TEXTURE_MAG_FILTER: TextureParameterName read new TextureParameterName($2800); public static property TEXTURE_MIN_FILTER: TextureParameterName read new TextureParameterName($2801); public static property TEXTURE_WRAP_S: TextureParameterName read new TextureParameterName($2802); public static property TEXTURE_WRAP_T: TextureParameterName read new TextureParameterName($2803); public static property TEXTURE_RED_SIZE: TextureParameterName read new TextureParameterName($805C); public static property TEXTURE_GREEN_SIZE: TextureParameterName read new TextureParameterName($805D); public static property TEXTURE_BLUE_SIZE: TextureParameterName read new TextureParameterName($805E); public static property TEXTURE_ALPHA_SIZE: TextureParameterName read new TextureParameterName($805F); public static property TEXTURE_LUMINANCE_SIZE: TextureParameterName read new TextureParameterName($8060); public static property TEXTURE_INTENSITY_SIZE: TextureParameterName read new TextureParameterName($8061); public static property TEXTURE_PRIORITY: TextureParameterName read new TextureParameterName($8066); public static property TEXTURE_PRIORITY_EXT: TextureParameterName read new TextureParameterName($8066); public static property TEXTURE_RESIDENT: TextureParameterName read new TextureParameterName($8067); public static property TEXTURE_DEPTH_EXT: TextureParameterName read new TextureParameterName($8071); public static property TEXTURE_WRAP_R: TextureParameterName read new TextureParameterName($8072); public static property TEXTURE_WRAP_R_EXT: TextureParameterName read new TextureParameterName($8072); public static property TEXTURE_WRAP_R_OES: TextureParameterName read new TextureParameterName($8072); public static property DETAIL_TEXTURE_LEVEL_SGIS: TextureParameterName read new TextureParameterName($809A); public static property DETAIL_TEXTURE_MODE_SGIS: TextureParameterName read new TextureParameterName($809B); public static property DETAIL_TEXTURE_FUNC_POINTS_SGIS: TextureParameterName read new TextureParameterName($809C); public static property SHARPEN_TEXTURE_FUNC_POINTS_SGIS: TextureParameterName read new TextureParameterName($80B0); public static property SHADOW_AMBIENT_SGIX: TextureParameterName read new TextureParameterName($80BF); public static property DUAL_TEXTURE_SELECT_SGIS: TextureParameterName read new TextureParameterName($8124); public static property QUAD_TEXTURE_SELECT_SGIS: TextureParameterName read new TextureParameterName($8125); public static property TEXTURE_4DSIZE_SGIS: TextureParameterName read new TextureParameterName($8136); public static property TEXTURE_WRAP_Q_SGIS: TextureParameterName read new TextureParameterName($8137); public static property TEXTURE_MIN_LOD: TextureParameterName read new TextureParameterName($813A); public static property TEXTURE_MIN_LOD_SGIS: TextureParameterName read new TextureParameterName($813A); public static property TEXTURE_MAX_LOD: TextureParameterName read new TextureParameterName($813B); public static property TEXTURE_MAX_LOD_SGIS: TextureParameterName read new TextureParameterName($813B); public static property TEXTURE_BASE_LEVEL: TextureParameterName read new TextureParameterName($813C); public static property TEXTURE_BASE_LEVEL_SGIS: TextureParameterName read new TextureParameterName($813C); public static property TEXTURE_MAX_LEVEL: TextureParameterName read new TextureParameterName($813D); public static property TEXTURE_MAX_LEVEL_SGIS: TextureParameterName read new TextureParameterName($813D); public static property TEXTURE_FILTER4_SIZE_SGIS: TextureParameterName read new TextureParameterName($8147); public static property TEXTURE_CLIPMAP_CENTER_SGIX: TextureParameterName read new TextureParameterName($8171); public static property TEXTURE_CLIPMAP_FRAME_SGIX: TextureParameterName read new TextureParameterName($8172); public static property TEXTURE_CLIPMAP_OFFSET_SGIX: TextureParameterName read new TextureParameterName($8173); public static property TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX: TextureParameterName read new TextureParameterName($8174); public static property TEXTURE_CLIPMAP_LOD_OFFSET_SGIX: TextureParameterName read new TextureParameterName($8175); public static property TEXTURE_CLIPMAP_DEPTH_SGIX: TextureParameterName read new TextureParameterName($8176); public static property POST_TEXTURE_FILTER_BIAS_SGIX: TextureParameterName read new TextureParameterName($8179); public static property POST_TEXTURE_FILTER_SCALE_SGIX: TextureParameterName read new TextureParameterName($817A); public static property TEXTURE_LOD_BIAS_S_SGIX: TextureParameterName read new TextureParameterName($818E); public static property TEXTURE_LOD_BIAS_T_SGIX: TextureParameterName read new TextureParameterName($818F); public static property TEXTURE_LOD_BIAS_R_SGIX: TextureParameterName read new TextureParameterName($8190); public static property GENERATE_MIPMAP: TextureParameterName read new TextureParameterName($8191); public static property GENERATE_MIPMAP_SGIS: TextureParameterName read new TextureParameterName($8191); public static property TEXTURE_COMPARE_SGIX: TextureParameterName read new TextureParameterName($819A); public static property TEXTURE_COMPARE_OPERATOR_SGIX: TextureParameterName read new TextureParameterName($819B); public static property TEXTURE_LEQUAL_R_SGIX: TextureParameterName read new TextureParameterName($819C); public static property TEXTURE_GEQUAL_R_SGIX: TextureParameterName read new TextureParameterName($819D); public static property TEXTURE_MAX_CLAMP_S_SGIX: TextureParameterName read new TextureParameterName($8369); public static property TEXTURE_MAX_CLAMP_T_SGIX: TextureParameterName read new TextureParameterName($836A); public static property TEXTURE_MAX_CLAMP_R_SGIX: TextureParameterName read new TextureParameterName($836B); public static property TEXTURE_MAX_ANISOTROPY: TextureParameterName read new TextureParameterName($84FE); public static property TEXTURE_LOD_BIAS: TextureParameterName read new TextureParameterName($8501); public static property TEXTURE_COMPARE_MODE: TextureParameterName read new TextureParameterName($884C); public static property TEXTURE_COMPARE_FUNC: TextureParameterName read new TextureParameterName($884D); public static property TEXTURE_SWIZZLE_R: TextureParameterName read new TextureParameterName($8E42); public static property TEXTURE_SWIZZLE_G: TextureParameterName read new TextureParameterName($8E43); public static property TEXTURE_SWIZZLE_B: TextureParameterName read new TextureParameterName($8E44); public static property TEXTURE_SWIZZLE_A: TextureParameterName read new TextureParameterName($8E45); public static property TEXTURE_SWIZZLE_RGBA: TextureParameterName read new TextureParameterName($8E46); public static property TEXTURE_UNNORMALIZED_COORDINATES_ARM: TextureParameterName read new TextureParameterName($8F6A); public static property DEPTH_STENCIL_TEXTURE_MODE: TextureParameterName read new TextureParameterName($90EA); public static property TEXTURE_TILING_EXT: TextureParameterName read new TextureParameterName($9580); public static property TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM: TextureParameterName read new TextureParameterName($96A0); public function ToString: string; override; begin if self.val = UInt32($1000) then Result := 'TEXTURE_WIDTH' else if self.val = UInt32($1001) then Result := 'TEXTURE_HEIGHT' else if self.val = UInt32($1003) then Result := 'TEXTURE_COMPONENTS' else if self.val = UInt32($1003) then Result := 'TEXTURE_INTERNAL_FORMAT' else if self.val = UInt32($1004) then Result := 'TEXTURE_BORDER_COLOR' else if self.val = UInt32($1004) then Result := 'TEXTURE_BORDER_COLOR_NV' else if self.val = UInt32($1005) then Result := 'TEXTURE_BORDER' else if self.val = UInt32($2800) then Result := 'TEXTURE_MAG_FILTER' else if self.val = UInt32($2801) then Result := 'TEXTURE_MIN_FILTER' else if self.val = UInt32($2802) then Result := 'TEXTURE_WRAP_S' else if self.val = UInt32($2803) then Result := 'TEXTURE_WRAP_T' else if self.val = UInt32($805C) then Result := 'TEXTURE_RED_SIZE' else if self.val = UInt32($805D) then Result := 'TEXTURE_GREEN_SIZE' else if self.val = UInt32($805E) then Result := 'TEXTURE_BLUE_SIZE' else if self.val = UInt32($805F) then Result := 'TEXTURE_ALPHA_SIZE' else if self.val = UInt32($8060) then Result := 'TEXTURE_LUMINANCE_SIZE' else if self.val = UInt32($8061) then Result := 'TEXTURE_INTENSITY_SIZE' else if self.val = UInt32($8066) then Result := 'TEXTURE_PRIORITY' else if self.val = UInt32($8066) then Result := 'TEXTURE_PRIORITY_EXT' else if self.val = UInt32($8067) then Result := 'TEXTURE_RESIDENT' else if self.val = UInt32($8071) then Result := 'TEXTURE_DEPTH_EXT' else if self.val = UInt32($8072) then Result := 'TEXTURE_WRAP_R' else if self.val = UInt32($8072) then Result := 'TEXTURE_WRAP_R_EXT' else if self.val = UInt32($8072) then Result := 'TEXTURE_WRAP_R_OES' else if self.val = UInt32($809A) then Result := 'DETAIL_TEXTURE_LEVEL_SGIS' else if self.val = UInt32($809B) then Result := 'DETAIL_TEXTURE_MODE_SGIS' else if self.val = UInt32($809C) then Result := 'DETAIL_TEXTURE_FUNC_POINTS_SGIS' else if self.val = UInt32($80B0) then Result := 'SHARPEN_TEXTURE_FUNC_POINTS_SGIS' else if self.val = UInt32($80BF) then Result := 'SHADOW_AMBIENT_SGIX' else if self.val = UInt32($8124) then Result := 'DUAL_TEXTURE_SELECT_SGIS' else if self.val = UInt32($8125) then Result := 'QUAD_TEXTURE_SELECT_SGIS' else if self.val = UInt32($8136) then Result := 'TEXTURE_4DSIZE_SGIS' else if self.val = UInt32($8137) then Result := 'TEXTURE_WRAP_Q_SGIS' else if self.val = UInt32($813A) then Result := 'TEXTURE_MIN_LOD' else if self.val = UInt32($813A) then Result := 'TEXTURE_MIN_LOD_SGIS' else if self.val = UInt32($813B) then Result := 'TEXTURE_MAX_LOD' else if self.val = UInt32($813B) then Result := 'TEXTURE_MAX_LOD_SGIS' else if self.val = UInt32($813C) then Result := 'TEXTURE_BASE_LEVEL' else if self.val = UInt32($813C) then Result := 'TEXTURE_BASE_LEVEL_SGIS' else if self.val = UInt32($813D) then Result := 'TEXTURE_MAX_LEVEL' else if self.val = UInt32($813D) then Result := 'TEXTURE_MAX_LEVEL_SGIS' else if self.val = UInt32($8147) then Result := 'TEXTURE_FILTER4_SIZE_SGIS' else if self.val = UInt32($8171) then Result := 'TEXTURE_CLIPMAP_CENTER_SGIX' else if self.val = UInt32($8172) then Result := 'TEXTURE_CLIPMAP_FRAME_SGIX' else if self.val = UInt32($8173) then Result := 'TEXTURE_CLIPMAP_OFFSET_SGIX' else if self.val = UInt32($8174) then Result := 'TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX' else if self.val = UInt32($8175) then Result := 'TEXTURE_CLIPMAP_LOD_OFFSET_SGIX' else if self.val = UInt32($8176) then Result := 'TEXTURE_CLIPMAP_DEPTH_SGIX' else if self.val = UInt32($8179) then Result := 'POST_TEXTURE_FILTER_BIAS_SGIX' else if self.val = UInt32($817A) then Result := 'POST_TEXTURE_FILTER_SCALE_SGIX' else if self.val = UInt32($818E) then Result := 'TEXTURE_LOD_BIAS_S_SGIX' else if self.val = UInt32($818F) then Result := 'TEXTURE_LOD_BIAS_T_SGIX' else if self.val = UInt32($8190) then Result := 'TEXTURE_LOD_BIAS_R_SGIX' else if self.val = UInt32($8191) then Result := 'GENERATE_MIPMAP' else if self.val = UInt32($8191) then Result := 'GENERATE_MIPMAP_SGIS' else if self.val = UInt32($819A) then Result := 'TEXTURE_COMPARE_SGIX' else if self.val = UInt32($819B) then Result := 'TEXTURE_COMPARE_OPERATOR_SGIX' else if self.val = UInt32($819C) then Result := 'TEXTURE_LEQUAL_R_SGIX' else if self.val = UInt32($819D) then Result := 'TEXTURE_GEQUAL_R_SGIX' else if self.val = UInt32($8369) then Result := 'TEXTURE_MAX_CLAMP_S_SGIX' else if self.val = UInt32($836A) then Result := 'TEXTURE_MAX_CLAMP_T_SGIX' else if self.val = UInt32($836B) then Result := 'TEXTURE_MAX_CLAMP_R_SGIX' else if self.val = UInt32($84FE) then Result := 'TEXTURE_MAX_ANISOTROPY' else if self.val = UInt32($8501) then Result := 'TEXTURE_LOD_BIAS' else if self.val = UInt32($884C) then Result := 'TEXTURE_COMPARE_MODE' else if self.val = UInt32($884D) then Result := 'TEXTURE_COMPARE_FUNC' else if self.val = UInt32($8E42) then Result := 'TEXTURE_SWIZZLE_R' else if self.val = UInt32($8E43) then Result := 'TEXTURE_SWIZZLE_G' else if self.val = UInt32($8E44) then Result := 'TEXTURE_SWIZZLE_B' else if self.val = UInt32($8E45) then Result := 'TEXTURE_SWIZZLE_A' else if self.val = UInt32($8E46) then Result := 'TEXTURE_SWIZZLE_RGBA' else if self.val = UInt32($8F6A) then Result := 'TEXTURE_UNNORMALIZED_COORDINATES_ARM' else if self.val = UInt32($90EA) then Result := 'DEPTH_STENCIL_TEXTURE_MODE' else if self.val = UInt32($9580) then Result := 'TEXTURE_TILING_EXT' else if self.val = UInt32($96A0) then Result := 'TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM' else Result := $'TextureParameterName[{self.val}]'; end; end; TextureTarget = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE_1D: TextureTarget read new TextureTarget($0DE0); public static property TEXTURE_2D: TextureTarget read new TextureTarget($0DE1); public static property PROXY_TEXTURE_1D: TextureTarget read new TextureTarget($8063); public static property PROXY_TEXTURE_1D_EXT: TextureTarget read new TextureTarget($8063); public static property PROXY_TEXTURE_2D: TextureTarget read new TextureTarget($8064); public static property PROXY_TEXTURE_2D_EXT: TextureTarget read new TextureTarget($8064); public static property TEXTURE_3D: TextureTarget read new TextureTarget($806F); public static property TEXTURE_3D_EXT: TextureTarget read new TextureTarget($806F); public static property TEXTURE_3D_OES: TextureTarget read new TextureTarget($806F); public static property PROXY_TEXTURE_3D: TextureTarget read new TextureTarget($8070); public static property PROXY_TEXTURE_3D_EXT: TextureTarget read new TextureTarget($8070); public static property DETAIL_TEXTURE_2D_SGIS: TextureTarget read new TextureTarget($8095); public static property TEXTURE_4D_SGIS: TextureTarget read new TextureTarget($8134); public static property PROXY_TEXTURE_4D_SGIS: TextureTarget read new TextureTarget($8135); public static property TEXTURE_RECTANGLE: TextureTarget read new TextureTarget($84F5); public static property TEXTURE_RECTANGLE_ARB: TextureTarget read new TextureTarget($84F5); public static property TEXTURE_RECTANGLE_NV: TextureTarget read new TextureTarget($84F5); public static property PROXY_TEXTURE_RECTANGLE: TextureTarget read new TextureTarget($84F7); public static property PROXY_TEXTURE_RECTANGLE_ARB: TextureTarget read new TextureTarget($84F7); public static property PROXY_TEXTURE_RECTANGLE_NV: TextureTarget read new TextureTarget($84F7); public static property TEXTURE_CUBE_MAP: TextureTarget read new TextureTarget($8513); public static property TEXTURE_CUBE_MAP_ARB: TextureTarget read new TextureTarget($8513); public static property TEXTURE_CUBE_MAP_EXT: TextureTarget read new TextureTarget($8513); public static property TEXTURE_CUBE_MAP_OES: TextureTarget read new TextureTarget($8513); public static property TEXTURE_CUBE_MAP_POSITIVE_X: TextureTarget read new TextureTarget($8515); public static property TEXTURE_CUBE_MAP_NEGATIVE_X: TextureTarget read new TextureTarget($8516); public static property TEXTURE_CUBE_MAP_POSITIVE_Y: TextureTarget read new TextureTarget($8517); public static property TEXTURE_CUBE_MAP_NEGATIVE_Y: TextureTarget read new TextureTarget($8518); public static property TEXTURE_CUBE_MAP_POSITIVE_Z: TextureTarget read new TextureTarget($8519); public static property TEXTURE_CUBE_MAP_NEGATIVE_Z: TextureTarget read new TextureTarget($851A); public static property PROXY_TEXTURE_CUBE_MAP: TextureTarget read new TextureTarget($851B); public static property PROXY_TEXTURE_CUBE_MAP_ARB: TextureTarget read new TextureTarget($851B); public static property PROXY_TEXTURE_CUBE_MAP_EXT: TextureTarget read new TextureTarget($851B); public static property TEXTURE_1D_ARRAY: TextureTarget read new TextureTarget($8C18); public static property PROXY_TEXTURE_1D_ARRAY: TextureTarget read new TextureTarget($8C19); public static property PROXY_TEXTURE_1D_ARRAY_EXT: TextureTarget read new TextureTarget($8C19); public static property TEXTURE_2D_ARRAY: TextureTarget read new TextureTarget($8C1A); public static property PROXY_TEXTURE_2D_ARRAY: TextureTarget read new TextureTarget($8C1B); public static property PROXY_TEXTURE_2D_ARRAY_EXT: TextureTarget read new TextureTarget($8C1B); public static property TEXTURE_BUFFER: TextureTarget read new TextureTarget($8C2A); public static property RENDERBUFFER: TextureTarget read new TextureTarget($8D41); public static property TEXTURE_CUBE_MAP_ARRAY: TextureTarget read new TextureTarget($9009); public static property TEXTURE_CUBE_MAP_ARRAY_ARB: TextureTarget read new TextureTarget($9009); public static property TEXTURE_CUBE_MAP_ARRAY_EXT: TextureTarget read new TextureTarget($9009); public static property TEXTURE_CUBE_MAP_ARRAY_OES: TextureTarget read new TextureTarget($9009); public static property PROXY_TEXTURE_CUBE_MAP_ARRAY: TextureTarget read new TextureTarget($900B); public static property PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB: TextureTarget read new TextureTarget($900B); public static property TEXTURE_2D_MULTISAMPLE: TextureTarget read new TextureTarget($9100); public static property PROXY_TEXTURE_2D_MULTISAMPLE: TextureTarget read new TextureTarget($9101); public static property TEXTURE_2D_MULTISAMPLE_ARRAY: TextureTarget read new TextureTarget($9102); public static property PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY: TextureTarget read new TextureTarget($9103); public function ToString: string; override; begin if self.val = UInt32($0DE0) then Result := 'TEXTURE_1D' else if self.val = UInt32($0DE1) then Result := 'TEXTURE_2D' else if self.val = UInt32($8063) then Result := 'PROXY_TEXTURE_1D' else if self.val = UInt32($8063) then Result := 'PROXY_TEXTURE_1D_EXT' else if self.val = UInt32($8064) then Result := 'PROXY_TEXTURE_2D' else if self.val = UInt32($8064) then Result := 'PROXY_TEXTURE_2D_EXT' else if self.val = UInt32($806F) then Result := 'TEXTURE_3D' else if self.val = UInt32($806F) then Result := 'TEXTURE_3D_EXT' else if self.val = UInt32($806F) then Result := 'TEXTURE_3D_OES' else if self.val = UInt32($8070) then Result := 'PROXY_TEXTURE_3D' else if self.val = UInt32($8070) then Result := 'PROXY_TEXTURE_3D_EXT' else if self.val = UInt32($8095) then Result := 'DETAIL_TEXTURE_2D_SGIS' else if self.val = UInt32($8134) then Result := 'TEXTURE_4D_SGIS' else if self.val = UInt32($8135) then Result := 'PROXY_TEXTURE_4D_SGIS' else if self.val = UInt32($84F5) then Result := 'TEXTURE_RECTANGLE' else if self.val = UInt32($84F5) then Result := 'TEXTURE_RECTANGLE_ARB' else if self.val = UInt32($84F5) then Result := 'TEXTURE_RECTANGLE_NV' else if self.val = UInt32($84F7) then Result := 'PROXY_TEXTURE_RECTANGLE' else if self.val = UInt32($84F7) then Result := 'PROXY_TEXTURE_RECTANGLE_ARB' else if self.val = UInt32($84F7) then Result := 'PROXY_TEXTURE_RECTANGLE_NV' else if self.val = UInt32($8513) then Result := 'TEXTURE_CUBE_MAP' else if self.val = UInt32($8513) then Result := 'TEXTURE_CUBE_MAP_ARB' else if self.val = UInt32($8513) then Result := 'TEXTURE_CUBE_MAP_EXT' else if self.val = UInt32($8513) then Result := 'TEXTURE_CUBE_MAP_OES' else if self.val = UInt32($8515) then Result := 'TEXTURE_CUBE_MAP_POSITIVE_X' else if self.val = UInt32($8516) then Result := 'TEXTURE_CUBE_MAP_NEGATIVE_X' else if self.val = UInt32($8517) then Result := 'TEXTURE_CUBE_MAP_POSITIVE_Y' else if self.val = UInt32($8518) then Result := 'TEXTURE_CUBE_MAP_NEGATIVE_Y' else if self.val = UInt32($8519) then Result := 'TEXTURE_CUBE_MAP_POSITIVE_Z' else if self.val = UInt32($851A) then Result := 'TEXTURE_CUBE_MAP_NEGATIVE_Z' else if self.val = UInt32($851B) then Result := 'PROXY_TEXTURE_CUBE_MAP' else if self.val = UInt32($851B) then Result := 'PROXY_TEXTURE_CUBE_MAP_ARB' else if self.val = UInt32($851B) then Result := 'PROXY_TEXTURE_CUBE_MAP_EXT' else if self.val = UInt32($8C18) then Result := 'TEXTURE_1D_ARRAY' else if self.val = UInt32($8C19) then Result := 'PROXY_TEXTURE_1D_ARRAY' else if self.val = UInt32($8C19) then Result := 'PROXY_TEXTURE_1D_ARRAY_EXT' else if self.val = UInt32($8C1A) then Result := 'TEXTURE_2D_ARRAY' else if self.val = UInt32($8C1B) then Result := 'PROXY_TEXTURE_2D_ARRAY' else if self.val = UInt32($8C1B) then Result := 'PROXY_TEXTURE_2D_ARRAY_EXT' else if self.val = UInt32($8C2A) then Result := 'TEXTURE_BUFFER' else if self.val = UInt32($8D41) then Result := 'RENDERBUFFER' else if self.val = UInt32($9009) then Result := 'TEXTURE_CUBE_MAP_ARRAY' else if self.val = UInt32($9009) then Result := 'TEXTURE_CUBE_MAP_ARRAY_ARB' else if self.val = UInt32($9009) then Result := 'TEXTURE_CUBE_MAP_ARRAY_EXT' else if self.val = UInt32($9009) then Result := 'TEXTURE_CUBE_MAP_ARRAY_OES' else if self.val = UInt32($900B) then Result := 'PROXY_TEXTURE_CUBE_MAP_ARRAY' else if self.val = UInt32($900B) then Result := 'PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB' else if self.val = UInt32($9100) then Result := 'TEXTURE_2D_MULTISAMPLE' else if self.val = UInt32($9101) then Result := 'PROXY_TEXTURE_2D_MULTISAMPLE' else if self.val = UInt32($9102) then Result := 'TEXTURE_2D_MULTISAMPLE_ARRAY' else if self.val = UInt32($9103) then Result := 'PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY' else Result := $'TextureTarget[{self.val}]'; end; end; TextureUnit = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE0: TextureUnit read new TextureUnit($84C0); public static property TEXTURE1: TextureUnit read new TextureUnit($84C1); public static property TEXTURE2: TextureUnit read new TextureUnit($84C2); public static property TEXTURE3: TextureUnit read new TextureUnit($84C3); public static property TEXTURE4: TextureUnit read new TextureUnit($84C4); public static property TEXTURE5: TextureUnit read new TextureUnit($84C5); public static property TEXTURE6: TextureUnit read new TextureUnit($84C6); public static property TEXTURE7: TextureUnit read new TextureUnit($84C7); public static property TEXTURE8: TextureUnit read new TextureUnit($84C8); public static property TEXTURE9: TextureUnit read new TextureUnit($84C9); public static property TEXTURE10: TextureUnit read new TextureUnit($84CA); public static property TEXTURE11: TextureUnit read new TextureUnit($84CB); public static property TEXTURE12: TextureUnit read new TextureUnit($84CC); public static property TEXTURE13: TextureUnit read new TextureUnit($84CD); public static property TEXTURE14: TextureUnit read new TextureUnit($84CE); public static property TEXTURE15: TextureUnit read new TextureUnit($84CF); public static property TEXTURE16: TextureUnit read new TextureUnit($84D0); public static property TEXTURE17: TextureUnit read new TextureUnit($84D1); public static property TEXTURE18: TextureUnit read new TextureUnit($84D2); public static property TEXTURE19: TextureUnit read new TextureUnit($84D3); public static property TEXTURE20: TextureUnit read new TextureUnit($84D4); public static property TEXTURE21: TextureUnit read new TextureUnit($84D5); public static property TEXTURE22: TextureUnit read new TextureUnit($84D6); public static property TEXTURE23: TextureUnit read new TextureUnit($84D7); public static property TEXTURE24: TextureUnit read new TextureUnit($84D8); public static property TEXTURE25: TextureUnit read new TextureUnit($84D9); public static property TEXTURE26: TextureUnit read new TextureUnit($84DA); public static property TEXTURE27: TextureUnit read new TextureUnit($84DB); public static property TEXTURE28: TextureUnit read new TextureUnit($84DC); public static property TEXTURE29: TextureUnit read new TextureUnit($84DD); public static property TEXTURE30: TextureUnit read new TextureUnit($84DE); public static property TEXTURE31: TextureUnit read new TextureUnit($84DF); public function ToString: string; override; begin if self.val = UInt32($84C0) then Result := 'TEXTURE0' else if self.val = UInt32($84C1) then Result := 'TEXTURE1' else if self.val = UInt32($84C2) then Result := 'TEXTURE2' else if self.val = UInt32($84C3) then Result := 'TEXTURE3' else if self.val = UInt32($84C4) then Result := 'TEXTURE4' else if self.val = UInt32($84C5) then Result := 'TEXTURE5' else if self.val = UInt32($84C6) then Result := 'TEXTURE6' else if self.val = UInt32($84C7) then Result := 'TEXTURE7' else if self.val = UInt32($84C8) then Result := 'TEXTURE8' else if self.val = UInt32($84C9) then Result := 'TEXTURE9' else if self.val = UInt32($84CA) then Result := 'TEXTURE10' else if self.val = UInt32($84CB) then Result := 'TEXTURE11' else if self.val = UInt32($84CC) then Result := 'TEXTURE12' else if self.val = UInt32($84CD) then Result := 'TEXTURE13' else if self.val = UInt32($84CE) then Result := 'TEXTURE14' else if self.val = UInt32($84CF) then Result := 'TEXTURE15' else if self.val = UInt32($84D0) then Result := 'TEXTURE16' else if self.val = UInt32($84D1) then Result := 'TEXTURE17' else if self.val = UInt32($84D2) then Result := 'TEXTURE18' else if self.val = UInt32($84D3) then Result := 'TEXTURE19' else if self.val = UInt32($84D4) then Result := 'TEXTURE20' else if self.val = UInt32($84D5) then Result := 'TEXTURE21' else if self.val = UInt32($84D6) then Result := 'TEXTURE22' else if self.val = UInt32($84D7) then Result := 'TEXTURE23' else if self.val = UInt32($84D8) then Result := 'TEXTURE24' else if self.val = UInt32($84D9) then Result := 'TEXTURE25' else if self.val = UInt32($84DA) then Result := 'TEXTURE26' else if self.val = UInt32($84DB) then Result := 'TEXTURE27' else if self.val = UInt32($84DC) then Result := 'TEXTURE28' else if self.val = UInt32($84DD) then Result := 'TEXTURE29' else if self.val = UInt32($84DE) then Result := 'TEXTURE30' else if self.val = UInt32($84DF) then Result := 'TEXTURE31' else Result := $'TextureUnit[{self.val}]'; end; end; TransformFeedbackBufferMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property INTERLEAVED_ATTRIBS: TransformFeedbackBufferMode read new TransformFeedbackBufferMode($8C8C); public static property SEPARATE_ATTRIBS: TransformFeedbackBufferMode read new TransformFeedbackBufferMode($8C8D); public function ToString: string; override; begin if self.val = UInt32($8C8C) then Result := 'INTERLEAVED_ATTRIBS' else if self.val = UInt32($8C8D) then Result := 'SEPARATE_ATTRIBS' else Result := $'TransformFeedbackBufferMode[{self.val}]'; end; end; TransformFeedbackPName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TRANSFORM_FEEDBACK_BUFFER_START: TransformFeedbackPName read new TransformFeedbackPName($8C84); public static property TRANSFORM_FEEDBACK_BUFFER_SIZE: TransformFeedbackPName read new TransformFeedbackPName($8C85); public static property TRANSFORM_FEEDBACK_BUFFER_BINDING: TransformFeedbackPName read new TransformFeedbackPName($8C8F); public static property TRANSFORM_FEEDBACK_PAUSED: TransformFeedbackPName read new TransformFeedbackPName($8E23); public static property TRANSFORM_FEEDBACK_ACTIVE: TransformFeedbackPName read new TransformFeedbackPName($8E24); public function ToString: string; override; begin if self.val = UInt32($8C84) then Result := 'TRANSFORM_FEEDBACK_BUFFER_START' else if self.val = UInt32($8C85) then Result := 'TRANSFORM_FEEDBACK_BUFFER_SIZE' else if self.val = UInt32($8C8F) then Result := 'TRANSFORM_FEEDBACK_BUFFER_BINDING' else if self.val = UInt32($8E23) then Result := 'TRANSFORM_FEEDBACK_PAUSED' else if self.val = UInt32($8E24) then Result := 'TRANSFORM_FEEDBACK_ACTIVE' else Result := $'TransformFeedbackPName[{self.val}]'; end; end; UniformBlockPName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER: UniformBlockPName read new UniformBlockPName($84F0); public static property UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER: UniformBlockPName read new UniformBlockPName($84F1); public static property UNIFORM_BLOCK_BINDING: UniformBlockPName read new UniformBlockPName($8A3F); public static property UNIFORM_BLOCK_DATA_SIZE: UniformBlockPName read new UniformBlockPName($8A40); public static property UNIFORM_BLOCK_NAME_LENGTH: UniformBlockPName read new UniformBlockPName($8A41); public static property UNIFORM_BLOCK_ACTIVE_UNIFORMS: UniformBlockPName read new UniformBlockPName($8A42); public static property UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: UniformBlockPName read new UniformBlockPName($8A43); public static property UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: UniformBlockPName read new UniformBlockPName($8A44); public static property UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER: UniformBlockPName read new UniformBlockPName($8A45); public static property UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: UniformBlockPName read new UniformBlockPName($8A46); public static property UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER: UniformBlockPName read new UniformBlockPName($90EC); public function ToString: string; override; begin if self.val = UInt32($84F0) then Result := 'UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER' else if self.val = UInt32($84F1) then Result := 'UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER' else if self.val = UInt32($8A3F) then Result := 'UNIFORM_BLOCK_BINDING' else if self.val = UInt32($8A40) then Result := 'UNIFORM_BLOCK_DATA_SIZE' else if self.val = UInt32($8A41) then Result := 'UNIFORM_BLOCK_NAME_LENGTH' else if self.val = UInt32($8A42) then Result := 'UNIFORM_BLOCK_ACTIVE_UNIFORMS' else if self.val = UInt32($8A43) then Result := 'UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES' else if self.val = UInt32($8A44) then Result := 'UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER' else if self.val = UInt32($8A45) then Result := 'UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER' else if self.val = UInt32($8A46) then Result := 'UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER' else if self.val = UInt32($90EC) then Result := 'UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER' else Result := $'UniformBlockPName[{self.val}]'; end; end; UniformPName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property UNIFORM_TYPE: UniformPName read new UniformPName($8A37); public static property UNIFORM_SIZE: UniformPName read new UniformPName($8A38); public static property UNIFORM_NAME_LENGTH: UniformPName read new UniformPName($8A39); public static property UNIFORM_BLOCK_INDEX: UniformPName read new UniformPName($8A3A); public static property UNIFORM_OFFSET: UniformPName read new UniformPName($8A3B); public static property UNIFORM_ARRAY_STRIDE: UniformPName read new UniformPName($8A3C); public static property UNIFORM_MATRIX_STRIDE: UniformPName read new UniformPName($8A3D); public static property UNIFORM_IS_ROW_MAJOR: UniformPName read new UniformPName($8A3E); public static property UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX: UniformPName read new UniformPName($92DA); public function ToString: string; override; begin if self.val = UInt32($8A37) then Result := 'UNIFORM_TYPE' else if self.val = UInt32($8A38) then Result := 'UNIFORM_SIZE' else if self.val = UInt32($8A39) then Result := 'UNIFORM_NAME_LENGTH' else if self.val = UInt32($8A3A) then Result := 'UNIFORM_BLOCK_INDEX' else if self.val = UInt32($8A3B) then Result := 'UNIFORM_OFFSET' else if self.val = UInt32($8A3C) then Result := 'UNIFORM_ARRAY_STRIDE' else if self.val = UInt32($8A3D) then Result := 'UNIFORM_MATRIX_STRIDE' else if self.val = UInt32($8A3E) then Result := 'UNIFORM_IS_ROW_MAJOR' else if self.val = UInt32($92DA) then Result := 'UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX' else Result := $'UniformPName[{self.val}]'; end; end; UniformType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property INT: UniformType read new UniformType($1404); public static property UNSIGNED_INT: UniformType read new UniformType($1405); public static property FLOAT: UniformType read new UniformType($1406); public static property DOUBLE: UniformType read new UniformType($140A); public static property FLOAT_VEC2: UniformType read new UniformType($8B50); public static property FLOAT_VEC3: UniformType read new UniformType($8B51); public static property FLOAT_VEC4: UniformType read new UniformType($8B52); public static property INT_VEC2: UniformType read new UniformType($8B53); public static property INT_VEC3: UniformType read new UniformType($8B54); public static property INT_VEC4: UniformType read new UniformType($8B55); public static property BOOL: UniformType read new UniformType($8B56); public static property BOOL_VEC2: UniformType read new UniformType($8B57); public static property BOOL_VEC3: UniformType read new UniformType($8B58); public static property BOOL_VEC4: UniformType read new UniformType($8B59); public static property FLOAT_MAT2: UniformType read new UniformType($8B5A); public static property FLOAT_MAT3: UniformType read new UniformType($8B5B); public static property FLOAT_MAT4: UniformType read new UniformType($8B5C); public static property SAMPLER_1D: UniformType read new UniformType($8B5D); public static property SAMPLER_2D: UniformType read new UniformType($8B5E); public static property SAMPLER_3D: UniformType read new UniformType($8B5F); public static property SAMPLER_CUBE: UniformType read new UniformType($8B60); public static property SAMPLER_1D_SHADOW: UniformType read new UniformType($8B61); public static property SAMPLER_2D_SHADOW: UniformType read new UniformType($8B62); public static property SAMPLER_2D_RECT: UniformType read new UniformType($8B63); public static property SAMPLER_2D_RECT_SHADOW: UniformType read new UniformType($8B64); public static property FLOAT_MAT2x3: UniformType read new UniformType($8B65); public static property FLOAT_MAT2x4: UniformType read new UniformType($8B66); public static property FLOAT_MAT3x2: UniformType read new UniformType($8B67); public static property FLOAT_MAT3x4: UniformType read new UniformType($8B68); public static property FLOAT_MAT4x2: UniformType read new UniformType($8B69); public static property FLOAT_MAT4x3: UniformType read new UniformType($8B6A); public static property SAMPLER_1D_ARRAY: UniformType read new UniformType($8DC0); public static property SAMPLER_2D_ARRAY: UniformType read new UniformType($8DC1); public static property SAMPLER_BUFFER: UniformType read new UniformType($8DC2); public static property SAMPLER_1D_ARRAY_SHADOW: UniformType read new UniformType($8DC3); public static property SAMPLER_2D_ARRAY_SHADOW: UniformType read new UniformType($8DC4); public static property SAMPLER_CUBE_SHADOW: UniformType read new UniformType($8DC5); public static property UNSIGNED_INT_VEC2: UniformType read new UniformType($8DC6); public static property UNSIGNED_INT_VEC3: UniformType read new UniformType($8DC7); public static property UNSIGNED_INT_VEC4: UniformType read new UniformType($8DC8); public static property INT_SAMPLER_1D: UniformType read new UniformType($8DC9); public static property INT_SAMPLER_2D: UniformType read new UniformType($8DCA); public static property INT_SAMPLER_3D: UniformType read new UniformType($8DCB); public static property INT_SAMPLER_CUBE: UniformType read new UniformType($8DCC); public static property INT_SAMPLER_2D_RECT: UniformType read new UniformType($8DCD); public static property INT_SAMPLER_1D_ARRAY: UniformType read new UniformType($8DCE); public static property INT_SAMPLER_2D_ARRAY: UniformType read new UniformType($8DCF); public static property INT_SAMPLER_BUFFER: UniformType read new UniformType($8DD0); public static property UNSIGNED_INT_SAMPLER_1D: UniformType read new UniformType($8DD1); public static property UNSIGNED_INT_SAMPLER_2D: UniformType read new UniformType($8DD2); public static property UNSIGNED_INT_SAMPLER_3D: UniformType read new UniformType($8DD3); public static property UNSIGNED_INT_SAMPLER_CUBE: UniformType read new UniformType($8DD4); public static property UNSIGNED_INT_SAMPLER_2D_RECT: UniformType read new UniformType($8DD5); public static property UNSIGNED_INT_SAMPLER_1D_ARRAY: UniformType read new UniformType($8DD6); public static property UNSIGNED_INT_SAMPLER_2D_ARRAY: UniformType read new UniformType($8DD7); public static property UNSIGNED_INT_SAMPLER_BUFFER: UniformType read new UniformType($8DD8); public static property DOUBLE_MAT2: UniformType read new UniformType($8F46); public static property DOUBLE_MAT3: UniformType read new UniformType($8F47); public static property DOUBLE_MAT4: UniformType read new UniformType($8F48); public static property DOUBLE_MAT2x3: UniformType read new UniformType($8F49); public static property DOUBLE_MAT2x4: UniformType read new UniformType($8F4A); public static property DOUBLE_MAT3x2: UniformType read new UniformType($8F4B); public static property DOUBLE_MAT3x4: UniformType read new UniformType($8F4C); public static property DOUBLE_MAT4x2: UniformType read new UniformType($8F4D); public static property DOUBLE_MAT4x3: UniformType read new UniformType($8F4E); public static property DOUBLE_VEC2: UniformType read new UniformType($8FFC); public static property DOUBLE_VEC3: UniformType read new UniformType($8FFD); public static property DOUBLE_VEC4: UniformType read new UniformType($8FFE); public static property SAMPLER_CUBE_MAP_ARRAY: UniformType read new UniformType($900C); public static property SAMPLER_CUBE_MAP_ARRAY_SHADOW: UniformType read new UniformType($900D); public static property INT_SAMPLER_CUBE_MAP_ARRAY: UniformType read new UniformType($900E); public static property UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY: UniformType read new UniformType($900F); public static property SAMPLER_2D_MULTISAMPLE: UniformType read new UniformType($9108); public static property INT_SAMPLER_2D_MULTISAMPLE: UniformType read new UniformType($9109); public static property UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE: UniformType read new UniformType($910A); public static property SAMPLER_2D_MULTISAMPLE_ARRAY: UniformType read new UniformType($910B); public static property INT_SAMPLER_2D_MULTISAMPLE_ARRAY: UniformType read new UniformType($910C); public static property UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: UniformType read new UniformType($910D); public function ToString: string; override; begin if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else if self.val = UInt32($8B50) then Result := 'FLOAT_VEC2' else if self.val = UInt32($8B51) then Result := 'FLOAT_VEC3' else if self.val = UInt32($8B52) then Result := 'FLOAT_VEC4' else if self.val = UInt32($8B53) then Result := 'INT_VEC2' else if self.val = UInt32($8B54) then Result := 'INT_VEC3' else if self.val = UInt32($8B55) then Result := 'INT_VEC4' else if self.val = UInt32($8B56) then Result := 'BOOL' else if self.val = UInt32($8B57) then Result := 'BOOL_VEC2' else if self.val = UInt32($8B58) then Result := 'BOOL_VEC3' else if self.val = UInt32($8B59) then Result := 'BOOL_VEC4' else if self.val = UInt32($8B5A) then Result := 'FLOAT_MAT2' else if self.val = UInt32($8B5B) then Result := 'FLOAT_MAT3' else if self.val = UInt32($8B5C) then Result := 'FLOAT_MAT4' else if self.val = UInt32($8B5D) then Result := 'SAMPLER_1D' else if self.val = UInt32($8B5E) then Result := 'SAMPLER_2D' else if self.val = UInt32($8B5F) then Result := 'SAMPLER_3D' else if self.val = UInt32($8B60) then Result := 'SAMPLER_CUBE' else if self.val = UInt32($8B61) then Result := 'SAMPLER_1D_SHADOW' else if self.val = UInt32($8B62) then Result := 'SAMPLER_2D_SHADOW' else if self.val = UInt32($8B63) then Result := 'SAMPLER_2D_RECT' else if self.val = UInt32($8B64) then Result := 'SAMPLER_2D_RECT_SHADOW' else if self.val = UInt32($8B65) then Result := 'FLOAT_MAT2x3' else if self.val = UInt32($8B66) then Result := 'FLOAT_MAT2x4' else if self.val = UInt32($8B67) then Result := 'FLOAT_MAT3x2' else if self.val = UInt32($8B68) then Result := 'FLOAT_MAT3x4' else if self.val = UInt32($8B69) then Result := 'FLOAT_MAT4x2' else if self.val = UInt32($8B6A) then Result := 'FLOAT_MAT4x3' else if self.val = UInt32($8DC0) then Result := 'SAMPLER_1D_ARRAY' else if self.val = UInt32($8DC1) then Result := 'SAMPLER_2D_ARRAY' else if self.val = UInt32($8DC2) then Result := 'SAMPLER_BUFFER' else if self.val = UInt32($8DC3) then Result := 'SAMPLER_1D_ARRAY_SHADOW' else if self.val = UInt32($8DC4) then Result := 'SAMPLER_2D_ARRAY_SHADOW' else if self.val = UInt32($8DC5) then Result := 'SAMPLER_CUBE_SHADOW' else if self.val = UInt32($8DC6) then Result := 'UNSIGNED_INT_VEC2' else if self.val = UInt32($8DC7) then Result := 'UNSIGNED_INT_VEC3' else if self.val = UInt32($8DC8) then Result := 'UNSIGNED_INT_VEC4' else if self.val = UInt32($8DC9) then Result := 'INT_SAMPLER_1D' else if self.val = UInt32($8DCA) then Result := 'INT_SAMPLER_2D' else if self.val = UInt32($8DCB) then Result := 'INT_SAMPLER_3D' else if self.val = UInt32($8DCC) then Result := 'INT_SAMPLER_CUBE' else if self.val = UInt32($8DCD) then Result := 'INT_SAMPLER_2D_RECT' else if self.val = UInt32($8DCE) then Result := 'INT_SAMPLER_1D_ARRAY' else if self.val = UInt32($8DCF) then Result := 'INT_SAMPLER_2D_ARRAY' else if self.val = UInt32($8DD0) then Result := 'INT_SAMPLER_BUFFER' else if self.val = UInt32($8DD1) then Result := 'UNSIGNED_INT_SAMPLER_1D' else if self.val = UInt32($8DD2) then Result := 'UNSIGNED_INT_SAMPLER_2D' else if self.val = UInt32($8DD3) then Result := 'UNSIGNED_INT_SAMPLER_3D' else if self.val = UInt32($8DD4) then Result := 'UNSIGNED_INT_SAMPLER_CUBE' else if self.val = UInt32($8DD5) then Result := 'UNSIGNED_INT_SAMPLER_2D_RECT' else if self.val = UInt32($8DD6) then Result := 'UNSIGNED_INT_SAMPLER_1D_ARRAY' else if self.val = UInt32($8DD7) then Result := 'UNSIGNED_INT_SAMPLER_2D_ARRAY' else if self.val = UInt32($8DD8) then Result := 'UNSIGNED_INT_SAMPLER_BUFFER' else if self.val = UInt32($8F46) then Result := 'DOUBLE_MAT2' else if self.val = UInt32($8F47) then Result := 'DOUBLE_MAT3' else if self.val = UInt32($8F48) then Result := 'DOUBLE_MAT4' else if self.val = UInt32($8F49) then Result := 'DOUBLE_MAT2x3' else if self.val = UInt32($8F4A) then Result := 'DOUBLE_MAT2x4' else if self.val = UInt32($8F4B) then Result := 'DOUBLE_MAT3x2' else if self.val = UInt32($8F4C) then Result := 'DOUBLE_MAT3x4' else if self.val = UInt32($8F4D) then Result := 'DOUBLE_MAT4x2' else if self.val = UInt32($8F4E) then Result := 'DOUBLE_MAT4x3' else if self.val = UInt32($8FFC) then Result := 'DOUBLE_VEC2' else if self.val = UInt32($8FFD) then Result := 'DOUBLE_VEC3' else if self.val = UInt32($8FFE) then Result := 'DOUBLE_VEC4' else if self.val = UInt32($900C) then Result := 'SAMPLER_CUBE_MAP_ARRAY' else if self.val = UInt32($900D) then Result := 'SAMPLER_CUBE_MAP_ARRAY_SHADOW' else if self.val = UInt32($900E) then Result := 'INT_SAMPLER_CUBE_MAP_ARRAY' else if self.val = UInt32($900F) then Result := 'UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY' else if self.val = UInt32($9108) then Result := 'SAMPLER_2D_MULTISAMPLE' else if self.val = UInt32($9109) then Result := 'INT_SAMPLER_2D_MULTISAMPLE' else if self.val = UInt32($910A) then Result := 'UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE' else if self.val = UInt32($910B) then Result := 'SAMPLER_2D_MULTISAMPLE_ARRAY' else if self.val = UInt32($910C) then Result := 'INT_SAMPLER_2D_MULTISAMPLE_ARRAY' else if self.val = UInt32($910D) then Result := 'UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY' else Result := $'UniformType[{self.val}]'; end; end; UseProgramStageMask = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property VERTEX_SHADER_BIT: UseProgramStageMask read new UseProgramStageMask($0001); public static property VERTEX_SHADER_BIT_EXT: UseProgramStageMask read new UseProgramStageMask($0001); public static property FRAGMENT_SHADER_BIT: UseProgramStageMask read new UseProgramStageMask($0002); public static property FRAGMENT_SHADER_BIT_EXT: UseProgramStageMask read new UseProgramStageMask($0002); public static property GEOMETRY_SHADER_BIT: UseProgramStageMask read new UseProgramStageMask($0004); public static property GEOMETRY_SHADER_BIT_EXT: UseProgramStageMask read new UseProgramStageMask($0004); public static property GEOMETRY_SHADER_BIT_OES: UseProgramStageMask read new UseProgramStageMask($0004); public static property TESS_CONTROL_SHADER_BIT: UseProgramStageMask read new UseProgramStageMask($0008); public static property TESS_CONTROL_SHADER_BIT_EXT: UseProgramStageMask read new UseProgramStageMask($0008); public static property TESS_CONTROL_SHADER_BIT_OES: UseProgramStageMask read new UseProgramStageMask($0008); public static property TESS_EVALUATION_SHADER_BIT: UseProgramStageMask read new UseProgramStageMask($0010); public static property TESS_EVALUATION_SHADER_BIT_EXT: UseProgramStageMask read new UseProgramStageMask($0010); public static property TESS_EVALUATION_SHADER_BIT_OES: UseProgramStageMask read new UseProgramStageMask($0010); public static property COMPUTE_SHADER_BIT: UseProgramStageMask read new UseProgramStageMask($0020); public static property MESH_SHADER_BIT_NV: UseProgramStageMask read new UseProgramStageMask($0040); public static property TASK_SHADER_BIT_NV: UseProgramStageMask read new UseProgramStageMask($0080); public static property ALL_SHADER_BITS: UseProgramStageMask read new UseProgramStageMask($FFFFFFFF); public static property ALL_SHADER_BITS_EXT: UseProgramStageMask read new UseProgramStageMask($FFFFFFFF); public static function operator+(f1,f2: UseProgramStageMask) := new UseProgramStageMask(f1.val or f2.val); public static function operator or(f1,f2: UseProgramStageMask) := f1+f2; public property HAS_FLAG_VERTEX_SHADER_BIT: boolean read self.val and $0001 <> 0; public property HAS_FLAG_VERTEX_SHADER_BIT_EXT: boolean read self.val and $0001 <> 0; public property HAS_FLAG_FRAGMENT_SHADER_BIT: boolean read self.val and $0002 <> 0; public property HAS_FLAG_FRAGMENT_SHADER_BIT_EXT: boolean read self.val and $0002 <> 0; public property HAS_FLAG_GEOMETRY_SHADER_BIT: boolean read self.val and $0004 <> 0; public property HAS_FLAG_GEOMETRY_SHADER_BIT_EXT: boolean read self.val and $0004 <> 0; public property HAS_FLAG_GEOMETRY_SHADER_BIT_OES: boolean read self.val and $0004 <> 0; public property HAS_FLAG_TESS_CONTROL_SHADER_BIT: boolean read self.val and $0008 <> 0; public property HAS_FLAG_TESS_CONTROL_SHADER_BIT_EXT: boolean read self.val and $0008 <> 0; public property HAS_FLAG_TESS_CONTROL_SHADER_BIT_OES: boolean read self.val and $0008 <> 0; public property HAS_FLAG_TESS_EVALUATION_SHADER_BIT: boolean read self.val and $0010 <> 0; public property HAS_FLAG_TESS_EVALUATION_SHADER_BIT_EXT: boolean read self.val and $0010 <> 0; public property HAS_FLAG_TESS_EVALUATION_SHADER_BIT_OES: boolean read self.val and $0010 <> 0; public property HAS_FLAG_COMPUTE_SHADER_BIT: boolean read self.val and $0020 <> 0; public property HAS_FLAG_MESH_SHADER_BIT_NV: boolean read self.val and $0040 <> 0; public property HAS_FLAG_TASK_SHADER_BIT_NV: boolean read self.val and $0080 <> 0; public property HAS_FLAG_ALL_SHADER_BITS: boolean read self.val and $FFFFFFFF <> 0; public property HAS_FLAG_ALL_SHADER_BITS_EXT: boolean read self.val and $FFFFFFFF <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0001) = UInt32($0001) then res += 'VERTEX_SHADER_BIT+'; if self.val and UInt32($0001) = UInt32($0001) then res += 'VERTEX_SHADER_BIT_EXT+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'FRAGMENT_SHADER_BIT+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'FRAGMENT_SHADER_BIT_EXT+'; if self.val and UInt32($0004) = UInt32($0004) then res += 'GEOMETRY_SHADER_BIT+'; if self.val and UInt32($0004) = UInt32($0004) then res += 'GEOMETRY_SHADER_BIT_EXT+'; if self.val and UInt32($0004) = UInt32($0004) then res += 'GEOMETRY_SHADER_BIT_OES+'; if self.val and UInt32($0008) = UInt32($0008) then res += 'TESS_CONTROL_SHADER_BIT+'; if self.val and UInt32($0008) = UInt32($0008) then res += 'TESS_CONTROL_SHADER_BIT_EXT+'; if self.val and UInt32($0008) = UInt32($0008) then res += 'TESS_CONTROL_SHADER_BIT_OES+'; if self.val and UInt32($0010) = UInt32($0010) then res += 'TESS_EVALUATION_SHADER_BIT+'; if self.val and UInt32($0010) = UInt32($0010) then res += 'TESS_EVALUATION_SHADER_BIT_EXT+'; if self.val and UInt32($0010) = UInt32($0010) then res += 'TESS_EVALUATION_SHADER_BIT_OES+'; if self.val and UInt32($0020) = UInt32($0020) then res += 'COMPUTE_SHADER_BIT+'; if self.val and UInt32($0040) = UInt32($0040) then res += 'MESH_SHADER_BIT_NV+'; if self.val and UInt32($0080) = UInt32($0080) then res += 'TASK_SHADER_BIT_NV+'; if self.val and UInt32($FFFFFFFF) = UInt32($FFFFFFFF) then res += 'ALL_SHADER_BITS+'; if self.val and UInt32($FFFFFFFF) = UInt32($FFFFFFFF) then res += 'ALL_SHADER_BITS_EXT+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'UseProgramStageMask[{self.val}]'; end; end; VertexArrayPName = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property VERTEX_ATTRIB_RELATIVE_OFFSET: VertexArrayPName read new VertexArrayPName($82D5); public static property VERTEX_ATTRIB_ARRAY_ENABLED: VertexArrayPName read new VertexArrayPName($8622); public static property VERTEX_ATTRIB_ARRAY_SIZE: VertexArrayPName read new VertexArrayPName($8623); public static property VERTEX_ATTRIB_ARRAY_STRIDE: VertexArrayPName read new VertexArrayPName($8624); public static property VERTEX_ATTRIB_ARRAY_TYPE: VertexArrayPName read new VertexArrayPName($8625); public static property VERTEX_ATTRIB_ARRAY_LONG: VertexArrayPName read new VertexArrayPName($874E); public static property VERTEX_ATTRIB_ARRAY_NORMALIZED: VertexArrayPName read new VertexArrayPName($886A); public static property VERTEX_ATTRIB_ARRAY_INTEGER: VertexArrayPName read new VertexArrayPName($88FD); public static property VERTEX_ATTRIB_ARRAY_DIVISOR: VertexArrayPName read new VertexArrayPName($88FE); public function ToString: string; override; begin if self.val = UInt32($82D5) then Result := 'VERTEX_ATTRIB_RELATIVE_OFFSET' else if self.val = UInt32($8622) then Result := 'VERTEX_ATTRIB_ARRAY_ENABLED' else if self.val = UInt32($8623) then Result := 'VERTEX_ATTRIB_ARRAY_SIZE' else if self.val = UInt32($8624) then Result := 'VERTEX_ATTRIB_ARRAY_STRIDE' else if self.val = UInt32($8625) then Result := 'VERTEX_ATTRIB_ARRAY_TYPE' else if self.val = UInt32($874E) then Result := 'VERTEX_ATTRIB_ARRAY_LONG' else if self.val = UInt32($886A) then Result := 'VERTEX_ATTRIB_ARRAY_NORMALIZED' else if self.val = UInt32($88FD) then Result := 'VERTEX_ATTRIB_ARRAY_INTEGER' else if self.val = UInt32($88FE) then Result := 'VERTEX_ATTRIB_ARRAY_DIVISOR' else Result := $'VertexArrayPName[{self.val}]'; end; end; VertexAttribEnum = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property VERTEX_ATTRIB_ARRAY_ENABLED: VertexAttribEnum read new VertexAttribEnum($8622); public static property VERTEX_ATTRIB_ARRAY_SIZE: VertexAttribEnum read new VertexAttribEnum($8623); public static property VERTEX_ATTRIB_ARRAY_STRIDE: VertexAttribEnum read new VertexAttribEnum($8624); public static property VERTEX_ATTRIB_ARRAY_TYPE: VertexAttribEnum read new VertexAttribEnum($8625); public static property CURRENT_VERTEX_ATTRIB: VertexAttribEnum read new VertexAttribEnum($8626); public static property VERTEX_ATTRIB_ARRAY_NORMALIZED: VertexAttribEnum read new VertexAttribEnum($886A); public static property VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: VertexAttribEnum read new VertexAttribEnum($889F); public static property VERTEX_ATTRIB_ARRAY_INTEGER: VertexAttribEnum read new VertexAttribEnum($88FD); public static property VERTEX_ATTRIB_ARRAY_DIVISOR: VertexAttribEnum read new VertexAttribEnum($88FE); public function ToString: string; override; begin if self.val = UInt32($8622) then Result := 'VERTEX_ATTRIB_ARRAY_ENABLED' else if self.val = UInt32($8623) then Result := 'VERTEX_ATTRIB_ARRAY_SIZE' else if self.val = UInt32($8624) then Result := 'VERTEX_ATTRIB_ARRAY_STRIDE' else if self.val = UInt32($8625) then Result := 'VERTEX_ATTRIB_ARRAY_TYPE' else if self.val = UInt32($8626) then Result := 'CURRENT_VERTEX_ATTRIB' else if self.val = UInt32($886A) then Result := 'VERTEX_ATTRIB_ARRAY_NORMALIZED' else if self.val = UInt32($889F) then Result := 'VERTEX_ATTRIB_ARRAY_BUFFER_BINDING' else if self.val = UInt32($88FD) then Result := 'VERTEX_ATTRIB_ARRAY_INTEGER' else if self.val = UInt32($88FE) then Result := 'VERTEX_ATTRIB_ARRAY_DIVISOR' else Result := $'VertexAttribEnum[{self.val}]'; end; end; VertexAttribIType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BYTE: VertexAttribIType read new VertexAttribIType($1400); public static property UNSIGNED_BYTE: VertexAttribIType read new VertexAttribIType($1401); public static property SHORT: VertexAttribIType read new VertexAttribIType($1402); public static property UNSIGNED_SHORT: VertexAttribIType read new VertexAttribIType($1403); public static property INT: VertexAttribIType read new VertexAttribIType($1404); public static property UNSIGNED_INT: VertexAttribIType read new VertexAttribIType($1405); public function ToString: string; override; begin if self.val = UInt32($1400) then Result := 'BYTE' else if self.val = UInt32($1401) then Result := 'UNSIGNED_BYTE' else if self.val = UInt32($1402) then Result := 'SHORT' else if self.val = UInt32($1403) then Result := 'UNSIGNED_SHORT' else if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else Result := $'VertexAttribIType[{self.val}]'; end; end; VertexAttribLType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property DOUBLE: VertexAttribLType read new VertexAttribLType($140A); public function ToString: string; override; begin if self.val = UInt32($140A) then Result := 'DOUBLE' else Result := $'VertexAttribLType[{self.val}]'; end; end; VertexAttribPointerType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BYTE: VertexAttribPointerType read new VertexAttribPointerType($1400); public static property UNSIGNED_BYTE: VertexAttribPointerType read new VertexAttribPointerType($1401); public static property SHORT: VertexAttribPointerType read new VertexAttribPointerType($1402); public static property UNSIGNED_SHORT: VertexAttribPointerType read new VertexAttribPointerType($1403); public static property INT: VertexAttribPointerType read new VertexAttribPointerType($1404); public static property UNSIGNED_INT: VertexAttribPointerType read new VertexAttribPointerType($1405); public static property FLOAT: VertexAttribPointerType read new VertexAttribPointerType($1406); public static property DOUBLE: VertexAttribPointerType read new VertexAttribPointerType($140A); public static property HALF_FLOAT: VertexAttribPointerType read new VertexAttribPointerType($140B); public static property FIXED: VertexAttribPointerType read new VertexAttribPointerType($140C); public static property INT64_ARB: VertexAttribPointerType read new VertexAttribPointerType($140E); public static property INT64_NV: VertexAttribPointerType read new VertexAttribPointerType($140E); public static property UNSIGNED_INT64_ARB: VertexAttribPointerType read new VertexAttribPointerType($140F); public static property UNSIGNED_INT64_NV: VertexAttribPointerType read new VertexAttribPointerType($140F); public static property UNSIGNED_INT_2_10_10_10_REV: VertexAttribPointerType read new VertexAttribPointerType($8368); public static property UNSIGNED_INT_10F_11F_11F_REV: VertexAttribPointerType read new VertexAttribPointerType($8C3B); public static property INT_2_10_10_10_REV: VertexAttribPointerType read new VertexAttribPointerType($8D9F); public function ToString: string; override; begin if self.val = UInt32($1400) then Result := 'BYTE' else if self.val = UInt32($1401) then Result := 'UNSIGNED_BYTE' else if self.val = UInt32($1402) then Result := 'SHORT' else if self.val = UInt32($1403) then Result := 'UNSIGNED_SHORT' else if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else if self.val = UInt32($140B) then Result := 'HALF_FLOAT' else if self.val = UInt32($140C) then Result := 'FIXED' else if self.val = UInt32($140E) then Result := 'INT64_ARB' else if self.val = UInt32($140E) then Result := 'INT64_NV' else if self.val = UInt32($140F) then Result := 'UNSIGNED_INT64_ARB' else if self.val = UInt32($140F) then Result := 'UNSIGNED_INT64_NV' else if self.val = UInt32($8368) then Result := 'UNSIGNED_INT_2_10_10_10_REV' else if self.val = UInt32($8C3B) then Result := 'UNSIGNED_INT_10F_11F_11F_REV' else if self.val = UInt32($8D9F) then Result := 'INT_2_10_10_10_REV' else Result := $'VertexAttribPointerType[{self.val}]'; end; end; VertexAttribType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BYTE: VertexAttribType read new VertexAttribType($1400); public static property UNSIGNED_BYTE: VertexAttribType read new VertexAttribType($1401); public static property SHORT: VertexAttribType read new VertexAttribType($1402); public static property UNSIGNED_SHORT: VertexAttribType read new VertexAttribType($1403); public static property INT: VertexAttribType read new VertexAttribType($1404); public static property UNSIGNED_INT: VertexAttribType read new VertexAttribType($1405); public static property FLOAT: VertexAttribType read new VertexAttribType($1406); public static property DOUBLE: VertexAttribType read new VertexAttribType($140A); public static property HALF_FLOAT: VertexAttribType read new VertexAttribType($140B); public static property FIXED: VertexAttribType read new VertexAttribType($140C); public static property UNSIGNED_INT_2_10_10_10_REV: VertexAttribType read new VertexAttribType($8368); public static property UNSIGNED_INT_10F_11F_11F_REV: VertexAttribType read new VertexAttribType($8C3B); public static property INT_2_10_10_10_REV: VertexAttribType read new VertexAttribType($8D9F); public function ToString: string; override; begin if self.val = UInt32($1400) then Result := 'BYTE' else if self.val = UInt32($1401) then Result := 'UNSIGNED_BYTE' else if self.val = UInt32($1402) then Result := 'SHORT' else if self.val = UInt32($1403) then Result := 'UNSIGNED_SHORT' else if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else if self.val = UInt32($140B) then Result := 'HALF_FLOAT' else if self.val = UInt32($140C) then Result := 'FIXED' else if self.val = UInt32($8368) then Result := 'UNSIGNED_INT_2_10_10_10_REV' else if self.val = UInt32($8C3B) then Result := 'UNSIGNED_INT_10F_11F_11F_REV' else if self.val = UInt32($8D9F) then Result := 'INT_2_10_10_10_REV' else Result := $'VertexAttribType[{self.val}]'; end; end; VertexBufferObjectUsage = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property STREAM_DRAW: VertexBufferObjectUsage read new VertexBufferObjectUsage($88E0); public static property STREAM_READ: VertexBufferObjectUsage read new VertexBufferObjectUsage($88E1); public static property STREAM_COPY: VertexBufferObjectUsage read new VertexBufferObjectUsage($88E2); public static property STATIC_DRAW: VertexBufferObjectUsage read new VertexBufferObjectUsage($88E4); public static property STATIC_READ: VertexBufferObjectUsage read new VertexBufferObjectUsage($88E5); public static property STATIC_COPY: VertexBufferObjectUsage read new VertexBufferObjectUsage($88E6); public static property DYNAMIC_DRAW: VertexBufferObjectUsage read new VertexBufferObjectUsage($88E8); public static property DYNAMIC_READ: VertexBufferObjectUsage read new VertexBufferObjectUsage($88E9); public static property DYNAMIC_COPY: VertexBufferObjectUsage read new VertexBufferObjectUsage($88EA); public function ToString: string; override; begin if self.val = UInt32($88E0) then Result := 'STREAM_DRAW' else if self.val = UInt32($88E1) then Result := 'STREAM_READ' else if self.val = UInt32($88E2) then Result := 'STREAM_COPY' else if self.val = UInt32($88E4) then Result := 'STATIC_DRAW' else if self.val = UInt32($88E5) then Result := 'STATIC_READ' else if self.val = UInt32($88E6) then Result := 'STATIC_COPY' else if self.val = UInt32($88E8) then Result := 'DYNAMIC_DRAW' else if self.val = UInt32($88E9) then Result := 'DYNAMIC_READ' else if self.val = UInt32($88EA) then Result := 'DYNAMIC_COPY' else Result := $'VertexBufferObjectUsage[{self.val}]'; end; end; VertexPointerType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SHORT: VertexPointerType read new VertexPointerType($1402); public static property INT: VertexPointerType read new VertexPointerType($1404); public static property FLOAT: VertexPointerType read new VertexPointerType($1406); public static property DOUBLE: VertexPointerType read new VertexPointerType($140A); public function ToString: string; override; begin if self.val = UInt32($1402) then Result := 'SHORT' else if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else Result := $'VertexPointerType[{self.val}]'; end; end; VertexProvokingMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FIRST_VERTEX_CONVENTION: VertexProvokingMode read new VertexProvokingMode($8E4D); public static property LAST_VERTEX_CONVENTION: VertexProvokingMode read new VertexProvokingMode($8E4E); public function ToString: string; override; begin if self.val = UInt32($8E4D) then Result := 'FIRST_VERTEX_CONVENTION' else if self.val = UInt32($8E4E) then Result := 'LAST_VERTEX_CONVENTION' else Result := $'VertexProvokingMode[{self.val}]'; end; end; VertexShaderTextureUnitParameter = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CURRENT_TEXTURE_COORDS: VertexShaderTextureUnitParameter read new VertexShaderTextureUnitParameter($0B03); public static property TEXTURE_MATRIX: VertexShaderTextureUnitParameter read new VertexShaderTextureUnitParameter($0BA8); public function ToString: string; override; begin if self.val = UInt32($0B03) then Result := 'CURRENT_TEXTURE_COORDS' else if self.val = UInt32($0BA8) then Result := 'TEXTURE_MATRIX' else Result := $'VertexShaderTextureUnitParameter[{self.val}]'; end; end; {$endregion Core} {$region ARB} BufferAccessARB = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property READ_ONLY: BufferAccessARB read new BufferAccessARB($88B8); public static property WRITE_ONLY: BufferAccessARB read new BufferAccessARB($88B9); public static property READ_WRITE: BufferAccessARB read new BufferAccessARB($88BA); public function ToString: string; override; begin if self.val = UInt32($88B8) then Result := 'READ_ONLY' else if self.val = UInt32($88B9) then Result := 'WRITE_ONLY' else if self.val = UInt32($88BA) then Result := 'READ_WRITE' else Result := $'BufferAccessARB[{self.val}]'; end; end; BufferPNameARB = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BUFFER_IMMUTABLE_STORAGE: BufferPNameARB read new BufferPNameARB($821F); public static property BUFFER_STORAGE_FLAGS: BufferPNameARB read new BufferPNameARB($8220); public static property BUFFER_SIZE: BufferPNameARB read new BufferPNameARB($8764); public static property BUFFER_SIZE_ARB: BufferPNameARB read new BufferPNameARB($8764); public static property BUFFER_USAGE: BufferPNameARB read new BufferPNameARB($8765); public static property BUFFER_USAGE_ARB: BufferPNameARB read new BufferPNameARB($8765); public static property BUFFER_ACCESS: BufferPNameARB read new BufferPNameARB($88BB); public static property BUFFER_ACCESS_ARB: BufferPNameARB read new BufferPNameARB($88BB); public static property BUFFER_MAPPED: BufferPNameARB read new BufferPNameARB($88BC); public static property BUFFER_MAPPED_ARB: BufferPNameARB read new BufferPNameARB($88BC); public static property BUFFER_ACCESS_FLAGS: BufferPNameARB read new BufferPNameARB($911F); public static property BUFFER_MAP_LENGTH: BufferPNameARB read new BufferPNameARB($9120); public static property BUFFER_MAP_OFFSET: BufferPNameARB read new BufferPNameARB($9121); public function ToString: string; override; begin if self.val = UInt32($821F) then Result := 'BUFFER_IMMUTABLE_STORAGE' else if self.val = UInt32($8220) then Result := 'BUFFER_STORAGE_FLAGS' else if self.val = UInt32($8764) then Result := 'BUFFER_SIZE' else if self.val = UInt32($8764) then Result := 'BUFFER_SIZE_ARB' else if self.val = UInt32($8765) then Result := 'BUFFER_USAGE' else if self.val = UInt32($8765) then Result := 'BUFFER_USAGE_ARB' else if self.val = UInt32($88BB) then Result := 'BUFFER_ACCESS' else if self.val = UInt32($88BB) then Result := 'BUFFER_ACCESS_ARB' else if self.val = UInt32($88BC) then Result := 'BUFFER_MAPPED' else if self.val = UInt32($88BC) then Result := 'BUFFER_MAPPED_ARB' else if self.val = UInt32($911F) then Result := 'BUFFER_ACCESS_FLAGS' else if self.val = UInt32($9120) then Result := 'BUFFER_MAP_LENGTH' else if self.val = UInt32($9121) then Result := 'BUFFER_MAP_OFFSET' else Result := $'BufferPNameARB[{self.val}]'; end; end; BufferPointerNameARB = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BUFFER_MAP_POINTER: BufferPointerNameARB read new BufferPointerNameARB($88BD); public static property BUFFER_MAP_POINTER_ARB: BufferPointerNameARB read new BufferPointerNameARB($88BD); public function ToString: string; override; begin if self.val = UInt32($88BD) then Result := 'BUFFER_MAP_POINTER' else if self.val = UInt32($88BD) then Result := 'BUFFER_MAP_POINTER_ARB' else Result := $'BufferPointerNameARB[{self.val}]'; end; end; BufferUsageARB = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property STREAM_DRAW: BufferUsageARB read new BufferUsageARB($88E0); public static property STREAM_READ: BufferUsageARB read new BufferUsageARB($88E1); public static property STREAM_COPY: BufferUsageARB read new BufferUsageARB($88E2); public static property STATIC_DRAW: BufferUsageARB read new BufferUsageARB($88E4); public static property STATIC_READ: BufferUsageARB read new BufferUsageARB($88E5); public static property STATIC_COPY: BufferUsageARB read new BufferUsageARB($88E6); public static property DYNAMIC_DRAW: BufferUsageARB read new BufferUsageARB($88E8); public static property DYNAMIC_READ: BufferUsageARB read new BufferUsageARB($88E9); public static property DYNAMIC_COPY: BufferUsageARB read new BufferUsageARB($88EA); public function ToString: string; override; begin if self.val = UInt32($88E0) then Result := 'STREAM_DRAW' else if self.val = UInt32($88E1) then Result := 'STREAM_READ' else if self.val = UInt32($88E2) then Result := 'STREAM_COPY' else if self.val = UInt32($88E4) then Result := 'STATIC_DRAW' else if self.val = UInt32($88E5) then Result := 'STATIC_READ' else if self.val = UInt32($88E6) then Result := 'STATIC_COPY' else if self.val = UInt32($88E8) then Result := 'DYNAMIC_DRAW' else if self.val = UInt32($88E9) then Result := 'DYNAMIC_READ' else if self.val = UInt32($88EA) then Result := 'DYNAMIC_COPY' else Result := $'BufferUsageARB[{self.val}]'; end; end; ClampColorModeARB = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FALSE: ClampColorModeARB read new ClampColorModeARB($0000); public static property TRUE: ClampColorModeARB read new ClampColorModeARB($0001); public static property FIXED_ONLY: ClampColorModeARB read new ClampColorModeARB($891D); public static property FIXED_ONLY_ARB: ClampColorModeARB read new ClampColorModeARB($891D); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'FALSE' else if self.val = UInt32($0001) then Result := 'TRUE' else if self.val = UInt32($891D) then Result := 'FIXED_ONLY' else if self.val = UInt32($891D) then Result := 'FIXED_ONLY_ARB' else Result := $'ClampColorModeARB[{self.val}]'; end; end; ClampColorTargetARB = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CLAMP_VERTEX_COLOR_ARB: ClampColorTargetARB read new ClampColorTargetARB($891A); public static property CLAMP_FRAGMENT_COLOR_ARB: ClampColorTargetARB read new ClampColorTargetARB($891B); public static property CLAMP_READ_COLOR: ClampColorTargetARB read new ClampColorTargetARB($891C); public static property CLAMP_READ_COLOR_ARB: ClampColorTargetARB read new ClampColorTargetARB($891C); public function ToString: string; override; begin if self.val = UInt32($891A) then Result := 'CLAMP_VERTEX_COLOR_ARB' else if self.val = UInt32($891B) then Result := 'CLAMP_FRAGMENT_COLOR_ARB' else if self.val = UInt32($891C) then Result := 'CLAMP_READ_COLOR' else if self.val = UInt32($891C) then Result := 'CLAMP_READ_COLOR_ARB' else Result := $'ClampColorTargetARB[{self.val}]'; end; end; MatrixIndexPointerTypeARB = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property UNSIGNED_BYTE: MatrixIndexPointerTypeARB read new MatrixIndexPointerTypeARB($1401); public static property UNSIGNED_SHORT: MatrixIndexPointerTypeARB read new MatrixIndexPointerTypeARB($1403); public static property UNSIGNED_INT: MatrixIndexPointerTypeARB read new MatrixIndexPointerTypeARB($1405); public function ToString: string; override; begin if self.val = UInt32($1401) then Result := 'UNSIGNED_BYTE' else if self.val = UInt32($1403) then Result := 'UNSIGNED_SHORT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else Result := $'MatrixIndexPointerTypeARB[{self.val}]'; end; end; PointParameterNameARB = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property POINT_SIZE_MIN_EXT: PointParameterNameARB read new PointParameterNameARB($8126); public static property POINT_SIZE_MAX_EXT: PointParameterNameARB read new PointParameterNameARB($8127); public static property POINT_FADE_THRESHOLD_SIZE: PointParameterNameARB read new PointParameterNameARB($8128); public static property POINT_FADE_THRESHOLD_SIZE_EXT: PointParameterNameARB read new PointParameterNameARB($8128); public function ToString: string; override; begin if self.val = UInt32($8126) then Result := 'POINT_SIZE_MIN_EXT' else if self.val = UInt32($8127) then Result := 'POINT_SIZE_MAX_EXT' else if self.val = UInt32($8128) then Result := 'POINT_FADE_THRESHOLD_SIZE' else if self.val = UInt32($8128) then Result := 'POINT_FADE_THRESHOLD_SIZE_EXT' else Result := $'PointParameterNameARB[{self.val}]'; end; end; ProgramPropertyARB = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property COMPUTE_WORK_GROUP_SIZE: ProgramPropertyARB read new ProgramPropertyARB($8267); public static property PROGRAM_BINARY_LENGTH: ProgramPropertyARB read new ProgramPropertyARB($8741); public static property GEOMETRY_VERTICES_OUT: ProgramPropertyARB read new ProgramPropertyARB($8916); public static property GEOMETRY_INPUT_TYPE: ProgramPropertyARB read new ProgramPropertyARB($8917); public static property GEOMETRY_OUTPUT_TYPE: ProgramPropertyARB read new ProgramPropertyARB($8918); public static property ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: ProgramPropertyARB read new ProgramPropertyARB($8A35); public static property ACTIVE_UNIFORM_BLOCKS: ProgramPropertyARB read new ProgramPropertyARB($8A36); public static property DELETE_STATUS: ProgramPropertyARB read new ProgramPropertyARB($8B80); public static property LINK_STATUS: ProgramPropertyARB read new ProgramPropertyARB($8B82); public static property VALIDATE_STATUS: ProgramPropertyARB read new ProgramPropertyARB($8B83); public static property INFO_LOG_LENGTH: ProgramPropertyARB read new ProgramPropertyARB($8B84); public static property ATTACHED_SHADERS: ProgramPropertyARB read new ProgramPropertyARB($8B85); public static property ACTIVE_UNIFORMS: ProgramPropertyARB read new ProgramPropertyARB($8B86); public static property ACTIVE_UNIFORM_MAX_LENGTH: ProgramPropertyARB read new ProgramPropertyARB($8B87); public static property ACTIVE_ATTRIBUTES: ProgramPropertyARB read new ProgramPropertyARB($8B89); public static property ACTIVE_ATTRIBUTE_MAX_LENGTH: ProgramPropertyARB read new ProgramPropertyARB($8B8A); public static property TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: ProgramPropertyARB read new ProgramPropertyARB($8C76); public static property TRANSFORM_FEEDBACK_BUFFER_MODE: ProgramPropertyARB read new ProgramPropertyARB($8C7F); public static property TRANSFORM_FEEDBACK_VARYINGS: ProgramPropertyARB read new ProgramPropertyARB($8C83); public static property ACTIVE_ATOMIC_COUNTER_BUFFERS: ProgramPropertyARB read new ProgramPropertyARB($92D9); public function ToString: string; override; begin if self.val = UInt32($8267) then Result := 'COMPUTE_WORK_GROUP_SIZE' else if self.val = UInt32($8741) then Result := 'PROGRAM_BINARY_LENGTH' else if self.val = UInt32($8916) then Result := 'GEOMETRY_VERTICES_OUT' else if self.val = UInt32($8917) then Result := 'GEOMETRY_INPUT_TYPE' else if self.val = UInt32($8918) then Result := 'GEOMETRY_OUTPUT_TYPE' else if self.val = UInt32($8A35) then Result := 'ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH' else if self.val = UInt32($8A36) then Result := 'ACTIVE_UNIFORM_BLOCKS' else if self.val = UInt32($8B80) then Result := 'DELETE_STATUS' else if self.val = UInt32($8B82) then Result := 'LINK_STATUS' else if self.val = UInt32($8B83) then Result := 'VALIDATE_STATUS' else if self.val = UInt32($8B84) then Result := 'INFO_LOG_LENGTH' else if self.val = UInt32($8B85) then Result := 'ATTACHED_SHADERS' else if self.val = UInt32($8B86) then Result := 'ACTIVE_UNIFORMS' else if self.val = UInt32($8B87) then Result := 'ACTIVE_UNIFORM_MAX_LENGTH' else if self.val = UInt32($8B89) then Result := 'ACTIVE_ATTRIBUTES' else if self.val = UInt32($8B8A) then Result := 'ACTIVE_ATTRIBUTE_MAX_LENGTH' else if self.val = UInt32($8C76) then Result := 'TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH' else if self.val = UInt32($8C7F) then Result := 'TRANSFORM_FEEDBACK_BUFFER_MODE' else if self.val = UInt32($8C83) then Result := 'TRANSFORM_FEEDBACK_VARYINGS' else if self.val = UInt32($92D9) then Result := 'ACTIVE_ATOMIC_COUNTER_BUFFERS' else Result := $'ProgramPropertyARB[{self.val}]'; end; end; VertexAttribPointerPropertyARB = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property VERTEX_ATTRIB_ARRAY_POINTER: VertexAttribPointerPropertyARB read new VertexAttribPointerPropertyARB($8645); public static property VERTEX_ATTRIB_ARRAY_POINTER_ARB: VertexAttribPointerPropertyARB read new VertexAttribPointerPropertyARB($8645); public function ToString: string; override; begin if self.val = UInt32($8645) then Result := 'VERTEX_ATTRIB_ARRAY_POINTER' else if self.val = UInt32($8645) then Result := 'VERTEX_ATTRIB_ARRAY_POINTER_ARB' else Result := $'VertexAttribPointerPropertyARB[{self.val}]'; end; end; VertexAttribPropertyARB = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property VERTEX_ATTRIB_BINDING: VertexAttribPropertyARB read new VertexAttribPropertyARB($82D4); public static property VERTEX_ATTRIB_RELATIVE_OFFSET: VertexAttribPropertyARB read new VertexAttribPropertyARB($82D5); public static property VERTEX_ATTRIB_ARRAY_ENABLED: VertexAttribPropertyARB read new VertexAttribPropertyARB($8622); public static property VERTEX_ATTRIB_ARRAY_SIZE: VertexAttribPropertyARB read new VertexAttribPropertyARB($8623); public static property VERTEX_ATTRIB_ARRAY_STRIDE: VertexAttribPropertyARB read new VertexAttribPropertyARB($8624); public static property VERTEX_ATTRIB_ARRAY_TYPE: VertexAttribPropertyARB read new VertexAttribPropertyARB($8625); public static property CURRENT_VERTEX_ATTRIB: VertexAttribPropertyARB read new VertexAttribPropertyARB($8626); public static property VERTEX_ATTRIB_ARRAY_LONG: VertexAttribPropertyARB read new VertexAttribPropertyARB($874E); public static property VERTEX_ATTRIB_ARRAY_NORMALIZED: VertexAttribPropertyARB read new VertexAttribPropertyARB($886A); public static property VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: VertexAttribPropertyARB read new VertexAttribPropertyARB($889F); public static property VERTEX_ATTRIB_ARRAY_INTEGER: VertexAttribPropertyARB read new VertexAttribPropertyARB($88FD); public static property VERTEX_ATTRIB_ARRAY_INTEGER_EXT: VertexAttribPropertyARB read new VertexAttribPropertyARB($88FD); public static property VERTEX_ATTRIB_ARRAY_DIVISOR: VertexAttribPropertyARB read new VertexAttribPropertyARB($88FE); public function ToString: string; override; begin if self.val = UInt32($82D4) then Result := 'VERTEX_ATTRIB_BINDING' else if self.val = UInt32($82D5) then Result := 'VERTEX_ATTRIB_RELATIVE_OFFSET' else if self.val = UInt32($8622) then Result := 'VERTEX_ATTRIB_ARRAY_ENABLED' else if self.val = UInt32($8623) then Result := 'VERTEX_ATTRIB_ARRAY_SIZE' else if self.val = UInt32($8624) then Result := 'VERTEX_ATTRIB_ARRAY_STRIDE' else if self.val = UInt32($8625) then Result := 'VERTEX_ATTRIB_ARRAY_TYPE' else if self.val = UInt32($8626) then Result := 'CURRENT_VERTEX_ATTRIB' else if self.val = UInt32($874E) then Result := 'VERTEX_ATTRIB_ARRAY_LONG' else if self.val = UInt32($886A) then Result := 'VERTEX_ATTRIB_ARRAY_NORMALIZED' else if self.val = UInt32($889F) then Result := 'VERTEX_ATTRIB_ARRAY_BUFFER_BINDING' else if self.val = UInt32($88FD) then Result := 'VERTEX_ATTRIB_ARRAY_INTEGER' else if self.val = UInt32($88FD) then Result := 'VERTEX_ATTRIB_ARRAY_INTEGER_EXT' else if self.val = UInt32($88FE) then Result := 'VERTEX_ATTRIB_ARRAY_DIVISOR' else Result := $'VertexAttribPropertyARB[{self.val}]'; end; end; WeightPointerTypeARB = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BYTE: WeightPointerTypeARB read new WeightPointerTypeARB($1400); public static property UNSIGNED_BYTE: WeightPointerTypeARB read new WeightPointerTypeARB($1401); public static property SHORT: WeightPointerTypeARB read new WeightPointerTypeARB($1402); public static property UNSIGNED_SHORT: WeightPointerTypeARB read new WeightPointerTypeARB($1403); public static property INT: WeightPointerTypeARB read new WeightPointerTypeARB($1404); public static property UNSIGNED_INT: WeightPointerTypeARB read new WeightPointerTypeARB($1405); public static property FLOAT: WeightPointerTypeARB read new WeightPointerTypeARB($1406); public static property DOUBLE: WeightPointerTypeARB read new WeightPointerTypeARB($140A); public function ToString: string; override; begin if self.val = UInt32($1400) then Result := 'BYTE' else if self.val = UInt32($1401) then Result := 'UNSIGNED_BYTE' else if self.val = UInt32($1402) then Result := 'SHORT' else if self.val = UInt32($1403) then Result := 'UNSIGNED_SHORT' else if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else Result := $'WeightPointerTypeARB[{self.val}]'; end; end; {$endregion ARB} {$region EXT} BinormalPointerTypeEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BYTE: BinormalPointerTypeEXT read new BinormalPointerTypeEXT($1400); public static property SHORT: BinormalPointerTypeEXT read new BinormalPointerTypeEXT($1402); public static property INT: BinormalPointerTypeEXT read new BinormalPointerTypeEXT($1404); public static property FLOAT: BinormalPointerTypeEXT read new BinormalPointerTypeEXT($1406); public static property DOUBLE: BinormalPointerTypeEXT read new BinormalPointerTypeEXT($140A); public static property DOUBLE_EXT: BinormalPointerTypeEXT read new BinormalPointerTypeEXT($140A); public function ToString: string; override; begin if self.val = UInt32($1400) then Result := 'BYTE' else if self.val = UInt32($1402) then Result := 'SHORT' else if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else if self.val = UInt32($140A) then Result := 'DOUBLE_EXT' else Result := $'BinormalPointerTypeEXT[{self.val}]'; end; end; BlendEquationModeEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FUNC_ADD: BlendEquationModeEXT read new BlendEquationModeEXT($8006); public static property FUNC_ADD_EXT: BlendEquationModeEXT read new BlendEquationModeEXT($8006); public static property MIN: BlendEquationModeEXT read new BlendEquationModeEXT($8007); public static property MIN_EXT: BlendEquationModeEXT read new BlendEquationModeEXT($8007); public static property MAX: BlendEquationModeEXT read new BlendEquationModeEXT($8008); public static property MAX_EXT: BlendEquationModeEXT read new BlendEquationModeEXT($8008); public static property FUNC_SUBTRACT: BlendEquationModeEXT read new BlendEquationModeEXT($800A); public static property FUNC_SUBTRACT_EXT: BlendEquationModeEXT read new BlendEquationModeEXT($800A); public static property FUNC_REVERSE_SUBTRACT: BlendEquationModeEXT read new BlendEquationModeEXT($800B); public static property FUNC_REVERSE_SUBTRACT_EXT: BlendEquationModeEXT read new BlendEquationModeEXT($800B); public static property ALPHA_MIN_SGIX: BlendEquationModeEXT read new BlendEquationModeEXT($8320); public static property ALPHA_MAX_SGIX: BlendEquationModeEXT read new BlendEquationModeEXT($8321); public function ToString: string; override; begin if self.val = UInt32($8006) then Result := 'FUNC_ADD' else if self.val = UInt32($8006) then Result := 'FUNC_ADD_EXT' else if self.val = UInt32($8007) then Result := 'MIN' else if self.val = UInt32($8007) then Result := 'MIN_EXT' else if self.val = UInt32($8008) then Result := 'MAX' else if self.val = UInt32($8008) then Result := 'MAX_EXT' else if self.val = UInt32($800A) then Result := 'FUNC_SUBTRACT' else if self.val = UInt32($800A) then Result := 'FUNC_SUBTRACT_EXT' else if self.val = UInt32($800B) then Result := 'FUNC_REVERSE_SUBTRACT' else if self.val = UInt32($800B) then Result := 'FUNC_REVERSE_SUBTRACT_EXT' else if self.val = UInt32($8320) then Result := 'ALPHA_MIN_SGIX' else if self.val = UInt32($8321) then Result := 'ALPHA_MAX_SGIX' else Result := $'BlendEquationModeEXT[{self.val}]'; end; end; ConvolutionParameterEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CONVOLUTION_BORDER_MODE: ConvolutionParameterEXT read new ConvolutionParameterEXT($8013); public static property CONVOLUTION_BORDER_MODE_EXT: ConvolutionParameterEXT read new ConvolutionParameterEXT($8013); public static property CONVOLUTION_FILTER_SCALE: ConvolutionParameterEXT read new ConvolutionParameterEXT($8014); public static property CONVOLUTION_FILTER_SCALE_EXT: ConvolutionParameterEXT read new ConvolutionParameterEXT($8014); public static property CONVOLUTION_FILTER_BIAS: ConvolutionParameterEXT read new ConvolutionParameterEXT($8015); public static property CONVOLUTION_FILTER_BIAS_EXT: ConvolutionParameterEXT read new ConvolutionParameterEXT($8015); public function ToString: string; override; begin if self.val = UInt32($8013) then Result := 'CONVOLUTION_BORDER_MODE' else if self.val = UInt32($8013) then Result := 'CONVOLUTION_BORDER_MODE_EXT' else if self.val = UInt32($8014) then Result := 'CONVOLUTION_FILTER_SCALE' else if self.val = UInt32($8014) then Result := 'CONVOLUTION_FILTER_SCALE_EXT' else if self.val = UInt32($8015) then Result := 'CONVOLUTION_FILTER_BIAS' else if self.val = UInt32($8015) then Result := 'CONVOLUTION_FILTER_BIAS_EXT' else Result := $'ConvolutionParameterEXT[{self.val}]'; end; end; ConvolutionTargetEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CONVOLUTION_1D: ConvolutionTargetEXT read new ConvolutionTargetEXT($8010); public static property CONVOLUTION_1D_EXT: ConvolutionTargetEXT read new ConvolutionTargetEXT($8010); public static property CONVOLUTION_2D: ConvolutionTargetEXT read new ConvolutionTargetEXT($8011); public static property CONVOLUTION_2D_EXT: ConvolutionTargetEXT read new ConvolutionTargetEXT($8011); public function ToString: string; override; begin if self.val = UInt32($8010) then Result := 'CONVOLUTION_1D' else if self.val = UInt32($8010) then Result := 'CONVOLUTION_1D_EXT' else if self.val = UInt32($8011) then Result := 'CONVOLUTION_2D' else if self.val = UInt32($8011) then Result := 'CONVOLUTION_2D_EXT' else Result := $'ConvolutionTargetEXT[{self.val}]'; end; end; CullParameterEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CULL_VERTEX_EYE_POSITION_EXT: CullParameterEXT read new CullParameterEXT($81AB); public static property CULL_VERTEX_OBJECT_POSITION_EXT: CullParameterEXT read new CullParameterEXT($81AC); public function ToString: string; override; begin if self.val = UInt32($81AB) then Result := 'CULL_VERTEX_EYE_POSITION_EXT' else if self.val = UInt32($81AC) then Result := 'CULL_VERTEX_OBJECT_POSITION_EXT' else Result := $'CullParameterEXT[{self.val}]'; end; end; DataTypeEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SCALAR_EXT: DataTypeEXT read new DataTypeEXT($87BE); public static property VECTOR_EXT: DataTypeEXT read new DataTypeEXT($87BF); public static property MATRIX_EXT: DataTypeEXT read new DataTypeEXT($87C0); public function ToString: string; override; begin if self.val = UInt32($87BE) then Result := 'SCALAR_EXT' else if self.val = UInt32($87BF) then Result := 'VECTOR_EXT' else if self.val = UInt32($87C0) then Result := 'MATRIX_EXT' else Result := $'DataTypeEXT[{self.val}]'; end; end; FogPointerTypeEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FLOAT: FogPointerTypeEXT read new FogPointerTypeEXT($1406); public static property DOUBLE: FogPointerTypeEXT read new FogPointerTypeEXT($140A); public function ToString: string; override; begin if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else Result := $'FogPointerTypeEXT[{self.val}]'; end; end; GetHistogramParameterPNameEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property HISTOGRAM_WIDTH: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($8026); public static property HISTOGRAM_WIDTH_EXT: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($8026); public static property HISTOGRAM_FORMAT: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($8027); public static property HISTOGRAM_FORMAT_EXT: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($8027); public static property HISTOGRAM_RED_SIZE: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($8028); public static property HISTOGRAM_RED_SIZE_EXT: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($8028); public static property HISTOGRAM_GREEN_SIZE: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($8029); public static property HISTOGRAM_GREEN_SIZE_EXT: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($8029); public static property HISTOGRAM_BLUE_SIZE: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($802A); public static property HISTOGRAM_BLUE_SIZE_EXT: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($802A); public static property HISTOGRAM_ALPHA_SIZE: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($802B); public static property HISTOGRAM_ALPHA_SIZE_EXT: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($802B); public static property HISTOGRAM_LUMINANCE_SIZE: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($802C); public static property HISTOGRAM_LUMINANCE_SIZE_EXT: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($802C); public static property HISTOGRAM_SINK: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($802D); public static property HISTOGRAM_SINK_EXT: GetHistogramParameterPNameEXT read new GetHistogramParameterPNameEXT($802D); public function ToString: string; override; begin if self.val = UInt32($8026) then Result := 'HISTOGRAM_WIDTH' else if self.val = UInt32($8026) then Result := 'HISTOGRAM_WIDTH_EXT' else if self.val = UInt32($8027) then Result := 'HISTOGRAM_FORMAT' else if self.val = UInt32($8027) then Result := 'HISTOGRAM_FORMAT_EXT' else if self.val = UInt32($8028) then Result := 'HISTOGRAM_RED_SIZE' else if self.val = UInt32($8028) then Result := 'HISTOGRAM_RED_SIZE_EXT' else if self.val = UInt32($8029) then Result := 'HISTOGRAM_GREEN_SIZE' else if self.val = UInt32($8029) then Result := 'HISTOGRAM_GREEN_SIZE_EXT' else if self.val = UInt32($802A) then Result := 'HISTOGRAM_BLUE_SIZE' else if self.val = UInt32($802A) then Result := 'HISTOGRAM_BLUE_SIZE_EXT' else if self.val = UInt32($802B) then Result := 'HISTOGRAM_ALPHA_SIZE' else if self.val = UInt32($802B) then Result := 'HISTOGRAM_ALPHA_SIZE_EXT' else if self.val = UInt32($802C) then Result := 'HISTOGRAM_LUMINANCE_SIZE' else if self.val = UInt32($802C) then Result := 'HISTOGRAM_LUMINANCE_SIZE_EXT' else if self.val = UInt32($802D) then Result := 'HISTOGRAM_SINK' else if self.val = UInt32($802D) then Result := 'HISTOGRAM_SINK_EXT' else Result := $'GetHistogramParameterPNameEXT[{self.val}]'; end; end; GetMinmaxParameterPNameEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property MINMAX_FORMAT: GetMinmaxParameterPNameEXT read new GetMinmaxParameterPNameEXT($802F); public static property MINMAX_FORMAT_EXT: GetMinmaxParameterPNameEXT read new GetMinmaxParameterPNameEXT($802F); public static property MINMAX_SINK: GetMinmaxParameterPNameEXT read new GetMinmaxParameterPNameEXT($8030); public static property MINMAX_SINK_EXT: GetMinmaxParameterPNameEXT read new GetMinmaxParameterPNameEXT($8030); public function ToString: string; override; begin if self.val = UInt32($802F) then Result := 'MINMAX_FORMAT' else if self.val = UInt32($802F) then Result := 'MINMAX_FORMAT_EXT' else if self.val = UInt32($8030) then Result := 'MINMAX_SINK' else if self.val = UInt32($8030) then Result := 'MINMAX_SINK_EXT' else Result := $'GetMinmaxParameterPNameEXT[{self.val}]'; end; end; GetVariantValueEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property VARIANT_VALUE_EXT: GetVariantValueEXT read new GetVariantValueEXT($87E4); public static property VARIANT_DATATYPE_EXT: GetVariantValueEXT read new GetVariantValueEXT($87E5); public static property VARIANT_ARRAY_STRIDE_EXT: GetVariantValueEXT read new GetVariantValueEXT($87E6); public static property VARIANT_ARRAY_TYPE_EXT: GetVariantValueEXT read new GetVariantValueEXT($87E7); public function ToString: string; override; begin if self.val = UInt32($87E4) then Result := 'VARIANT_VALUE_EXT' else if self.val = UInt32($87E5) then Result := 'VARIANT_DATATYPE_EXT' else if self.val = UInt32($87E6) then Result := 'VARIANT_ARRAY_STRIDE_EXT' else if self.val = UInt32($87E7) then Result := 'VARIANT_ARRAY_TYPE_EXT' else Result := $'GetVariantValueEXT[{self.val}]'; end; end; HistogramTargetEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property HISTOGRAM: HistogramTargetEXT read new HistogramTargetEXT($8024); public static property HISTOGRAM_EXT: HistogramTargetEXT read new HistogramTargetEXT($8024); public static property PROXY_HISTOGRAM: HistogramTargetEXT read new HistogramTargetEXT($8025); public static property PROXY_HISTOGRAM_EXT: HistogramTargetEXT read new HistogramTargetEXT($8025); public function ToString: string; override; begin if self.val = UInt32($8024) then Result := 'HISTOGRAM' else if self.val = UInt32($8024) then Result := 'HISTOGRAM_EXT' else if self.val = UInt32($8025) then Result := 'PROXY_HISTOGRAM' else if self.val = UInt32($8025) then Result := 'PROXY_HISTOGRAM_EXT' else Result := $'HistogramTargetEXT[{self.val}]'; end; end; IndexFunctionEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NEVER: IndexFunctionEXT read new IndexFunctionEXT($0200); public static property LESS: IndexFunctionEXT read new IndexFunctionEXT($0201); public static property EQUAL: IndexFunctionEXT read new IndexFunctionEXT($0202); public static property LEQUAL: IndexFunctionEXT read new IndexFunctionEXT($0203); public static property GREATER: IndexFunctionEXT read new IndexFunctionEXT($0204); public static property NOTEQUAL: IndexFunctionEXT read new IndexFunctionEXT($0205); public static property GEQUAL: IndexFunctionEXT read new IndexFunctionEXT($0206); public static property ALWAYS: IndexFunctionEXT read new IndexFunctionEXT($0207); public function ToString: string; override; begin if self.val = UInt32($0200) then Result := 'NEVER' else if self.val = UInt32($0201) then Result := 'LESS' else if self.val = UInt32($0202) then Result := 'EQUAL' else if self.val = UInt32($0203) then Result := 'LEQUAL' else if self.val = UInt32($0204) then Result := 'GREATER' else if self.val = UInt32($0205) then Result := 'NOTEQUAL' else if self.val = UInt32($0206) then Result := 'GEQUAL' else if self.val = UInt32($0207) then Result := 'ALWAYS' else Result := $'IndexFunctionEXT[{self.val}]'; end; end; IndexMaterialParameterEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property INDEX_OFFSET: IndexMaterialParameterEXT read new IndexMaterialParameterEXT($0D13); public function ToString: string; override; begin if self.val = UInt32($0D13) then Result := 'INDEX_OFFSET' else Result := $'IndexMaterialParameterEXT[{self.val}]'; end; end; LightTextureModeEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FRAGMENT_MATERIAL_EXT: LightTextureModeEXT read new LightTextureModeEXT($8349); public static property FRAGMENT_NORMAL_EXT: LightTextureModeEXT read new LightTextureModeEXT($834A); public static property FRAGMENT_COLOR_EXT: LightTextureModeEXT read new LightTextureModeEXT($834C); public static property FRAGMENT_DEPTH_EXT: LightTextureModeEXT read new LightTextureModeEXT($8452); public function ToString: string; override; begin if self.val = UInt32($8349) then Result := 'FRAGMENT_MATERIAL_EXT' else if self.val = UInt32($834A) then Result := 'FRAGMENT_NORMAL_EXT' else if self.val = UInt32($834C) then Result := 'FRAGMENT_COLOR_EXT' else if self.val = UInt32($8452) then Result := 'FRAGMENT_DEPTH_EXT' else Result := $'LightTextureModeEXT[{self.val}]'; end; end; LightTexturePNameEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ATTENUATION_EXT: LightTexturePNameEXT read new LightTexturePNameEXT($834D); public static property SHADOW_ATTENUATION_EXT: LightTexturePNameEXT read new LightTexturePNameEXT($834E); public function ToString: string; override; begin if self.val = UInt32($834D) then Result := 'ATTENUATION_EXT' else if self.val = UInt32($834E) then Result := 'SHADOW_ATTENUATION_EXT' else Result := $'LightTexturePNameEXT[{self.val}]'; end; end; MinmaxTargetEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property MINMAX: MinmaxTargetEXT read new MinmaxTargetEXT($802E); public static property MINMAX_EXT: MinmaxTargetEXT read new MinmaxTargetEXT($802E); public function ToString: string; override; begin if self.val = UInt32($802E) then Result := 'MINMAX' else if self.val = UInt32($802E) then Result := 'MINMAX_EXT' else Result := $'MinmaxTargetEXT[{self.val}]'; end; end; ParameterRangeEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NORMALIZED_RANGE_EXT: ParameterRangeEXT read new ParameterRangeEXT($87E0); public static property FULL_RANGE_EXT: ParameterRangeEXT read new ParameterRangeEXT($87E1); public function ToString: string; override; begin if self.val = UInt32($87E0) then Result := 'NORMALIZED_RANGE_EXT' else if self.val = UInt32($87E1) then Result := 'FULL_RANGE_EXT' else Result := $'ParameterRangeEXT[{self.val}]'; end; end; PixelTransformPNameEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PIXEL_MAG_FILTER_EXT: PixelTransformPNameEXT read new PixelTransformPNameEXT($8331); public static property PIXEL_MIN_FILTER_EXT: PixelTransformPNameEXT read new PixelTransformPNameEXT($8332); public static property PIXEL_CUBIC_WEIGHT_EXT: PixelTransformPNameEXT read new PixelTransformPNameEXT($8333); public function ToString: string; override; begin if self.val = UInt32($8331) then Result := 'PIXEL_MAG_FILTER_EXT' else if self.val = UInt32($8332) then Result := 'PIXEL_MIN_FILTER_EXT' else if self.val = UInt32($8333) then Result := 'PIXEL_CUBIC_WEIGHT_EXT' else Result := $'PixelTransformPNameEXT[{self.val}]'; end; end; PixelTransformTargetEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PIXEL_TRANSFORM_2D_EXT: PixelTransformTargetEXT read new PixelTransformTargetEXT($8330); public function ToString: string; override; begin if self.val = UInt32($8330) then Result := 'PIXEL_TRANSFORM_2D_EXT' else Result := $'PixelTransformTargetEXT[{self.val}]'; end; end; SamplePatternEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property GL_1PASS_EXT: SamplePatternEXT read new SamplePatternEXT($80A1); public static property GL_2PASS_0_EXT: SamplePatternEXT read new SamplePatternEXT($80A2); public static property GL_2PASS_1_EXT: SamplePatternEXT read new SamplePatternEXT($80A3); public static property GL_4PASS_0_EXT: SamplePatternEXT read new SamplePatternEXT($80A4); public static property GL_4PASS_1_EXT: SamplePatternEXT read new SamplePatternEXT($80A5); public static property GL_4PASS_2_EXT: SamplePatternEXT read new SamplePatternEXT($80A6); public static property GL_4PASS_3_EXT: SamplePatternEXT read new SamplePatternEXT($80A7); public function ToString: string; override; begin if self.val = UInt32($80A1) then Result := 'GL_1PASS_EXT' else if self.val = UInt32($80A2) then Result := 'GL_2PASS_0_EXT' else if self.val = UInt32($80A3) then Result := 'GL_2PASS_1_EXT' else if self.val = UInt32($80A4) then Result := 'GL_4PASS_0_EXT' else if self.val = UInt32($80A5) then Result := 'GL_4PASS_1_EXT' else if self.val = UInt32($80A6) then Result := 'GL_4PASS_2_EXT' else if self.val = UInt32($80A7) then Result := 'GL_4PASS_3_EXT' else Result := $'SamplePatternEXT[{self.val}]'; end; end; SeparableTargetEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SEPARABLE_2D: SeparableTargetEXT read new SeparableTargetEXT($8012); public static property SEPARABLE_2D_EXT: SeparableTargetEXT read new SeparableTargetEXT($8012); public function ToString: string; override; begin if self.val = UInt32($8012) then Result := 'SEPARABLE_2D' else if self.val = UInt32($8012) then Result := 'SEPARABLE_2D_EXT' else Result := $'SeparableTargetEXT[{self.val}]'; end; end; TangentPointerTypeEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BYTE: TangentPointerTypeEXT read new TangentPointerTypeEXT($1400); public static property SHORT: TangentPointerTypeEXT read new TangentPointerTypeEXT($1402); public static property INT: TangentPointerTypeEXT read new TangentPointerTypeEXT($1404); public static property FLOAT: TangentPointerTypeEXT read new TangentPointerTypeEXT($1406); public static property DOUBLE: TangentPointerTypeEXT read new TangentPointerTypeEXT($140A); public static property DOUBLE_EXT: TangentPointerTypeEXT read new TangentPointerTypeEXT($140A); public function ToString: string; override; begin if self.val = UInt32($1400) then Result := 'BYTE' else if self.val = UInt32($1402) then Result := 'SHORT' else if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else if self.val = UInt32($140A) then Result := 'DOUBLE_EXT' else Result := $'TangentPointerTypeEXT[{self.val}]'; end; end; TextureNormalModeEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PERTURB_EXT: TextureNormalModeEXT read new TextureNormalModeEXT($85AE); public function ToString: string; override; begin if self.val = UInt32($85AE) then Result := 'PERTURB_EXT' else Result := $'TextureNormalModeEXT[{self.val}]'; end; end; VariantCapEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property VARIANT_ARRAY_EXT: VariantCapEXT read new VariantCapEXT($87E8); public function ToString: string; override; begin if self.val = UInt32($87E8) then Result := 'VARIANT_ARRAY_EXT' else Result := $'VariantCapEXT[{self.val}]'; end; end; VertexShaderCoordOutEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property X_EXT: VertexShaderCoordOutEXT read new VertexShaderCoordOutEXT($87D5); public static property Y_EXT: VertexShaderCoordOutEXT read new VertexShaderCoordOutEXT($87D6); public static property Z_EXT: VertexShaderCoordOutEXT read new VertexShaderCoordOutEXT($87D7); public static property W_EXT: VertexShaderCoordOutEXT read new VertexShaderCoordOutEXT($87D8); public static property NEGATIVE_X_EXT: VertexShaderCoordOutEXT read new VertexShaderCoordOutEXT($87D9); public static property NEGATIVE_Y_EXT: VertexShaderCoordOutEXT read new VertexShaderCoordOutEXT($87DA); public static property NEGATIVE_Z_EXT: VertexShaderCoordOutEXT read new VertexShaderCoordOutEXT($87DB); public static property NEGATIVE_W_EXT: VertexShaderCoordOutEXT read new VertexShaderCoordOutEXT($87DC); public static property ZERO_EXT: VertexShaderCoordOutEXT read new VertexShaderCoordOutEXT($87DD); public static property ONE_EXT: VertexShaderCoordOutEXT read new VertexShaderCoordOutEXT($87DE); public static property NEGATIVE_ONE_EXT: VertexShaderCoordOutEXT read new VertexShaderCoordOutEXT($87DF); public function ToString: string; override; begin if self.val = UInt32($87D5) then Result := 'X_EXT' else if self.val = UInt32($87D6) then Result := 'Y_EXT' else if self.val = UInt32($87D7) then Result := 'Z_EXT' else if self.val = UInt32($87D8) then Result := 'W_EXT' else if self.val = UInt32($87D9) then Result := 'NEGATIVE_X_EXT' else if self.val = UInt32($87DA) then Result := 'NEGATIVE_Y_EXT' else if self.val = UInt32($87DB) then Result := 'NEGATIVE_Z_EXT' else if self.val = UInt32($87DC) then Result := 'NEGATIVE_W_EXT' else if self.val = UInt32($87DD) then Result := 'ZERO_EXT' else if self.val = UInt32($87DE) then Result := 'ONE_EXT' else if self.val = UInt32($87DF) then Result := 'NEGATIVE_ONE_EXT' else Result := $'VertexShaderCoordOutEXT[{self.val}]'; end; end; VertexShaderOpEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property OP_INDEX_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8782); public static property OP_NEGATE_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8783); public static property OP_DOT3_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8784); public static property OP_DOT4_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8785); public static property OP_MUL_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8786); public static property OP_ADD_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8787); public static property OP_MADD_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8788); public static property OP_FRAC_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8789); public static property OP_MAX_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($878A); public static property OP_MIN_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($878B); public static property OP_SET_GE_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($878C); public static property OP_SET_LT_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($878D); public static property OP_CLAMP_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($878E); public static property OP_FLOOR_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($878F); public static property OP_ROUND_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8790); public static property OP_EXP_BASE_2_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8791); public static property OP_LOG_BASE_2_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8792); public static property OP_POWER_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8793); public static property OP_RECIP_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8794); public static property OP_RECIP_SQRT_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8795); public static property OP_SUB_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8796); public static property OP_CROSS_PRODUCT_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8797); public static property OP_MULTIPLY_MATRIX_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8798); public static property OP_MOV_EXT: VertexShaderOpEXT read new VertexShaderOpEXT($8799); public function ToString: string; override; begin if self.val = UInt32($8782) then Result := 'OP_INDEX_EXT' else if self.val = UInt32($8783) then Result := 'OP_NEGATE_EXT' else if self.val = UInt32($8784) then Result := 'OP_DOT3_EXT' else if self.val = UInt32($8785) then Result := 'OP_DOT4_EXT' else if self.val = UInt32($8786) then Result := 'OP_MUL_EXT' else if self.val = UInt32($8787) then Result := 'OP_ADD_EXT' else if self.val = UInt32($8788) then Result := 'OP_MADD_EXT' else if self.val = UInt32($8789) then Result := 'OP_FRAC_EXT' else if self.val = UInt32($878A) then Result := 'OP_MAX_EXT' else if self.val = UInt32($878B) then Result := 'OP_MIN_EXT' else if self.val = UInt32($878C) then Result := 'OP_SET_GE_EXT' else if self.val = UInt32($878D) then Result := 'OP_SET_LT_EXT' else if self.val = UInt32($878E) then Result := 'OP_CLAMP_EXT' else if self.val = UInt32($878F) then Result := 'OP_FLOOR_EXT' else if self.val = UInt32($8790) then Result := 'OP_ROUND_EXT' else if self.val = UInt32($8791) then Result := 'OP_EXP_BASE_2_EXT' else if self.val = UInt32($8792) then Result := 'OP_LOG_BASE_2_EXT' else if self.val = UInt32($8793) then Result := 'OP_POWER_EXT' else if self.val = UInt32($8794) then Result := 'OP_RECIP_EXT' else if self.val = UInt32($8795) then Result := 'OP_RECIP_SQRT_EXT' else if self.val = UInt32($8796) then Result := 'OP_SUB_EXT' else if self.val = UInt32($8797) then Result := 'OP_CROSS_PRODUCT_EXT' else if self.val = UInt32($8798) then Result := 'OP_MULTIPLY_MATRIX_EXT' else if self.val = UInt32($8799) then Result := 'OP_MOV_EXT' else Result := $'VertexShaderOpEXT[{self.val}]'; end; end; VertexShaderParameterEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CURRENT_VERTEX_EXT: VertexShaderParameterEXT read new VertexShaderParameterEXT($87E2); public static property MVP_MATRIX_EXT: VertexShaderParameterEXT read new VertexShaderParameterEXT($87E3); public function ToString: string; override; begin if self.val = UInt32($87E2) then Result := 'CURRENT_VERTEX_EXT' else if self.val = UInt32($87E3) then Result := 'MVP_MATRIX_EXT' else Result := $'VertexShaderParameterEXT[{self.val}]'; end; end; VertexShaderStorageTypeEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property VARIANT_EXT: VertexShaderStorageTypeEXT read new VertexShaderStorageTypeEXT($87C1); public static property INVARIANT_EXT: VertexShaderStorageTypeEXT read new VertexShaderStorageTypeEXT($87C2); public static property LOCAL_CONSTANT_EXT: VertexShaderStorageTypeEXT read new VertexShaderStorageTypeEXT($87C3); public static property LOCAL_EXT: VertexShaderStorageTypeEXT read new VertexShaderStorageTypeEXT($87C4); public function ToString: string; override; begin if self.val = UInt32($87C1) then Result := 'VARIANT_EXT' else if self.val = UInt32($87C2) then Result := 'INVARIANT_EXT' else if self.val = UInt32($87C3) then Result := 'LOCAL_CONSTANT_EXT' else if self.val = UInt32($87C4) then Result := 'LOCAL_EXT' else Result := $'VertexShaderStorageTypeEXT[{self.val}]'; end; end; VertexShaderWriteMaskEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FALSE: VertexShaderWriteMaskEXT read new VertexShaderWriteMaskEXT($0000); public static property TRUE: VertexShaderWriteMaskEXT read new VertexShaderWriteMaskEXT($0001); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'FALSE' else if self.val = UInt32($0001) then Result := 'TRUE' else Result := $'VertexShaderWriteMaskEXT[{self.val}]'; end; end; VertexWeightPointerTypeEXT = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FLOAT: VertexWeightPointerTypeEXT read new VertexWeightPointerTypeEXT($1406); public function ToString: string; override; begin if self.val = UInt32($1406) then Result := 'FLOAT' else Result := $'VertexWeightPointerTypeEXT[{self.val}]'; end; end; {$endregion EXT} {$region AMD} TextureStorageMaskAMD = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE_STORAGE_SPARSE_BIT_AMD: TextureStorageMaskAMD read new TextureStorageMaskAMD($0001); public static function operator+(f1,f2: TextureStorageMaskAMD) := new TextureStorageMaskAMD(f1.val or f2.val); public static function operator or(f1,f2: TextureStorageMaskAMD) := f1+f2; public property HAS_FLAG_TEXTURE_STORAGE_SPARSE_BIT_AMD: boolean read self.val and $0001 <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0001) = UInt32($0001) then res += 'TEXTURE_STORAGE_SPARSE_BIT_AMD+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'TextureStorageMaskAMD[{self.val}]'; end; end; {$endregion AMD} {$region APPLE} ObjectTypeAPPLE = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property DRAW_PIXELS_APPLE: ObjectTypeAPPLE read new ObjectTypeAPPLE($8A0A); public static property FENCE_APPLE: ObjectTypeAPPLE read new ObjectTypeAPPLE($8A0B); public function ToString: string; override; begin if self.val = UInt32($8A0A) then Result := 'DRAW_PIXELS_APPLE' else if self.val = UInt32($8A0B) then Result := 'FENCE_APPLE' else Result := $'ObjectTypeAPPLE[{self.val}]'; end; end; VertexArrayPNameAPPLE = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property STORAGE_CLIENT_APPLE: VertexArrayPNameAPPLE read new VertexArrayPNameAPPLE($85B4); public static property STORAGE_CACHED_APPLE: VertexArrayPNameAPPLE read new VertexArrayPNameAPPLE($85BE); public static property STORAGE_SHARED_APPLE: VertexArrayPNameAPPLE read new VertexArrayPNameAPPLE($85BF); public function ToString: string; override; begin if self.val = UInt32($85B4) then Result := 'STORAGE_CLIENT_APPLE' else if self.val = UInt32($85BE) then Result := 'STORAGE_CACHED_APPLE' else if self.val = UInt32($85BF) then Result := 'STORAGE_SHARED_APPLE' else Result := $'VertexArrayPNameAPPLE[{self.val}]'; end; end; {$endregion APPLE} {$region ATI} ArrayObjectPNameATI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property OBJECT_BUFFER_SIZE_ATI: ArrayObjectPNameATI read new ArrayObjectPNameATI($8764); public static property OBJECT_BUFFER_USAGE_ATI: ArrayObjectPNameATI read new ArrayObjectPNameATI($8765); public function ToString: string; override; begin if self.val = UInt32($8764) then Result := 'OBJECT_BUFFER_SIZE_ATI' else if self.val = UInt32($8765) then Result := 'OBJECT_BUFFER_USAGE_ATI' else Result := $'ArrayObjectPNameATI[{self.val}]'; end; end; ArrayObjectUsageATI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property STATIC_ATI: ArrayObjectUsageATI read new ArrayObjectUsageATI($8760); public static property DYNAMIC_ATI: ArrayObjectUsageATI read new ArrayObjectUsageATI($8761); public function ToString: string; override; begin if self.val = UInt32($8760) then Result := 'STATIC_ATI' else if self.val = UInt32($8761) then Result := 'DYNAMIC_ATI' else Result := $'ArrayObjectUsageATI[{self.val}]'; end; end; ElementPointerTypeATI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property UNSIGNED_BYTE: ElementPointerTypeATI read new ElementPointerTypeATI($1401); public static property UNSIGNED_SHORT: ElementPointerTypeATI read new ElementPointerTypeATI($1403); public static property UNSIGNED_INT: ElementPointerTypeATI read new ElementPointerTypeATI($1405); public function ToString: string; override; begin if self.val = UInt32($1401) then Result := 'UNSIGNED_BYTE' else if self.val = UInt32($1403) then Result := 'UNSIGNED_SHORT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else Result := $'ElementPointerTypeATI[{self.val}]'; end; end; FragmentOpATI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property MOV_ATI: FragmentOpATI read new FragmentOpATI($8961); public static property ADD_ATI: FragmentOpATI read new FragmentOpATI($8963); public static property MUL_ATI: FragmentOpATI read new FragmentOpATI($8964); public static property SUB_ATI: FragmentOpATI read new FragmentOpATI($8965); public static property DOT3_ATI: FragmentOpATI read new FragmentOpATI($8966); public static property DOT4_ATI: FragmentOpATI read new FragmentOpATI($8967); public static property MAD_ATI: FragmentOpATI read new FragmentOpATI($8968); public static property LERP_ATI: FragmentOpATI read new FragmentOpATI($8969); public static property CND_ATI: FragmentOpATI read new FragmentOpATI($896A); public static property CND0_ATI: FragmentOpATI read new FragmentOpATI($896B); public static property DOT2_ADD_ATI: FragmentOpATI read new FragmentOpATI($896C); public function ToString: string; override; begin if self.val = UInt32($8961) then Result := 'MOV_ATI' else if self.val = UInt32($8963) then Result := 'ADD_ATI' else if self.val = UInt32($8964) then Result := 'MUL_ATI' else if self.val = UInt32($8965) then Result := 'SUB_ATI' else if self.val = UInt32($8966) then Result := 'DOT3_ATI' else if self.val = UInt32($8967) then Result := 'DOT4_ATI' else if self.val = UInt32($8968) then Result := 'MAD_ATI' else if self.val = UInt32($8969) then Result := 'LERP_ATI' else if self.val = UInt32($896A) then Result := 'CND_ATI' else if self.val = UInt32($896B) then Result := 'CND0_ATI' else if self.val = UInt32($896C) then Result := 'DOT2_ADD_ATI' else Result := $'FragmentOpATI[{self.val}]'; end; end; GetTexBumpParameterATI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BUMP_ROT_MATRIX_ATI: GetTexBumpParameterATI read new GetTexBumpParameterATI($8775); public static property BUMP_ROT_MATRIX_SIZE_ATI: GetTexBumpParameterATI read new GetTexBumpParameterATI($8776); public static property BUMP_NUM_TEX_UNITS_ATI: GetTexBumpParameterATI read new GetTexBumpParameterATI($8777); public static property BUMP_TEX_UNITS_ATI: GetTexBumpParameterATI read new GetTexBumpParameterATI($8778); public function ToString: string; override; begin if self.val = UInt32($8775) then Result := 'BUMP_ROT_MATRIX_ATI' else if self.val = UInt32($8776) then Result := 'BUMP_ROT_MATRIX_SIZE_ATI' else if self.val = UInt32($8777) then Result := 'BUMP_NUM_TEX_UNITS_ATI' else if self.val = UInt32($8778) then Result := 'BUMP_TEX_UNITS_ATI' else Result := $'GetTexBumpParameterATI[{self.val}]'; end; end; PNTrianglesPNameATI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PN_TRIANGLES_POINT_MODE_ATI: PNTrianglesPNameATI read new PNTrianglesPNameATI($87F2); public static property PN_TRIANGLES_NORMAL_MODE_ATI: PNTrianglesPNameATI read new PNTrianglesPNameATI($87F3); public static property PN_TRIANGLES_TESSELATION_LEVEL_ATI: PNTrianglesPNameATI read new PNTrianglesPNameATI($87F4); public function ToString: string; override; begin if self.val = UInt32($87F2) then Result := 'PN_TRIANGLES_POINT_MODE_ATI' else if self.val = UInt32($87F3) then Result := 'PN_TRIANGLES_NORMAL_MODE_ATI' else if self.val = UInt32($87F4) then Result := 'PN_TRIANGLES_TESSELATION_LEVEL_ATI' else Result := $'PNTrianglesPNameATI[{self.val}]'; end; end; PreserveModeATI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PRESERVE_ATI: PreserveModeATI read new PreserveModeATI($8762); public static property DISCARD_ATI: PreserveModeATI read new PreserveModeATI($8763); public function ToString: string; override; begin if self.val = UInt32($8762) then Result := 'PRESERVE_ATI' else if self.val = UInt32($8763) then Result := 'DISCARD_ATI' else Result := $'PreserveModeATI[{self.val}]'; end; end; SwizzleOpATI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SWIZZLE_STR_ATI: SwizzleOpATI read new SwizzleOpATI($8976); public static property SWIZZLE_STQ_ATI: SwizzleOpATI read new SwizzleOpATI($8977); public static property SWIZZLE_STR_DR_ATI: SwizzleOpATI read new SwizzleOpATI($8978); public static property SWIZZLE_STQ_DQ_ATI: SwizzleOpATI read new SwizzleOpATI($8979); public function ToString: string; override; begin if self.val = UInt32($8976) then Result := 'SWIZZLE_STR_ATI' else if self.val = UInt32($8977) then Result := 'SWIZZLE_STQ_ATI' else if self.val = UInt32($8978) then Result := 'SWIZZLE_STR_DR_ATI' else if self.val = UInt32($8979) then Result := 'SWIZZLE_STQ_DQ_ATI' else Result := $'SwizzleOpATI[{self.val}]'; end; end; TexBumpParameterATI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BUMP_ROT_MATRIX_ATI: TexBumpParameterATI read new TexBumpParameterATI($8775); public function ToString: string; override; begin if self.val = UInt32($8775) then Result := 'BUMP_ROT_MATRIX_ATI' else Result := $'TexBumpParameterATI[{self.val}]'; end; end; VertexStreamATI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property VERTEX_STREAM0_ATI: VertexStreamATI read new VertexStreamATI($876C); public static property VERTEX_STREAM1_ATI: VertexStreamATI read new VertexStreamATI($876D); public static property VERTEX_STREAM2_ATI: VertexStreamATI read new VertexStreamATI($876E); public static property VERTEX_STREAM3_ATI: VertexStreamATI read new VertexStreamATI($876F); public static property VERTEX_STREAM4_ATI: VertexStreamATI read new VertexStreamATI($8770); public static property VERTEX_STREAM5_ATI: VertexStreamATI read new VertexStreamATI($8771); public static property VERTEX_STREAM6_ATI: VertexStreamATI read new VertexStreamATI($8772); public static property VERTEX_STREAM7_ATI: VertexStreamATI read new VertexStreamATI($8773); public function ToString: string; override; begin if self.val = UInt32($876C) then Result := 'VERTEX_STREAM0_ATI' else if self.val = UInt32($876D) then Result := 'VERTEX_STREAM1_ATI' else if self.val = UInt32($876E) then Result := 'VERTEX_STREAM2_ATI' else if self.val = UInt32($876F) then Result := 'VERTEX_STREAM3_ATI' else if self.val = UInt32($8770) then Result := 'VERTEX_STREAM4_ATI' else if self.val = UInt32($8771) then Result := 'VERTEX_STREAM5_ATI' else if self.val = UInt32($8772) then Result := 'VERTEX_STREAM6_ATI' else if self.val = UInt32($8773) then Result := 'VERTEX_STREAM7_ATI' else Result := $'VertexStreamATI[{self.val}]'; end; end; {$endregion ATI} {$region HP} ImageTransformPNameHP = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property IMAGE_SCALE_X_HP: ImageTransformPNameHP read new ImageTransformPNameHP($8155); public static property IMAGE_SCALE_Y_HP: ImageTransformPNameHP read new ImageTransformPNameHP($8156); public static property IMAGE_TRANSLATE_X_HP: ImageTransformPNameHP read new ImageTransformPNameHP($8157); public static property IMAGE_TRANSLATE_Y_HP: ImageTransformPNameHP read new ImageTransformPNameHP($8158); public static property IMAGE_ROTATE_ANGLE_HP: ImageTransformPNameHP read new ImageTransformPNameHP($8159); public static property IMAGE_ROTATE_ORIGIN_X_HP: ImageTransformPNameHP read new ImageTransformPNameHP($815A); public static property IMAGE_ROTATE_ORIGIN_Y_HP: ImageTransformPNameHP read new ImageTransformPNameHP($815B); public static property IMAGE_MAG_FILTER_HP: ImageTransformPNameHP read new ImageTransformPNameHP($815C); public static property IMAGE_MIN_FILTER_HP: ImageTransformPNameHP read new ImageTransformPNameHP($815D); public static property IMAGE_CUBIC_WEIGHT_HP: ImageTransformPNameHP read new ImageTransformPNameHP($815E); public function ToString: string; override; begin if self.val = UInt32($8155) then Result := 'IMAGE_SCALE_X_HP' else if self.val = UInt32($8156) then Result := 'IMAGE_SCALE_Y_HP' else if self.val = UInt32($8157) then Result := 'IMAGE_TRANSLATE_X_HP' else if self.val = UInt32($8158) then Result := 'IMAGE_TRANSLATE_Y_HP' else if self.val = UInt32($8159) then Result := 'IMAGE_ROTATE_ANGLE_HP' else if self.val = UInt32($815A) then Result := 'IMAGE_ROTATE_ORIGIN_X_HP' else if self.val = UInt32($815B) then Result := 'IMAGE_ROTATE_ORIGIN_Y_HP' else if self.val = UInt32($815C) then Result := 'IMAGE_MAG_FILTER_HP' else if self.val = UInt32($815D) then Result := 'IMAGE_MIN_FILTER_HP' else if self.val = UInt32($815E) then Result := 'IMAGE_CUBIC_WEIGHT_HP' else Result := $'ImageTransformPNameHP[{self.val}]'; end; end; ImageTransformTargetHP = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property IMAGE_TRANSFORM_2D_HP: ImageTransformTargetHP read new ImageTransformTargetHP($8161); public function ToString: string; override; begin if self.val = UInt32($8161) then Result := 'IMAGE_TRANSFORM_2D_HP' else Result := $'ImageTransformTargetHP[{self.val}]'; end; end; {$endregion HP} {$region IBM} FogPointerTypeIBM = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FLOAT: FogPointerTypeIBM read new FogPointerTypeIBM($1406); public static property DOUBLE: FogPointerTypeIBM read new FogPointerTypeIBM($140A); public function ToString: string; override; begin if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else Result := $'FogPointerTypeIBM[{self.val}]'; end; end; SecondaryColorPointerTypeIBM = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SHORT: SecondaryColorPointerTypeIBM read new SecondaryColorPointerTypeIBM($1402); public static property INT: SecondaryColorPointerTypeIBM read new SecondaryColorPointerTypeIBM($1404); public static property FLOAT: SecondaryColorPointerTypeIBM read new SecondaryColorPointerTypeIBM($1406); public static property DOUBLE: SecondaryColorPointerTypeIBM read new SecondaryColorPointerTypeIBM($140A); public function ToString: string; override; begin if self.val = UInt32($1402) then Result := 'SHORT' else if self.val = UInt32($1404) then Result := 'INT' else if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else Result := $'SecondaryColorPointerTypeIBM[{self.val}]'; end; end; {$endregion IBM} {$region INTEL} PerfQueryCapFlagsINTEL = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PERFQUERY_SINGLE_CONTEXT_INTEL: PerfQueryCapFlagsINTEL read new PerfQueryCapFlagsINTEL($0000); public static property PERFQUERY_GLOBAL_CONTEXT_INTEL: PerfQueryCapFlagsINTEL read new PerfQueryCapFlagsINTEL($0001); public static function operator+(f1,f2: PerfQueryCapFlagsINTEL) := new PerfQueryCapFlagsINTEL(f1.val or f2.val); public static function operator or(f1,f2: PerfQueryCapFlagsINTEL) := f1+f2; public property ANY_FLAGS: boolean read self.val<>0; public property HAS_FLAG_PERFQUERY_GLOBAL_CONTEXT_INTEL: boolean read self.val and $0001 <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0000) = UInt32($0000) then res += 'PERFQUERY_SINGLE_CONTEXT_INTEL+'; if self.val and UInt32($0001) = UInt32($0001) then res += 'PERFQUERY_GLOBAL_CONTEXT_INTEL+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'PerfQueryCapFlagsINTEL[{self.val}]'; end; end; PerfQueryDataFlagsINTEL = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PERFQUERY_DONOT_FLUSH_INTEL: PerfQueryDataFlagsINTEL read new PerfQueryDataFlagsINTEL($83F9); public static property PERFQUERY_FLUSH_INTEL: PerfQueryDataFlagsINTEL read new PerfQueryDataFlagsINTEL($83FA); public static property PERFQUERY_WAIT_INTEL: PerfQueryDataFlagsINTEL read new PerfQueryDataFlagsINTEL($83FB); public function ToString: string; override; begin if self.val = UInt32($83F9) then Result := 'PERFQUERY_DONOT_FLUSH_INTEL' else if self.val = UInt32($83FA) then Result := 'PERFQUERY_FLUSH_INTEL' else if self.val = UInt32($83FB) then Result := 'PERFQUERY_WAIT_INTEL' else Result := $'PerfQueryDataFlagsINTEL[{self.val}]'; end; end; {$endregion INTEL} {$region NV} CombinerBiasNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NONE: CombinerBiasNV read new CombinerBiasNV($0000); public static property BIAS_BY_NEGATIVE_ONE_HALF_NV: CombinerBiasNV read new CombinerBiasNV($8541); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'NONE' else if self.val = UInt32($8541) then Result := 'BIAS_BY_NEGATIVE_ONE_HALF_NV' else Result := $'CombinerBiasNV[{self.val}]'; end; end; CombinerComponentUsageNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BLUE: CombinerComponentUsageNV read new CombinerComponentUsageNV($1905); public static property ALPHA: CombinerComponentUsageNV read new CombinerComponentUsageNV($1906); public static property RGB: CombinerComponentUsageNV read new CombinerComponentUsageNV($1907); public function ToString: string; override; begin if self.val = UInt32($1905) then Result := 'BLUE' else if self.val = UInt32($1906) then Result := 'ALPHA' else if self.val = UInt32($1907) then Result := 'RGB' else Result := $'CombinerComponentUsageNV[{self.val}]'; end; end; CombinerMappingNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property UNSIGNED_IDENTITY_NV: CombinerMappingNV read new CombinerMappingNV($8536); public static property UNSIGNED_INVERT_NV: CombinerMappingNV read new CombinerMappingNV($8537); public static property EXPAND_NORMAL_NV: CombinerMappingNV read new CombinerMappingNV($8538); public static property EXPAND_NEGATE_NV: CombinerMappingNV read new CombinerMappingNV($8539); public static property HALF_BIAS_NORMAL_NV: CombinerMappingNV read new CombinerMappingNV($853A); public static property HALF_BIAS_NEGATE_NV: CombinerMappingNV read new CombinerMappingNV($853B); public static property SIGNED_IDENTITY_NV: CombinerMappingNV read new CombinerMappingNV($853C); public static property SIGNED_NEGATE_NV: CombinerMappingNV read new CombinerMappingNV($853D); public function ToString: string; override; begin if self.val = UInt32($8536) then Result := 'UNSIGNED_IDENTITY_NV' else if self.val = UInt32($8537) then Result := 'UNSIGNED_INVERT_NV' else if self.val = UInt32($8538) then Result := 'EXPAND_NORMAL_NV' else if self.val = UInt32($8539) then Result := 'EXPAND_NEGATE_NV' else if self.val = UInt32($853A) then Result := 'HALF_BIAS_NORMAL_NV' else if self.val = UInt32($853B) then Result := 'HALF_BIAS_NEGATE_NV' else if self.val = UInt32($853C) then Result := 'SIGNED_IDENTITY_NV' else if self.val = UInt32($853D) then Result := 'SIGNED_NEGATE_NV' else Result := $'CombinerMappingNV[{self.val}]'; end; end; CombinerParameterNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property COMBINER_INPUT_NV: CombinerParameterNV read new CombinerParameterNV($8542); public static property COMBINER_MAPPING_NV: CombinerParameterNV read new CombinerParameterNV($8543); public static property COMBINER_COMPONENT_USAGE_NV: CombinerParameterNV read new CombinerParameterNV($8544); public function ToString: string; override; begin if self.val = UInt32($8542) then Result := 'COMBINER_INPUT_NV' else if self.val = UInt32($8543) then Result := 'COMBINER_MAPPING_NV' else if self.val = UInt32($8544) then Result := 'COMBINER_COMPONENT_USAGE_NV' else Result := $'CombinerParameterNV[{self.val}]'; end; end; CombinerPortionNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ALPHA: CombinerPortionNV read new CombinerPortionNV($1906); public static property RGB: CombinerPortionNV read new CombinerPortionNV($1907); public function ToString: string; override; begin if self.val = UInt32($1906) then Result := 'ALPHA' else if self.val = UInt32($1907) then Result := 'RGB' else Result := $'CombinerPortionNV[{self.val}]'; end; end; CombinerRegisterNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE0_ARB: CombinerRegisterNV read new CombinerRegisterNV($84C0); public static property TEXTURE1_ARB: CombinerRegisterNV read new CombinerRegisterNV($84C1); public static property PRIMARY_COLOR_NV: CombinerRegisterNV read new CombinerRegisterNV($852C); public static property SECONDARY_COLOR_NV: CombinerRegisterNV read new CombinerRegisterNV($852D); public static property SPARE0_NV: CombinerRegisterNV read new CombinerRegisterNV($852E); public static property SPARE1_NV: CombinerRegisterNV read new CombinerRegisterNV($852F); public static property DISCARD_NV: CombinerRegisterNV read new CombinerRegisterNV($8530); public function ToString: string; override; begin if self.val = UInt32($84C0) then Result := 'TEXTURE0_ARB' else if self.val = UInt32($84C1) then Result := 'TEXTURE1_ARB' else if self.val = UInt32($852C) then Result := 'PRIMARY_COLOR_NV' else if self.val = UInt32($852D) then Result := 'SECONDARY_COLOR_NV' else if self.val = UInt32($852E) then Result := 'SPARE0_NV' else if self.val = UInt32($852F) then Result := 'SPARE1_NV' else if self.val = UInt32($8530) then Result := 'DISCARD_NV' else Result := $'CombinerRegisterNV[{self.val}]'; end; end; CombinerScaleNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NONE: CombinerScaleNV read new CombinerScaleNV($0000); public static property SCALE_BY_TWO_NV: CombinerScaleNV read new CombinerScaleNV($853E); public static property SCALE_BY_FOUR_NV: CombinerScaleNV read new CombinerScaleNV($853F); public static property SCALE_BY_ONE_HALF_NV: CombinerScaleNV read new CombinerScaleNV($8540); public function ToString: string; override; begin if self.val = UInt32($0000) then Result := 'NONE' else if self.val = UInt32($853E) then Result := 'SCALE_BY_TWO_NV' else if self.val = UInt32($853F) then Result := 'SCALE_BY_FOUR_NV' else if self.val = UInt32($8540) then Result := 'SCALE_BY_ONE_HALF_NV' else Result := $'CombinerScaleNV[{self.val}]'; end; end; CombinerStageNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property COMBINER0_NV: CombinerStageNV read new CombinerStageNV($8550); public static property COMBINER1_NV: CombinerStageNV read new CombinerStageNV($8551); public static property COMBINER2_NV: CombinerStageNV read new CombinerStageNV($8552); public static property COMBINER3_NV: CombinerStageNV read new CombinerStageNV($8553); public static property COMBINER4_NV: CombinerStageNV read new CombinerStageNV($8554); public static property COMBINER5_NV: CombinerStageNV read new CombinerStageNV($8555); public static property COMBINER6_NV: CombinerStageNV read new CombinerStageNV($8556); public static property COMBINER7_NV: CombinerStageNV read new CombinerStageNV($8557); public function ToString: string; override; begin if self.val = UInt32($8550) then Result := 'COMBINER0_NV' else if self.val = UInt32($8551) then Result := 'COMBINER1_NV' else if self.val = UInt32($8552) then Result := 'COMBINER2_NV' else if self.val = UInt32($8553) then Result := 'COMBINER3_NV' else if self.val = UInt32($8554) then Result := 'COMBINER4_NV' else if self.val = UInt32($8555) then Result := 'COMBINER5_NV' else if self.val = UInt32($8556) then Result := 'COMBINER6_NV' else if self.val = UInt32($8557) then Result := 'COMBINER7_NV' else Result := $'CombinerStageNV[{self.val}]'; end; end; CombinerVariableNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property VARIABLE_A_NV: CombinerVariableNV read new CombinerVariableNV($8523); public static property VARIABLE_B_NV: CombinerVariableNV read new CombinerVariableNV($8524); public static property VARIABLE_C_NV: CombinerVariableNV read new CombinerVariableNV($8525); public static property VARIABLE_D_NV: CombinerVariableNV read new CombinerVariableNV($8526); public static property VARIABLE_E_NV: CombinerVariableNV read new CombinerVariableNV($8527); public static property VARIABLE_F_NV: CombinerVariableNV read new CombinerVariableNV($8528); public static property VARIABLE_G_NV: CombinerVariableNV read new CombinerVariableNV($8529); public function ToString: string; override; begin if self.val = UInt32($8523) then Result := 'VARIABLE_A_NV' else if self.val = UInt32($8524) then Result := 'VARIABLE_B_NV' else if self.val = UInt32($8525) then Result := 'VARIABLE_C_NV' else if self.val = UInt32($8526) then Result := 'VARIABLE_D_NV' else if self.val = UInt32($8527) then Result := 'VARIABLE_E_NV' else if self.val = UInt32($8528) then Result := 'VARIABLE_F_NV' else if self.val = UInt32($8529) then Result := 'VARIABLE_G_NV' else Result := $'CombinerVariableNV[{self.val}]'; end; end; EvalMapsModeNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FILL_NV: EvalMapsModeNV read new EvalMapsModeNV($1B02); public function ToString: string; override; begin if self.val = UInt32($1B02) then Result := 'FILL_NV' else Result := $'EvalMapsModeNV[{self.val}]'; end; end; EvalTargetNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property EVAL_2D_NV: EvalTargetNV read new EvalTargetNV($86C0); public static property EVAL_TRIANGULAR_2D_NV: EvalTargetNV read new EvalTargetNV($86C1); public function ToString: string; override; begin if self.val = UInt32($86C0) then Result := 'EVAL_2D_NV' else if self.val = UInt32($86C1) then Result := 'EVAL_TRIANGULAR_2D_NV' else Result := $'EvalTargetNV[{self.val}]'; end; end; FenceConditionNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ALL_COMPLETED_NV: FenceConditionNV read new FenceConditionNV($84F2); public function ToString: string; override; begin if self.val = UInt32($84F2) then Result := 'ALL_COMPLETED_NV' else Result := $'FenceConditionNV[{self.val}]'; end; end; FenceParameterNameNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FENCE_STATUS_NV: FenceParameterNameNV read new FenceParameterNameNV($84F3); public static property FENCE_CONDITION_NV: FenceParameterNameNV read new FenceParameterNameNV($84F4); public function ToString: string; override; begin if self.val = UInt32($84F3) then Result := 'FENCE_STATUS_NV' else if self.val = UInt32($84F4) then Result := 'FENCE_CONDITION_NV' else Result := $'FenceParameterNameNV[{self.val}]'; end; end; GetMultisamplePNameNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SAMPLE_LOCATION_ARB: GetMultisamplePNameNV read new GetMultisamplePNameNV($8E50); public static property SAMPLE_POSITION: GetMultisamplePNameNV read new GetMultisamplePNameNV($8E50); public static property PROGRAMMABLE_SAMPLE_LOCATION_ARB: GetMultisamplePNameNV read new GetMultisamplePNameNV($9341); public function ToString: string; override; begin if self.val = UInt32($8E50) then Result := 'SAMPLE_LOCATION_ARB' else if self.val = UInt32($8E50) then Result := 'SAMPLE_POSITION' else if self.val = UInt32($9341) then Result := 'PROGRAMMABLE_SAMPLE_LOCATION_ARB' else Result := $'GetMultisamplePNameNV[{self.val}]'; end; end; GPUDisplayDeviceFlagsNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ATTACHED_TO_DESKTOP: GPUDisplayDeviceFlagsNV read new GPUDisplayDeviceFlagsNV($0001); public static property PRIMARY_DEVICE: GPUDisplayDeviceFlagsNV read new GPUDisplayDeviceFlagsNV($0004); public static function operator+(f1,f2: GPUDisplayDeviceFlagsNV) := new GPUDisplayDeviceFlagsNV(f1.val or f2.val); public static function operator or(f1,f2: GPUDisplayDeviceFlagsNV) := f1+f2; public property HAS_FLAG_ATTACHED_TO_DESKTOP: boolean read self.val and $0001 <> 0; public property HAS_FLAG_PRIMARY_DEVICE: boolean read self.val and $0004 <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0001) = UInt32($0001) then res += 'ATTACHED_TO_DESKTOP+'; if self.val and UInt32($0004) = UInt32($0004) then res += 'PRIMARY_DEVICE+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'GPUDisplayDeviceFlagsNV[{self.val}]'; end; end; MapAttribParameterNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property MAP_ATTRIB_U_ORDER_NV: MapAttribParameterNV read new MapAttribParameterNV($86C3); public static property MAP_ATTRIB_V_ORDER_NV: MapAttribParameterNV read new MapAttribParameterNV($86C4); public function ToString: string; override; begin if self.val = UInt32($86C3) then Result := 'MAP_ATTRIB_U_ORDER_NV' else if self.val = UInt32($86C4) then Result := 'MAP_ATTRIB_V_ORDER_NV' else Result := $'MapAttribParameterNV[{self.val}]'; end; end; MapParameterNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property MAP_TESSELLATION_NV: MapParameterNV read new MapParameterNV($86C2); public function ToString: string; override; begin if self.val = UInt32($86C2) then Result := 'MAP_TESSELLATION_NV' else Result := $'MapParameterNV[{self.val}]'; end; end; MapTypeNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FLOAT: MapTypeNV read new MapTypeNV($1406); public static property DOUBLE: MapTypeNV read new MapTypeNV($140A); public function ToString: string; override; begin if self.val = UInt32($1406) then Result := 'FLOAT' else if self.val = UInt32($140A) then Result := 'DOUBLE' else Result := $'MapTypeNV[{self.val}]'; end; end; OcclusionQueryParameterNameNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PIXEL_COUNT_NV: OcclusionQueryParameterNameNV read new OcclusionQueryParameterNameNV($8866); public static property PIXEL_COUNT_AVAILABLE_NV: OcclusionQueryParameterNameNV read new OcclusionQueryParameterNameNV($8867); public function ToString: string; override; begin if self.val = UInt32($8866) then Result := 'PIXEL_COUNT_NV' else if self.val = UInt32($8867) then Result := 'PIXEL_COUNT_AVAILABLE_NV' else Result := $'OcclusionQueryParameterNameNV[{self.val}]'; end; end; PixelDataRangeTargetNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property WRITE_PIXEL_DATA_RANGE_NV: PixelDataRangeTargetNV read new PixelDataRangeTargetNV($8878); public static property READ_PIXEL_DATA_RANGE_NV: PixelDataRangeTargetNV read new PixelDataRangeTargetNV($8879); public function ToString: string; override; begin if self.val = UInt32($8878) then Result := 'WRITE_PIXEL_DATA_RANGE_NV' else if self.val = UInt32($8879) then Result := 'READ_PIXEL_DATA_RANGE_NV' else Result := $'PixelDataRangeTargetNV[{self.val}]'; end; end; VertexAttribEnumNV = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PROGRAM_PARAMETER_NV: VertexAttribEnumNV read new VertexAttribEnumNV($8644); public function ToString: string; override; begin if self.val = UInt32($8644) then Result := 'PROGRAM_PARAMETER_NV' else Result := $'VertexAttribEnumNV[{self.val}]'; end; end; {$endregion NV} {$region PGI} HintTargetPGI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property VERTEX_DATA_HINT_PGI: HintTargetPGI read new HintTargetPGI($1A22A); public static property VERTEX_CONSISTENT_HINT_PGI: HintTargetPGI read new HintTargetPGI($1A22B); public static property MATERIAL_SIDE_HINT_PGI: HintTargetPGI read new HintTargetPGI($1A22C); public static property MAX_VERTEX_HINT_PGI: HintTargetPGI read new HintTargetPGI($1A22D); public function ToString: string; override; begin if self.val = UInt32($1A22A) then Result := 'VERTEX_DATA_HINT_PGI' else if self.val = UInt32($1A22B) then Result := 'VERTEX_CONSISTENT_HINT_PGI' else if self.val = UInt32($1A22C) then Result := 'MATERIAL_SIDE_HINT_PGI' else if self.val = UInt32($1A22D) then Result := 'MAX_VERTEX_HINT_PGI' else Result := $'HintTargetPGI[{self.val}]'; end; end; {$endregion PGI} {$region SGI} ColorTableParameterPNameSGI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property COLOR_TABLE_SCALE: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80D6); public static property COLOR_TABLE_SCALE_SGI: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80D6); public static property COLOR_TABLE_BIAS: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80D7); public static property COLOR_TABLE_BIAS_SGI: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80D7); public static property COLOR_TABLE_FORMAT: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80D8); public static property COLOR_TABLE_FORMAT_SGI: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80D8); public static property COLOR_TABLE_WIDTH: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80D9); public static property COLOR_TABLE_WIDTH_SGI: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80D9); public static property COLOR_TABLE_RED_SIZE: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80DA); public static property COLOR_TABLE_RED_SIZE_SGI: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80DA); public static property COLOR_TABLE_GREEN_SIZE: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80DB); public static property COLOR_TABLE_GREEN_SIZE_SGI: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80DB); public static property COLOR_TABLE_BLUE_SIZE: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80DC); public static property COLOR_TABLE_BLUE_SIZE_SGI: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80DC); public static property COLOR_TABLE_ALPHA_SIZE: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80DD); public static property COLOR_TABLE_ALPHA_SIZE_SGI: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80DD); public static property COLOR_TABLE_LUMINANCE_SIZE: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80DE); public static property COLOR_TABLE_LUMINANCE_SIZE_SGI: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80DE); public static property COLOR_TABLE_INTENSITY_SIZE: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80DF); public static property COLOR_TABLE_INTENSITY_SIZE_SGI: ColorTableParameterPNameSGI read new ColorTableParameterPNameSGI($80DF); public function ToString: string; override; begin if self.val = UInt32($80D6) then Result := 'COLOR_TABLE_SCALE' else if self.val = UInt32($80D6) then Result := 'COLOR_TABLE_SCALE_SGI' else if self.val = UInt32($80D7) then Result := 'COLOR_TABLE_BIAS' else if self.val = UInt32($80D7) then Result := 'COLOR_TABLE_BIAS_SGI' else if self.val = UInt32($80D8) then Result := 'COLOR_TABLE_FORMAT' else if self.val = UInt32($80D8) then Result := 'COLOR_TABLE_FORMAT_SGI' else if self.val = UInt32($80D9) then Result := 'COLOR_TABLE_WIDTH' else if self.val = UInt32($80D9) then Result := 'COLOR_TABLE_WIDTH_SGI' else if self.val = UInt32($80DA) then Result := 'COLOR_TABLE_RED_SIZE' else if self.val = UInt32($80DA) then Result := 'COLOR_TABLE_RED_SIZE_SGI' else if self.val = UInt32($80DB) then Result := 'COLOR_TABLE_GREEN_SIZE' else if self.val = UInt32($80DB) then Result := 'COLOR_TABLE_GREEN_SIZE_SGI' else if self.val = UInt32($80DC) then Result := 'COLOR_TABLE_BLUE_SIZE' else if self.val = UInt32($80DC) then Result := 'COLOR_TABLE_BLUE_SIZE_SGI' else if self.val = UInt32($80DD) then Result := 'COLOR_TABLE_ALPHA_SIZE' else if self.val = UInt32($80DD) then Result := 'COLOR_TABLE_ALPHA_SIZE_SGI' else if self.val = UInt32($80DE) then Result := 'COLOR_TABLE_LUMINANCE_SIZE' else if self.val = UInt32($80DE) then Result := 'COLOR_TABLE_LUMINANCE_SIZE_SGI' else if self.val = UInt32($80DF) then Result := 'COLOR_TABLE_INTENSITY_SIZE' else if self.val = UInt32($80DF) then Result := 'COLOR_TABLE_INTENSITY_SIZE_SGI' else Result := $'ColorTableParameterPNameSGI[{self.val}]'; end; end; ColorTableTargetSGI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE_COLOR_TABLE_SGI: ColorTableTargetSGI read new ColorTableTargetSGI($80BC); public static property PROXY_TEXTURE_COLOR_TABLE_SGI: ColorTableTargetSGI read new ColorTableTargetSGI($80BD); public static property COLOR_TABLE: ColorTableTargetSGI read new ColorTableTargetSGI($80D0); public static property COLOR_TABLE_SGI: ColorTableTargetSGI read new ColorTableTargetSGI($80D0); public static property POST_CONVOLUTION_COLOR_TABLE: ColorTableTargetSGI read new ColorTableTargetSGI($80D1); public static property POST_CONVOLUTION_COLOR_TABLE_SGI: ColorTableTargetSGI read new ColorTableTargetSGI($80D1); public static property POST_COLOR_MATRIX_COLOR_TABLE: ColorTableTargetSGI read new ColorTableTargetSGI($80D2); public static property POST_COLOR_MATRIX_COLOR_TABLE_SGI: ColorTableTargetSGI read new ColorTableTargetSGI($80D2); public static property PROXY_COLOR_TABLE: ColorTableTargetSGI read new ColorTableTargetSGI($80D3); public static property PROXY_COLOR_TABLE_SGI: ColorTableTargetSGI read new ColorTableTargetSGI($80D3); public static property PROXY_POST_CONVOLUTION_COLOR_TABLE: ColorTableTargetSGI read new ColorTableTargetSGI($80D4); public static property PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI: ColorTableTargetSGI read new ColorTableTargetSGI($80D4); public static property PROXY_POST_COLOR_MATRIX_COLOR_TABLE: ColorTableTargetSGI read new ColorTableTargetSGI($80D5); public static property PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI: ColorTableTargetSGI read new ColorTableTargetSGI($80D5); public function ToString: string; override; begin if self.val = UInt32($80BC) then Result := 'TEXTURE_COLOR_TABLE_SGI' else if self.val = UInt32($80BD) then Result := 'PROXY_TEXTURE_COLOR_TABLE_SGI' else if self.val = UInt32($80D0) then Result := 'COLOR_TABLE' else if self.val = UInt32($80D0) then Result := 'COLOR_TABLE_SGI' else if self.val = UInt32($80D1) then Result := 'POST_CONVOLUTION_COLOR_TABLE' else if self.val = UInt32($80D1) then Result := 'POST_CONVOLUTION_COLOR_TABLE_SGI' else if self.val = UInt32($80D2) then Result := 'POST_COLOR_MATRIX_COLOR_TABLE' else if self.val = UInt32($80D2) then Result := 'POST_COLOR_MATRIX_COLOR_TABLE_SGI' else if self.val = UInt32($80D3) then Result := 'PROXY_COLOR_TABLE' else if self.val = UInt32($80D3) then Result := 'PROXY_COLOR_TABLE_SGI' else if self.val = UInt32($80D4) then Result := 'PROXY_POST_CONVOLUTION_COLOR_TABLE' else if self.val = UInt32($80D4) then Result := 'PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI' else if self.val = UInt32($80D5) then Result := 'PROXY_POST_COLOR_MATRIX_COLOR_TABLE' else if self.val = UInt32($80D5) then Result := 'PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI' else Result := $'ColorTableTargetSGI[{self.val}]'; end; end; GetColorTableParameterPNameSGI = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property COLOR_TABLE_SCALE: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80D6); public static property COLOR_TABLE_SCALE_SGI: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80D6); public static property COLOR_TABLE_BIAS: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80D7); public static property COLOR_TABLE_BIAS_SGI: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80D7); public static property COLOR_TABLE_FORMAT: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80D8); public static property COLOR_TABLE_FORMAT_SGI: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80D8); public static property COLOR_TABLE_WIDTH: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80D9); public static property COLOR_TABLE_WIDTH_SGI: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80D9); public static property COLOR_TABLE_RED_SIZE: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80DA); public static property COLOR_TABLE_RED_SIZE_SGI: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80DA); public static property COLOR_TABLE_GREEN_SIZE: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80DB); public static property COLOR_TABLE_GREEN_SIZE_SGI: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80DB); public static property COLOR_TABLE_BLUE_SIZE: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80DC); public static property COLOR_TABLE_BLUE_SIZE_SGI: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80DC); public static property COLOR_TABLE_ALPHA_SIZE: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80DD); public static property COLOR_TABLE_ALPHA_SIZE_SGI: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80DD); public static property COLOR_TABLE_LUMINANCE_SIZE: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80DE); public static property COLOR_TABLE_LUMINANCE_SIZE_SGI: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80DE); public static property COLOR_TABLE_INTENSITY_SIZE: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80DF); public static property COLOR_TABLE_INTENSITY_SIZE_SGI: GetColorTableParameterPNameSGI read new GetColorTableParameterPNameSGI($80DF); public function ToString: string; override; begin if self.val = UInt32($80D6) then Result := 'COLOR_TABLE_SCALE' else if self.val = UInt32($80D6) then Result := 'COLOR_TABLE_SCALE_SGI' else if self.val = UInt32($80D7) then Result := 'COLOR_TABLE_BIAS' else if self.val = UInt32($80D7) then Result := 'COLOR_TABLE_BIAS_SGI' else if self.val = UInt32($80D8) then Result := 'COLOR_TABLE_FORMAT' else if self.val = UInt32($80D8) then Result := 'COLOR_TABLE_FORMAT_SGI' else if self.val = UInt32($80D9) then Result := 'COLOR_TABLE_WIDTH' else if self.val = UInt32($80D9) then Result := 'COLOR_TABLE_WIDTH_SGI' else if self.val = UInt32($80DA) then Result := 'COLOR_TABLE_RED_SIZE' else if self.val = UInt32($80DA) then Result := 'COLOR_TABLE_RED_SIZE_SGI' else if self.val = UInt32($80DB) then Result := 'COLOR_TABLE_GREEN_SIZE' else if self.val = UInt32($80DB) then Result := 'COLOR_TABLE_GREEN_SIZE_SGI' else if self.val = UInt32($80DC) then Result := 'COLOR_TABLE_BLUE_SIZE' else if self.val = UInt32($80DC) then Result := 'COLOR_TABLE_BLUE_SIZE_SGI' else if self.val = UInt32($80DD) then Result := 'COLOR_TABLE_ALPHA_SIZE' else if self.val = UInt32($80DD) then Result := 'COLOR_TABLE_ALPHA_SIZE_SGI' else if self.val = UInt32($80DE) then Result := 'COLOR_TABLE_LUMINANCE_SIZE' else if self.val = UInt32($80DE) then Result := 'COLOR_TABLE_LUMINANCE_SIZE_SGI' else if self.val = UInt32($80DF) then Result := 'COLOR_TABLE_INTENSITY_SIZE' else if self.val = UInt32($80DF) then Result := 'COLOR_TABLE_INTENSITY_SIZE_SGI' else Result := $'GetColorTableParameterPNameSGI[{self.val}]'; end; end; {$endregion SGI} {$region SGIS} PixelTexGenParameterNameSGIS = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PIXEL_FRAGMENT_RGB_SOURCE_SGIS: PixelTexGenParameterNameSGIS read new PixelTexGenParameterNameSGIS($8354); public static property PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS: PixelTexGenParameterNameSGIS read new PixelTexGenParameterNameSGIS($8355); public function ToString: string; override; begin if self.val = UInt32($8354) then Result := 'PIXEL_FRAGMENT_RGB_SOURCE_SGIS' else if self.val = UInt32($8355) then Result := 'PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS' else Result := $'PixelTexGenParameterNameSGIS[{self.val}]'; end; end; SamplePatternSGIS = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property GL_1PASS_EXT: SamplePatternSGIS read new SamplePatternSGIS($80A1); public static property GL_1PASS_SGIS: SamplePatternSGIS read new SamplePatternSGIS($80A1); public static property GL_2PASS_0_EXT: SamplePatternSGIS read new SamplePatternSGIS($80A2); public static property GL_2PASS_0_SGIS: SamplePatternSGIS read new SamplePatternSGIS($80A2); public static property GL_2PASS_1_EXT: SamplePatternSGIS read new SamplePatternSGIS($80A3); public static property GL_2PASS_1_SGIS: SamplePatternSGIS read new SamplePatternSGIS($80A3); public static property GL_4PASS_0_EXT: SamplePatternSGIS read new SamplePatternSGIS($80A4); public static property GL_4PASS_0_SGIS: SamplePatternSGIS read new SamplePatternSGIS($80A4); public static property GL_4PASS_1_EXT: SamplePatternSGIS read new SamplePatternSGIS($80A5); public static property GL_4PASS_1_SGIS: SamplePatternSGIS read new SamplePatternSGIS($80A5); public static property GL_4PASS_2_EXT: SamplePatternSGIS read new SamplePatternSGIS($80A6); public static property GL_4PASS_2_SGIS: SamplePatternSGIS read new SamplePatternSGIS($80A6); public static property GL_4PASS_3_EXT: SamplePatternSGIS read new SamplePatternSGIS($80A7); public static property GL_4PASS_3_SGIS: SamplePatternSGIS read new SamplePatternSGIS($80A7); public function ToString: string; override; begin if self.val = UInt32($80A1) then Result := 'GL_1PASS_EXT' else if self.val = UInt32($80A1) then Result := 'GL_1PASS_SGIS' else if self.val = UInt32($80A2) then Result := 'GL_2PASS_0_EXT' else if self.val = UInt32($80A2) then Result := 'GL_2PASS_0_SGIS' else if self.val = UInt32($80A3) then Result := 'GL_2PASS_1_EXT' else if self.val = UInt32($80A3) then Result := 'GL_2PASS_1_SGIS' else if self.val = UInt32($80A4) then Result := 'GL_4PASS_0_EXT' else if self.val = UInt32($80A4) then Result := 'GL_4PASS_0_SGIS' else if self.val = UInt32($80A5) then Result := 'GL_4PASS_1_EXT' else if self.val = UInt32($80A5) then Result := 'GL_4PASS_1_SGIS' else if self.val = UInt32($80A6) then Result := 'GL_4PASS_2_EXT' else if self.val = UInt32($80A6) then Result := 'GL_4PASS_2_SGIS' else if self.val = UInt32($80A7) then Result := 'GL_4PASS_3_EXT' else if self.val = UInt32($80A7) then Result := 'GL_4PASS_3_SGIS' else Result := $'SamplePatternSGIS[{self.val}]'; end; end; TextureFilterSGIS = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FILTER4_SGIS: TextureFilterSGIS read new TextureFilterSGIS($8146); public function ToString: string; override; begin if self.val = UInt32($8146) then Result := 'FILTER4_SGIS' else Result := $'TextureFilterSGIS[{self.val}]'; end; end; {$endregion SGIS} {$region SGIX} FfdMaskSGIX = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE_DEFORMATION_BIT_SGIX: FfdMaskSGIX read new FfdMaskSGIX($0001); public static property GEOMETRY_DEFORMATION_BIT_SGIX: FfdMaskSGIX read new FfdMaskSGIX($0002); public static function operator+(f1,f2: FfdMaskSGIX) := new FfdMaskSGIX(f1.val or f2.val); public static function operator or(f1,f2: FfdMaskSGIX) := f1+f2; public property HAS_FLAG_TEXTURE_DEFORMATION_BIT_SGIX: boolean read self.val and $0001 <> 0; public property HAS_FLAG_GEOMETRY_DEFORMATION_BIT_SGIX: boolean read self.val and $0002 <> 0; public function ToString: string; override; begin var res := new StringBuilder; if self.val and UInt32($0001) = UInt32($0001) then res += 'TEXTURE_DEFORMATION_BIT_SGIX+'; if self.val and UInt32($0002) = UInt32($0002) then res += 'GEOMETRY_DEFORMATION_BIT_SGIX+'; if res.Length<>0 then begin res.Length -= 1; Result := res.ToString; end else Result := $'FfdMaskSGIX[{self.val}]'; end; end; FfdTargetSGIX = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property GEOMETRY_DEFORMATION_SGIX: FfdTargetSGIX read new FfdTargetSGIX($8194); public static property TEXTURE_DEFORMATION_SGIX: FfdTargetSGIX read new FfdTargetSGIX($8195); public function ToString: string; override; begin if self.val = UInt32($8194) then Result := 'GEOMETRY_DEFORMATION_SGIX' else if self.val = UInt32($8195) then Result := 'TEXTURE_DEFORMATION_SGIX' else Result := $'FfdTargetSGIX[{self.val}]'; end; end; FragmentLightModelParameterSGIX = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX: FragmentLightModelParameterSGIX read new FragmentLightModelParameterSGIX($8408); public static property FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX: FragmentLightModelParameterSGIX read new FragmentLightModelParameterSGIX($8409); public static property FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX: FragmentLightModelParameterSGIX read new FragmentLightModelParameterSGIX($840A); public static property FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX: FragmentLightModelParameterSGIX read new FragmentLightModelParameterSGIX($840B); public function ToString: string; override; begin if self.val = UInt32($8408) then Result := 'FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX' else if self.val = UInt32($8409) then Result := 'FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX' else if self.val = UInt32($840A) then Result := 'FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX' else if self.val = UInt32($840B) then Result := 'FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX' else Result := $'FragmentLightModelParameterSGIX[{self.val}]'; end; end; FragmentLightNameSGIX = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FRAGMENT_LIGHT0_SGIX: FragmentLightNameSGIX read new FragmentLightNameSGIX($840C); public static property FRAGMENT_LIGHT1_SGIX: FragmentLightNameSGIX read new FragmentLightNameSGIX($840D); public static property FRAGMENT_LIGHT2_SGIX: FragmentLightNameSGIX read new FragmentLightNameSGIX($840E); public static property FRAGMENT_LIGHT3_SGIX: FragmentLightNameSGIX read new FragmentLightNameSGIX($840F); public static property FRAGMENT_LIGHT4_SGIX: FragmentLightNameSGIX read new FragmentLightNameSGIX($8410); public static property FRAGMENT_LIGHT5_SGIX: FragmentLightNameSGIX read new FragmentLightNameSGIX($8411); public static property FRAGMENT_LIGHT6_SGIX: FragmentLightNameSGIX read new FragmentLightNameSGIX($8412); public static property FRAGMENT_LIGHT7_SGIX: FragmentLightNameSGIX read new FragmentLightNameSGIX($8413); public function ToString: string; override; begin if self.val = UInt32($840C) then Result := 'FRAGMENT_LIGHT0_SGIX' else if self.val = UInt32($840D) then Result := 'FRAGMENT_LIGHT1_SGIX' else if self.val = UInt32($840E) then Result := 'FRAGMENT_LIGHT2_SGIX' else if self.val = UInt32($840F) then Result := 'FRAGMENT_LIGHT3_SGIX' else if self.val = UInt32($8410) then Result := 'FRAGMENT_LIGHT4_SGIX' else if self.val = UInt32($8411) then Result := 'FRAGMENT_LIGHT5_SGIX' else if self.val = UInt32($8412) then Result := 'FRAGMENT_LIGHT6_SGIX' else if self.val = UInt32($8413) then Result := 'FRAGMENT_LIGHT7_SGIX' else Result := $'FragmentLightNameSGIX[{self.val}]'; end; end; FragmentLightParameterSGIX = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property AMBIENT: FragmentLightParameterSGIX read new FragmentLightParameterSGIX($1200); public static property DIFFUSE: FragmentLightParameterSGIX read new FragmentLightParameterSGIX($1201); public static property SPECULAR: FragmentLightParameterSGIX read new FragmentLightParameterSGIX($1202); public static property POSITION: FragmentLightParameterSGIX read new FragmentLightParameterSGIX($1203); public static property SPOT_DIRECTION: FragmentLightParameterSGIX read new FragmentLightParameterSGIX($1204); public static property SPOT_EXPONENT: FragmentLightParameterSGIX read new FragmentLightParameterSGIX($1205); public static property SPOT_CUTOFF: FragmentLightParameterSGIX read new FragmentLightParameterSGIX($1206); public static property CONSTANT_ATTENUATION: FragmentLightParameterSGIX read new FragmentLightParameterSGIX($1207); public static property LINEAR_ATTENUATION: FragmentLightParameterSGIX read new FragmentLightParameterSGIX($1208); public static property QUADRATIC_ATTENUATION: FragmentLightParameterSGIX read new FragmentLightParameterSGIX($1209); public function ToString: string; override; begin if self.val = UInt32($1200) then Result := 'AMBIENT' else if self.val = UInt32($1201) then Result := 'DIFFUSE' else if self.val = UInt32($1202) then Result := 'SPECULAR' else if self.val = UInt32($1203) then Result := 'POSITION' else if self.val = UInt32($1204) then Result := 'SPOT_DIRECTION' else if self.val = UInt32($1205) then Result := 'SPOT_EXPONENT' else if self.val = UInt32($1206) then Result := 'SPOT_CUTOFF' else if self.val = UInt32($1207) then Result := 'CONSTANT_ATTENUATION' else if self.val = UInt32($1208) then Result := 'LINEAR_ATTENUATION' else if self.val = UInt32($1209) then Result := 'QUADRATIC_ATTENUATION' else Result := $'FragmentLightParameterSGIX[{self.val}]'; end; end; LightEnvParameterSGIX = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property LIGHT_ENV_MODE_SGIX: LightEnvParameterSGIX read new LightEnvParameterSGIX($8407); public function ToString: string; override; begin if self.val = UInt32($8407) then Result := 'LIGHT_ENV_MODE_SGIX' else Result := $'LightEnvParameterSGIX[{self.val}]'; end; end; PixelTexGenModeSGIX = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PIXEL_TEX_GEN_Q_CEILING_SGIX: PixelTexGenModeSGIX read new PixelTexGenModeSGIX($8184); public static property PIXEL_TEX_GEN_Q_ROUND_SGIX: PixelTexGenModeSGIX read new PixelTexGenModeSGIX($8185); public static property PIXEL_TEX_GEN_Q_FLOOR_SGIX: PixelTexGenModeSGIX read new PixelTexGenModeSGIX($8186); public static property PIXEL_TEX_GEN_ALPHA_LS_SGIX: PixelTexGenModeSGIX read new PixelTexGenModeSGIX($8189); public static property PIXEL_TEX_GEN_ALPHA_MS_SGIX: PixelTexGenModeSGIX read new PixelTexGenModeSGIX($818A); public function ToString: string; override; begin if self.val = UInt32($8184) then Result := 'PIXEL_TEX_GEN_Q_CEILING_SGIX' else if self.val = UInt32($8185) then Result := 'PIXEL_TEX_GEN_Q_ROUND_SGIX' else if self.val = UInt32($8186) then Result := 'PIXEL_TEX_GEN_Q_FLOOR_SGIX' else if self.val = UInt32($8189) then Result := 'PIXEL_TEX_GEN_ALPHA_LS_SGIX' else if self.val = UInt32($818A) then Result := 'PIXEL_TEX_GEN_ALPHA_MS_SGIX' else Result := $'PixelTexGenModeSGIX[{self.val}]'; end; end; SpriteParameterNameSGIX = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SPRITE_MODE_SGIX: SpriteParameterNameSGIX read new SpriteParameterNameSGIX($8149); public function ToString: string; override; begin if self.val = UInt32($8149) then Result := 'SPRITE_MODE_SGIX' else Result := $'SpriteParameterNameSGIX[{self.val}]'; end; end; {$endregion SGIX} {$region SUN} ReplacementCodeTypeSUN = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property UNSIGNED_BYTE: ReplacementCodeTypeSUN read new ReplacementCodeTypeSUN($1401); public static property UNSIGNED_SHORT: ReplacementCodeTypeSUN read new ReplacementCodeTypeSUN($1403); public static property UNSIGNED_INT: ReplacementCodeTypeSUN read new ReplacementCodeTypeSUN($1405); public function ToString: string; override; begin if self.val = UInt32($1401) then Result := 'UNSIGNED_BYTE' else if self.val = UInt32($1403) then Result := 'UNSIGNED_SHORT' else if self.val = UInt32($1405) then Result := 'UNSIGNED_INT' else Result := $'ReplacementCodeTypeSUN[{self.val}]'; end; end; {$endregion SUN} {$endregion Перечисления} {$region Делегаты} [UnmanagedFunctionPointer(CallingConvention.StdCall)] GL_DEBUG_PROC = procedure(source: DebugSource; &type: DebugType; id: UInt32; severity: DebugSeverity; length: Int32; message_text: IntPtr; userParam: pointer); [UnmanagedFunctionPointer(CallingConvention.StdCall)] GL_VULKAN_PROC_NV = procedure; {$endregion Делегаты} {$region Записи} {$region Vec} {$region Vec1} Vec1b = record public val0: SByte; public constructor(val0: SByte); begin self.val0 := val0; end; public static function operator-(v: Vec1b): Vec1b := new Vec1b(-v.val0); public static function operator+(v: Vec1b): Vec1b := v; public static function operator*(v: Vec1b; k: SByte): Vec1b := new Vec1b(v.val0*k); public static function operator div(v: Vec1b; k: SByte): Vec1b := new Vec1b(v.val0 div k); public static function operator*(v1, v2: Vec1b): SByte := ( v1.val0*v2.val0 ); public static function operator+(v1, v2: Vec1b): Vec1b := new Vec1b(v1.val0+v2.val0); public static function operator-(v1, v2: Vec1b): Vec1b := new Vec1b(v1.val0-v2.val0); public function SqrLength := val0*val0; public static function Random(min, max: SByte): Vec1b; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec1b; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0); end; public static function Readln(prompt: string := nil): Vec1b; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec1b; begin Writeln(self.ToString); Result := self; end; end; Vec1ub = record public val0: Byte; public constructor(val0: Byte); begin self.val0 := val0; end; public static function operator+(v: Vec1ub): Vec1ub := v; public static function operator*(v: Vec1ub; k: Byte): Vec1ub := new Vec1ub(v.val0*k); public static function operator div(v: Vec1ub; k: Byte): Vec1ub := new Vec1ub(v.val0 div k); public static function operator*(v1, v2: Vec1ub): Byte := ( v1.val0*v2.val0 ); public static function operator+(v1, v2: Vec1ub): Vec1ub := new Vec1ub(v1.val0+v2.val0); public static function operator-(v1, v2: Vec1ub): Vec1ub := new Vec1ub(v1.val0-v2.val0); public static function operator implicit(v: Vec1b): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1ub): Vec1b := new Vec1b(v.val0); public function SqrLength := val0*val0; public static function Random(min, max: Byte): Vec1ub; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec1ub; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0); end; public static function Readln(prompt: string := nil): Vec1ub; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec1ub; begin Writeln(self.ToString); Result := self; end; end; Vec1s = record public val0: Int16; public constructor(val0: Int16); begin self.val0 := val0; end; public static function operator-(v: Vec1s): Vec1s := new Vec1s(-v.val0); public static function operator+(v: Vec1s): Vec1s := v; public static function operator*(v: Vec1s; k: Int16): Vec1s := new Vec1s(v.val0*k); public static function operator div(v: Vec1s; k: Int16): Vec1s := new Vec1s(v.val0 div k); public static function operator*(v1, v2: Vec1s): Int16 := ( v1.val0*v2.val0 ); public static function operator+(v1, v2: Vec1s): Vec1s := new Vec1s(v1.val0+v2.val0); public static function operator-(v1, v2: Vec1s): Vec1s := new Vec1s(v1.val0-v2.val0); public static function operator implicit(v: Vec1b): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1s): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1s): Vec1ub := new Vec1ub(v.val0); public function SqrLength := val0*val0; public static function Random(min, max: Int16): Vec1s; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec1s; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0); end; public static function Readln(prompt: string := nil): Vec1s; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec1s; begin Writeln(self.ToString); Result := self; end; end; Vec1us = record public val0: UInt16; public constructor(val0: UInt16); begin self.val0 := val0; end; public static function operator+(v: Vec1us): Vec1us := v; public static function operator*(v: Vec1us; k: UInt16): Vec1us := new Vec1us(v.val0*k); public static function operator div(v: Vec1us; k: UInt16): Vec1us := new Vec1us(v.val0 div k); public static function operator*(v1, v2: Vec1us): UInt16 := ( v1.val0*v2.val0 ); public static function operator+(v1, v2: Vec1us): Vec1us := new Vec1us(v1.val0+v2.val0); public static function operator-(v1, v2: Vec1us): Vec1us := new Vec1us(v1.val0-v2.val0); public static function operator implicit(v: Vec1b): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1us): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1us): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1us): Vec1s := new Vec1s(v.val0); public function SqrLength := val0*val0; public static function Random(min, max: UInt16): Vec1us; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec1us; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0); end; public static function Readln(prompt: string := nil): Vec1us; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec1us; begin Writeln(self.ToString); Result := self; end; end; Vec1i = record public val0: Int32; public constructor(val0: Int32); begin self.val0 := val0; end; public static function operator-(v: Vec1i): Vec1i := new Vec1i(-v.val0); public static function operator+(v: Vec1i): Vec1i := v; public static function operator*(v: Vec1i; k: Int32): Vec1i := new Vec1i(v.val0*k); public static function operator div(v: Vec1i; k: Int32): Vec1i := new Vec1i(v.val0 div k); public static function operator*(v1, v2: Vec1i): Int32 := ( v1.val0*v2.val0 ); public static function operator+(v1, v2: Vec1i): Vec1i := new Vec1i(v1.val0+v2.val0); public static function operator-(v1, v2: Vec1i): Vec1i := new Vec1i(v1.val0-v2.val0); public static function operator implicit(v: Vec1b): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1i): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1i): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1i): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1i): Vec1us := new Vec1us(v.val0); public function SqrLength := val0*val0; public static function Random(min, max: Int32): Vec1i; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec1i; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0); end; public static function Readln(prompt: string := nil): Vec1i; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec1i; begin Writeln(self.ToString); Result := self; end; end; Vec1ui = record public val0: UInt32; public constructor(val0: UInt32); begin self.val0 := val0; end; public static function operator+(v: Vec1ui): Vec1ui := v; public static function operator*(v: Vec1ui; k: UInt32): Vec1ui := new Vec1ui(v.val0*k); public static function operator div(v: Vec1ui; k: UInt32): Vec1ui := new Vec1ui(v.val0 div k); public static function operator*(v1, v2: Vec1ui): UInt32 := ( v1.val0*v2.val0 ); public static function operator+(v1, v2: Vec1ui): Vec1ui := new Vec1ui(v1.val0+v2.val0); public static function operator-(v1, v2: Vec1ui): Vec1ui := new Vec1ui(v1.val0-v2.val0); public static function operator implicit(v: Vec1b): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1ui): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1ui): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1ui): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1ui): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1ui): Vec1i := new Vec1i(v.val0); public function SqrLength := val0*val0; public static function Random(min, max: UInt32): Vec1ui; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec1ui; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0); end; public static function Readln(prompt: string := nil): Vec1ui; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec1ui; begin Writeln(self.ToString); Result := self; end; end; Vec1i64 = record public val0: Int64; public constructor(val0: Int64); begin self.val0 := val0; end; public static function operator-(v: Vec1i64): Vec1i64 := new Vec1i64(-v.val0); public static function operator+(v: Vec1i64): Vec1i64 := v; public static function operator*(v: Vec1i64; k: Int64): Vec1i64 := new Vec1i64(v.val0*k); public static function operator div(v: Vec1i64; k: Int64): Vec1i64 := new Vec1i64(v.val0 div k); public static function operator*(v1, v2: Vec1i64): Int64 := ( v1.val0*v2.val0 ); public static function operator+(v1, v2: Vec1i64): Vec1i64 := new Vec1i64(v1.val0+v2.val0); public static function operator-(v1, v2: Vec1i64): Vec1i64 := new Vec1i64(v1.val0-v2.val0); public static function operator implicit(v: Vec1b): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1i64): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1i64): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1i64): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1i64): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1i64): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1i64): Vec1ui := new Vec1ui(v.val0); public function SqrLength := val0*val0; public static function Random(min, max: Int64): Vec1i64; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec1i64; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0); end; public static function Readln(prompt: string := nil): Vec1i64; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec1i64; begin Writeln(self.ToString); Result := self; end; end; Vec1ui64 = record public val0: UInt64; public constructor(val0: UInt64); begin self.val0 := val0; end; public static function operator+(v: Vec1ui64): Vec1ui64 := v; public static function operator*(v: Vec1ui64; k: UInt64): Vec1ui64 := new Vec1ui64(v.val0*k); public static function operator div(v: Vec1ui64; k: UInt64): Vec1ui64 := new Vec1ui64(v.val0 div k); public static function operator*(v1, v2: Vec1ui64): UInt64 := ( v1.val0*v2.val0 ); public static function operator+(v1, v2: Vec1ui64): Vec1ui64 := new Vec1ui64(v1.val0+v2.val0); public static function operator-(v1, v2: Vec1ui64): Vec1ui64 := new Vec1ui64(v1.val0-v2.val0); public static function operator implicit(v: Vec1b): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1ui64): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1ui64): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1ui64): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1ui64): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1ui64): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1ui64): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1ui64): Vec1i64 := new Vec1i64(v.val0); public function SqrLength := val0*val0; public static function Random(min, max: UInt64): Vec1ui64; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec1ui64; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0); end; public static function Readln(prompt: string := nil): Vec1ui64; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec1ui64; begin Writeln(self.ToString); Result := self; end; end; Vec1f = record public val0: single; public constructor(val0: single); begin self.val0 := val0; end; public static function operator-(v: Vec1f): Vec1f := new Vec1f(-v.val0); public static function operator+(v: Vec1f): Vec1f := v; public static function operator*(v: Vec1f; k: single): Vec1f := new Vec1f(v.val0*k); public static function operator/(v: Vec1f; k: single): Vec1f := new Vec1f(v.val0/k); public static function operator*(v1, v2: Vec1f): single := ( v1.val0*v2.val0 ); public static function operator+(v1, v2: Vec1f): Vec1f := new Vec1f(v1.val0+v2.val0); public static function operator-(v1, v2: Vec1f): Vec1f := new Vec1f(v1.val0-v2.val0); public static function operator implicit(v: Vec1b): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1f): Vec1b := new Vec1b(Convert.ToSByte(v.val0)); public static function operator implicit(v: Vec1ub): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1f): Vec1ub := new Vec1ub(Convert.ToByte(v.val0)); public static function operator implicit(v: Vec1s): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1f): Vec1s := new Vec1s(Convert.ToInt16(v.val0)); public static function operator implicit(v: Vec1us): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1f): Vec1us := new Vec1us(Convert.ToUInt16(v.val0)); public static function operator implicit(v: Vec1i): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1f): Vec1i := new Vec1i(Convert.ToInt32(v.val0)); public static function operator implicit(v: Vec1ui): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1f): Vec1ui := new Vec1ui(Convert.ToUInt32(v.val0)); public static function operator implicit(v: Vec1i64): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1f): Vec1i64 := new Vec1i64(Convert.ToInt64(v.val0)); public static function operator implicit(v: Vec1ui64): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1f): Vec1ui64 := new Vec1ui64(Convert.ToUInt64(v.val0)); public function SqrLength := val0*val0; public function Normalized := self / single(Sqrt(self.SqrLength)); public static function Random(min, max: single): Vec1f; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec1f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0); end; public static function Readln(prompt: string := nil): Vec1f; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec1f; begin Writeln(self.ToString); Result := self; end; end; UseVec1fPtrCallbackP = procedure(var ptr: Vec1f); UseVec1fPtrCallbackF<T> = function(var ptr: Vec1f): T; Vec1d = record public val0: double; public constructor(val0: double); begin self.val0 := val0; end; public static function operator-(v: Vec1d): Vec1d := new Vec1d(-v.val0); public static function operator+(v: Vec1d): Vec1d := v; public static function operator*(v: Vec1d; k: double): Vec1d := new Vec1d(v.val0*k); public static function operator/(v: Vec1d; k: double): Vec1d := new Vec1d(v.val0/k); public static function operator*(v1, v2: Vec1d): double := ( v1.val0*v2.val0 ); public static function operator+(v1, v2: Vec1d): Vec1d := new Vec1d(v1.val0+v2.val0); public static function operator-(v1, v2: Vec1d): Vec1d := new Vec1d(v1.val0-v2.val0); public static function operator implicit(v: Vec1b): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec1d): Vec1b := new Vec1b(Convert.ToSByte(v.val0)); public static function operator implicit(v: Vec1ub): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec1d): Vec1ub := new Vec1ub(Convert.ToByte(v.val0)); public static function operator implicit(v: Vec1s): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec1d): Vec1s := new Vec1s(Convert.ToInt16(v.val0)); public static function operator implicit(v: Vec1us): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec1d): Vec1us := new Vec1us(Convert.ToUInt16(v.val0)); public static function operator implicit(v: Vec1i): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec1d): Vec1i := new Vec1i(Convert.ToInt32(v.val0)); public static function operator implicit(v: Vec1ui): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec1d): Vec1ui := new Vec1ui(Convert.ToUInt32(v.val0)); public static function operator implicit(v: Vec1i64): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec1d): Vec1i64 := new Vec1i64(Convert.ToInt64(v.val0)); public static function operator implicit(v: Vec1ui64): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec1d): Vec1ui64 := new Vec1ui64(Convert.ToUInt64(v.val0)); public static function operator implicit(v: Vec1f): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec1d): Vec1f := new Vec1f(v.val0); public function SqrLength := val0*val0; public function Normalized := self / self.SqrLength.Sqrt; public static function Random(min, max: double): Vec1d; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec1d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0); end; public static function Readln(prompt: string := nil): Vec1d; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec1d; begin Writeln(self.ToString); Result := self; end; end; UseVec1dPtrCallbackP = procedure(var ptr: Vec1d); UseVec1dPtrCallbackF<T> = function(var ptr: Vec1d): T; {$endregion Vec1} {$region Vec2} Vec2b = record public val0: SByte; public val1: SByte; public constructor(val0, val1: SByte); begin self.val0 := val0; self.val1 := val1; end; public static function operator-(v: Vec2b): Vec2b := new Vec2b(-v.val0, -v.val1); public static function operator+(v: Vec2b): Vec2b := v; public static function operator*(v: Vec2b; k: SByte): Vec2b := new Vec2b(v.val0*k, v.val1*k); public static function operator div(v: Vec2b; k: SByte): Vec2b := new Vec2b(v.val0 div k, v.val1 div k); public static function operator*(v1, v2: Vec2b): SByte := ( v1.val0*v2.val0 + v1.val1*v2.val1 ); public static function operator+(v1, v2: Vec2b): Vec2b := new Vec2b(v1.val0+v2.val0, v1.val1+v2.val1); public static function operator-(v1, v2: Vec2b): Vec2b := new Vec2b(v1.val0-v2.val0, v1.val1-v2.val1); public static function operator implicit(v: Vec1b): Vec2b := new Vec2b(v.val0, 0); public static function operator implicit(v: Vec2b): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec2b := new Vec2b(v.val0, 0); public static function operator implicit(v: Vec2b): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec2b := new Vec2b(v.val0, 0); public static function operator implicit(v: Vec2b): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec2b := new Vec2b(v.val0, 0); public static function operator implicit(v: Vec2b): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec2b := new Vec2b(v.val0, 0); public static function operator implicit(v: Vec2b): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec2b := new Vec2b(v.val0, 0); public static function operator implicit(v: Vec2b): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec2b := new Vec2b(v.val0, 0); public static function operator implicit(v: Vec2b): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec2b := new Vec2b(v.val0, 0); public static function operator implicit(v: Vec2b): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec2b := new Vec2b(Convert.ToSByte(v.val0), 0); public static function operator implicit(v: Vec2b): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec2b := new Vec2b(Convert.ToSByte(v.val0), 0); public static function operator implicit(v: Vec2b): Vec1d := new Vec1d(v.val0); public function SqrLength := val0*val0 + val1*val1; public static function Random(min, max: SByte): Vec2b; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec2b; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1); end; public static function Readln(prompt: string := nil): Vec2b; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec2b; begin Writeln(self.ToString); Result := self; end; end; Vec2ub = record public val0: Byte; public val1: Byte; public constructor(val0, val1: Byte); begin self.val0 := val0; self.val1 := val1; end; public static function operator+(v: Vec2ub): Vec2ub := v; public static function operator*(v: Vec2ub; k: Byte): Vec2ub := new Vec2ub(v.val0*k, v.val1*k); public static function operator div(v: Vec2ub; k: Byte): Vec2ub := new Vec2ub(v.val0 div k, v.val1 div k); public static function operator*(v1, v2: Vec2ub): Byte := ( v1.val0*v2.val0 + v1.val1*v2.val1 ); public static function operator+(v1, v2: Vec2ub): Vec2ub := new Vec2ub(v1.val0+v2.val0, v1.val1+v2.val1); public static function operator-(v1, v2: Vec2ub): Vec2ub := new Vec2ub(v1.val0-v2.val0, v1.val1-v2.val1); public static function operator implicit(v: Vec1b): Vec2ub := new Vec2ub(v.val0, 0); public static function operator implicit(v: Vec2ub): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec2ub := new Vec2ub(v.val0, 0); public static function operator implicit(v: Vec2ub): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec2ub := new Vec2ub(v.val0, 0); public static function operator implicit(v: Vec2ub): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec2ub := new Vec2ub(v.val0, 0); public static function operator implicit(v: Vec2ub): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec2ub := new Vec2ub(v.val0, 0); public static function operator implicit(v: Vec2ub): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec2ub := new Vec2ub(v.val0, 0); public static function operator implicit(v: Vec2ub): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec2ub := new Vec2ub(v.val0, 0); public static function operator implicit(v: Vec2ub): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec2ub := new Vec2ub(v.val0, 0); public static function operator implicit(v: Vec2ub): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec2ub := new Vec2ub(Convert.ToByte(v.val0), 0); public static function operator implicit(v: Vec2ub): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec2ub := new Vec2ub(Convert.ToByte(v.val0), 0); public static function operator implicit(v: Vec2ub): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec2b := new Vec2b(v.val0, v.val1); public function SqrLength := val0*val0 + val1*val1; public static function Random(min, max: Byte): Vec2ub; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec2ub; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1); end; public static function Readln(prompt: string := nil): Vec2ub; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec2ub; begin Writeln(self.ToString); Result := self; end; end; Vec2s = record public val0: Int16; public val1: Int16; public constructor(val0, val1: Int16); begin self.val0 := val0; self.val1 := val1; end; public static function operator-(v: Vec2s): Vec2s := new Vec2s(-v.val0, -v.val1); public static function operator+(v: Vec2s): Vec2s := v; public static function operator*(v: Vec2s; k: Int16): Vec2s := new Vec2s(v.val0*k, v.val1*k); public static function operator div(v: Vec2s; k: Int16): Vec2s := new Vec2s(v.val0 div k, v.val1 div k); public static function operator*(v1, v2: Vec2s): Int16 := ( v1.val0*v2.val0 + v1.val1*v2.val1 ); public static function operator+(v1, v2: Vec2s): Vec2s := new Vec2s(v1.val0+v2.val0, v1.val1+v2.val1); public static function operator-(v1, v2: Vec2s): Vec2s := new Vec2s(v1.val0-v2.val0, v1.val1-v2.val1); public static function operator implicit(v: Vec1b): Vec2s := new Vec2s(v.val0, 0); public static function operator implicit(v: Vec2s): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec2s := new Vec2s(v.val0, 0); public static function operator implicit(v: Vec2s): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec2s := new Vec2s(v.val0, 0); public static function operator implicit(v: Vec2s): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec2s := new Vec2s(v.val0, 0); public static function operator implicit(v: Vec2s): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec2s := new Vec2s(v.val0, 0); public static function operator implicit(v: Vec2s): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec2s := new Vec2s(v.val0, 0); public static function operator implicit(v: Vec2s): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec2s := new Vec2s(v.val0, 0); public static function operator implicit(v: Vec2s): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec2s := new Vec2s(v.val0, 0); public static function operator implicit(v: Vec2s): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec2s := new Vec2s(Convert.ToInt16(v.val0), 0); public static function operator implicit(v: Vec2s): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec2s := new Vec2s(Convert.ToInt16(v.val0), 0); public static function operator implicit(v: Vec2s): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec2ub := new Vec2ub(v.val0, v.val1); public function SqrLength := val0*val0 + val1*val1; public static function Random(min, max: Int16): Vec2s; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec2s; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1); end; public static function Readln(prompt: string := nil): Vec2s; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec2s; begin Writeln(self.ToString); Result := self; end; end; Vec2us = record public val0: UInt16; public val1: UInt16; public constructor(val0, val1: UInt16); begin self.val0 := val0; self.val1 := val1; end; public static function operator+(v: Vec2us): Vec2us := v; public static function operator*(v: Vec2us; k: UInt16): Vec2us := new Vec2us(v.val0*k, v.val1*k); public static function operator div(v: Vec2us; k: UInt16): Vec2us := new Vec2us(v.val0 div k, v.val1 div k); public static function operator*(v1, v2: Vec2us): UInt16 := ( v1.val0*v2.val0 + v1.val1*v2.val1 ); public static function operator+(v1, v2: Vec2us): Vec2us := new Vec2us(v1.val0+v2.val0, v1.val1+v2.val1); public static function operator-(v1, v2: Vec2us): Vec2us := new Vec2us(v1.val0-v2.val0, v1.val1-v2.val1); public static function operator implicit(v: Vec1b): Vec2us := new Vec2us(v.val0, 0); public static function operator implicit(v: Vec2us): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec2us := new Vec2us(v.val0, 0); public static function operator implicit(v: Vec2us): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec2us := new Vec2us(v.val0, 0); public static function operator implicit(v: Vec2us): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec2us := new Vec2us(v.val0, 0); public static function operator implicit(v: Vec2us): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec2us := new Vec2us(v.val0, 0); public static function operator implicit(v: Vec2us): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec2us := new Vec2us(v.val0, 0); public static function operator implicit(v: Vec2us): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec2us := new Vec2us(v.val0, 0); public static function operator implicit(v: Vec2us): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec2us := new Vec2us(v.val0, 0); public static function operator implicit(v: Vec2us): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec2us := new Vec2us(Convert.ToUInt16(v.val0), 0); public static function operator implicit(v: Vec2us): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec2us := new Vec2us(Convert.ToUInt16(v.val0), 0); public static function operator implicit(v: Vec2us): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec2s := new Vec2s(v.val0, v.val1); public function SqrLength := val0*val0 + val1*val1; public static function Random(min, max: UInt16): Vec2us; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec2us; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1); end; public static function Readln(prompt: string := nil): Vec2us; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec2us; begin Writeln(self.ToString); Result := self; end; end; Vec2i = record public val0: Int32; public val1: Int32; public constructor(val0, val1: Int32); begin self.val0 := val0; self.val1 := val1; end; public static function operator-(v: Vec2i): Vec2i := new Vec2i(-v.val0, -v.val1); public static function operator+(v: Vec2i): Vec2i := v; public static function operator*(v: Vec2i; k: Int32): Vec2i := new Vec2i(v.val0*k, v.val1*k); public static function operator div(v: Vec2i; k: Int32): Vec2i := new Vec2i(v.val0 div k, v.val1 div k); public static function operator*(v1, v2: Vec2i): Int32 := ( v1.val0*v2.val0 + v1.val1*v2.val1 ); public static function operator+(v1, v2: Vec2i): Vec2i := new Vec2i(v1.val0+v2.val0, v1.val1+v2.val1); public static function operator-(v1, v2: Vec2i): Vec2i := new Vec2i(v1.val0-v2.val0, v1.val1-v2.val1); public static function operator implicit(v: Vec1b): Vec2i := new Vec2i(v.val0, 0); public static function operator implicit(v: Vec2i): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec2i := new Vec2i(v.val0, 0); public static function operator implicit(v: Vec2i): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec2i := new Vec2i(v.val0, 0); public static function operator implicit(v: Vec2i): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec2i := new Vec2i(v.val0, 0); public static function operator implicit(v: Vec2i): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec2i := new Vec2i(v.val0, 0); public static function operator implicit(v: Vec2i): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec2i := new Vec2i(v.val0, 0); public static function operator implicit(v: Vec2i): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec2i := new Vec2i(v.val0, 0); public static function operator implicit(v: Vec2i): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec2i := new Vec2i(v.val0, 0); public static function operator implicit(v: Vec2i): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec2i := new Vec2i(Convert.ToInt32(v.val0), 0); public static function operator implicit(v: Vec2i): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec2i := new Vec2i(Convert.ToInt32(v.val0), 0); public static function operator implicit(v: Vec2i): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec2us := new Vec2us(v.val0, v.val1); public function SqrLength := val0*val0 + val1*val1; public static function Random(min, max: Int32): Vec2i; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec2i; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1); end; public static function Readln(prompt: string := nil): Vec2i; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec2i; begin Writeln(self.ToString); Result := self; end; end; Vec2ui = record public val0: UInt32; public val1: UInt32; public constructor(val0, val1: UInt32); begin self.val0 := val0; self.val1 := val1; end; public static function operator+(v: Vec2ui): Vec2ui := v; public static function operator*(v: Vec2ui; k: UInt32): Vec2ui := new Vec2ui(v.val0*k, v.val1*k); public static function operator div(v: Vec2ui; k: UInt32): Vec2ui := new Vec2ui(v.val0 div k, v.val1 div k); public static function operator*(v1, v2: Vec2ui): UInt32 := ( v1.val0*v2.val0 + v1.val1*v2.val1 ); public static function operator+(v1, v2: Vec2ui): Vec2ui := new Vec2ui(v1.val0+v2.val0, v1.val1+v2.val1); public static function operator-(v1, v2: Vec2ui): Vec2ui := new Vec2ui(v1.val0-v2.val0, v1.val1-v2.val1); public static function operator implicit(v: Vec1b): Vec2ui := new Vec2ui(v.val0, 0); public static function operator implicit(v: Vec2ui): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec2ui := new Vec2ui(v.val0, 0); public static function operator implicit(v: Vec2ui): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec2ui := new Vec2ui(v.val0, 0); public static function operator implicit(v: Vec2ui): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec2ui := new Vec2ui(v.val0, 0); public static function operator implicit(v: Vec2ui): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec2ui := new Vec2ui(v.val0, 0); public static function operator implicit(v: Vec2ui): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec2ui := new Vec2ui(v.val0, 0); public static function operator implicit(v: Vec2ui): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec2ui := new Vec2ui(v.val0, 0); public static function operator implicit(v: Vec2ui): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec2ui := new Vec2ui(v.val0, 0); public static function operator implicit(v: Vec2ui): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec2ui := new Vec2ui(Convert.ToUInt32(v.val0), 0); public static function operator implicit(v: Vec2ui): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec2ui := new Vec2ui(Convert.ToUInt32(v.val0), 0); public static function operator implicit(v: Vec2ui): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec2i := new Vec2i(v.val0, v.val1); public function SqrLength := val0*val0 + val1*val1; public static function Random(min, max: UInt32): Vec2ui; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec2ui; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1); end; public static function Readln(prompt: string := nil): Vec2ui; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec2ui; begin Writeln(self.ToString); Result := self; end; end; Vec2i64 = record public val0: Int64; public val1: Int64; public constructor(val0, val1: Int64); begin self.val0 := val0; self.val1 := val1; end; public static function operator-(v: Vec2i64): Vec2i64 := new Vec2i64(-v.val0, -v.val1); public static function operator+(v: Vec2i64): Vec2i64 := v; public static function operator*(v: Vec2i64; k: Int64): Vec2i64 := new Vec2i64(v.val0*k, v.val1*k); public static function operator div(v: Vec2i64; k: Int64): Vec2i64 := new Vec2i64(v.val0 div k, v.val1 div k); public static function operator*(v1, v2: Vec2i64): Int64 := ( v1.val0*v2.val0 + v1.val1*v2.val1 ); public static function operator+(v1, v2: Vec2i64): Vec2i64 := new Vec2i64(v1.val0+v2.val0, v1.val1+v2.val1); public static function operator-(v1, v2: Vec2i64): Vec2i64 := new Vec2i64(v1.val0-v2.val0, v1.val1-v2.val1); public static function operator implicit(v: Vec1b): Vec2i64 := new Vec2i64(v.val0, 0); public static function operator implicit(v: Vec2i64): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec2i64 := new Vec2i64(v.val0, 0); public static function operator implicit(v: Vec2i64): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec2i64 := new Vec2i64(v.val0, 0); public static function operator implicit(v: Vec2i64): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec2i64 := new Vec2i64(v.val0, 0); public static function operator implicit(v: Vec2i64): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec2i64 := new Vec2i64(v.val0, 0); public static function operator implicit(v: Vec2i64): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec2i64 := new Vec2i64(v.val0, 0); public static function operator implicit(v: Vec2i64): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec2i64 := new Vec2i64(v.val0, 0); public static function operator implicit(v: Vec2i64): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec2i64 := new Vec2i64(v.val0, 0); public static function operator implicit(v: Vec2i64): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec2i64 := new Vec2i64(Convert.ToInt64(v.val0), 0); public static function operator implicit(v: Vec2i64): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec2i64 := new Vec2i64(Convert.ToInt64(v.val0), 0); public static function operator implicit(v: Vec2i64): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec2ui := new Vec2ui(v.val0, v.val1); public function SqrLength := val0*val0 + val1*val1; public static function Random(min, max: Int64): Vec2i64; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec2i64; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1); end; public static function Readln(prompt: string := nil): Vec2i64; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec2i64; begin Writeln(self.ToString); Result := self; end; end; Vec2ui64 = record public val0: UInt64; public val1: UInt64; public constructor(val0, val1: UInt64); begin self.val0 := val0; self.val1 := val1; end; public static function operator+(v: Vec2ui64): Vec2ui64 := v; public static function operator*(v: Vec2ui64; k: UInt64): Vec2ui64 := new Vec2ui64(v.val0*k, v.val1*k); public static function operator div(v: Vec2ui64; k: UInt64): Vec2ui64 := new Vec2ui64(v.val0 div k, v.val1 div k); public static function operator*(v1, v2: Vec2ui64): UInt64 := ( v1.val0*v2.val0 + v1.val1*v2.val1 ); public static function operator+(v1, v2: Vec2ui64): Vec2ui64 := new Vec2ui64(v1.val0+v2.val0, v1.val1+v2.val1); public static function operator-(v1, v2: Vec2ui64): Vec2ui64 := new Vec2ui64(v1.val0-v2.val0, v1.val1-v2.val1); public static function operator implicit(v: Vec1b): Vec2ui64 := new Vec2ui64(v.val0, 0); public static function operator implicit(v: Vec2ui64): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec2ui64 := new Vec2ui64(v.val0, 0); public static function operator implicit(v: Vec2ui64): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec2ui64 := new Vec2ui64(v.val0, 0); public static function operator implicit(v: Vec2ui64): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec2ui64 := new Vec2ui64(v.val0, 0); public static function operator implicit(v: Vec2ui64): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec2ui64 := new Vec2ui64(v.val0, 0); public static function operator implicit(v: Vec2ui64): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec2ui64 := new Vec2ui64(v.val0, 0); public static function operator implicit(v: Vec2ui64): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec2ui64 := new Vec2ui64(v.val0, 0); public static function operator implicit(v: Vec2ui64): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec2ui64 := new Vec2ui64(v.val0, 0); public static function operator implicit(v: Vec2ui64): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec2ui64 := new Vec2ui64(Convert.ToUInt64(v.val0), 0); public static function operator implicit(v: Vec2ui64): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec2ui64 := new Vec2ui64(Convert.ToUInt64(v.val0), 0); public static function operator implicit(v: Vec2ui64): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec2i64 := new Vec2i64(v.val0, v.val1); public function SqrLength := val0*val0 + val1*val1; public static function Random(min, max: UInt64): Vec2ui64; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec2ui64; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1); end; public static function Readln(prompt: string := nil): Vec2ui64; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec2ui64; begin Writeln(self.ToString); Result := self; end; end; Vec2f = record public val0: single; public val1: single; public constructor(val0, val1: single); begin self.val0 := val0; self.val1 := val1; end; public static function operator-(v: Vec2f): Vec2f := new Vec2f(-v.val0, -v.val1); public static function operator+(v: Vec2f): Vec2f := v; public static function operator*(v: Vec2f; k: single): Vec2f := new Vec2f(v.val0*k, v.val1*k); public static function operator/(v: Vec2f; k: single): Vec2f := new Vec2f(v.val0/k, v.val1/k); public static function operator*(v1, v2: Vec2f): single := ( v1.val0*v2.val0 + v1.val1*v2.val1 ); public static function operator+(v1, v2: Vec2f): Vec2f := new Vec2f(v1.val0+v2.val0, v1.val1+v2.val1); public static function operator-(v1, v2: Vec2f): Vec2f := new Vec2f(v1.val0-v2.val0, v1.val1-v2.val1); public static function operator implicit(v: Vec1b): Vec2f := new Vec2f(v.val0, 0); public static function operator implicit(v: Vec2f): Vec1b := new Vec1b(Convert.ToSByte(v.val0)); public static function operator implicit(v: Vec1ub): Vec2f := new Vec2f(v.val0, 0); public static function operator implicit(v: Vec2f): Vec1ub := new Vec1ub(Convert.ToByte(v.val0)); public static function operator implicit(v: Vec1s): Vec2f := new Vec2f(v.val0, 0); public static function operator implicit(v: Vec2f): Vec1s := new Vec1s(Convert.ToInt16(v.val0)); public static function operator implicit(v: Vec1us): Vec2f := new Vec2f(v.val0, 0); public static function operator implicit(v: Vec2f): Vec1us := new Vec1us(Convert.ToUInt16(v.val0)); public static function operator implicit(v: Vec1i): Vec2f := new Vec2f(v.val0, 0); public static function operator implicit(v: Vec2f): Vec1i := new Vec1i(Convert.ToInt32(v.val0)); public static function operator implicit(v: Vec1ui): Vec2f := new Vec2f(v.val0, 0); public static function operator implicit(v: Vec2f): Vec1ui := new Vec1ui(Convert.ToUInt32(v.val0)); public static function operator implicit(v: Vec1i64): Vec2f := new Vec2f(v.val0, 0); public static function operator implicit(v: Vec2f): Vec1i64 := new Vec1i64(Convert.ToInt64(v.val0)); public static function operator implicit(v: Vec1ui64): Vec2f := new Vec2f(v.val0, 0); public static function operator implicit(v: Vec2f): Vec1ui64 := new Vec1ui64(Convert.ToUInt64(v.val0)); public static function operator implicit(v: Vec1f): Vec2f := new Vec2f(v.val0, 0); public static function operator implicit(v: Vec2f): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec2f := new Vec2f(v.val0, 0); public static function operator implicit(v: Vec2f): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec2b := new Vec2b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1)); public static function operator implicit(v: Vec2ub): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec2ub := new Vec2ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1)); public static function operator implicit(v: Vec2s): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec2s := new Vec2s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1)); public static function operator implicit(v: Vec2us): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec2us := new Vec2us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1)); public static function operator implicit(v: Vec2i): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec2i := new Vec2i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1)); public static function operator implicit(v: Vec2ui): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec2ui := new Vec2ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1)); public static function operator implicit(v: Vec2i64): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec2i64 := new Vec2i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1)); public static function operator implicit(v: Vec2ui64): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec2ui64 := new Vec2ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1)); public function SqrLength := val0*val0 + val1*val1; public function Normalized := self / single(Sqrt(self.SqrLength)); public static function Random(min, max: single): Vec2f; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec2f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1); end; public static function Readln(prompt: string := nil): Vec2f; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec2f; begin Writeln(self.ToString); Result := self; end; end; UseVec2fPtrCallbackP = procedure(var ptr: Vec2f); UseVec2fPtrCallbackF<T> = function(var ptr: Vec2f): T; Vec2d = record public val0: double; public val1: double; public constructor(val0, val1: double); begin self.val0 := val0; self.val1 := val1; end; public static function operator-(v: Vec2d): Vec2d := new Vec2d(-v.val0, -v.val1); public static function operator+(v: Vec2d): Vec2d := v; public static function operator*(v: Vec2d; k: double): Vec2d := new Vec2d(v.val0*k, v.val1*k); public static function operator/(v: Vec2d; k: double): Vec2d := new Vec2d(v.val0/k, v.val1/k); public static function operator*(v1, v2: Vec2d): double := ( v1.val0*v2.val0 + v1.val1*v2.val1 ); public static function operator+(v1, v2: Vec2d): Vec2d := new Vec2d(v1.val0+v2.val0, v1.val1+v2.val1); public static function operator-(v1, v2: Vec2d): Vec2d := new Vec2d(v1.val0-v2.val0, v1.val1-v2.val1); public static function operator implicit(v: Vec1b): Vec2d := new Vec2d(v.val0, 0); public static function operator implicit(v: Vec2d): Vec1b := new Vec1b(Convert.ToSByte(v.val0)); public static function operator implicit(v: Vec1ub): Vec2d := new Vec2d(v.val0, 0); public static function operator implicit(v: Vec2d): Vec1ub := new Vec1ub(Convert.ToByte(v.val0)); public static function operator implicit(v: Vec1s): Vec2d := new Vec2d(v.val0, 0); public static function operator implicit(v: Vec2d): Vec1s := new Vec1s(Convert.ToInt16(v.val0)); public static function operator implicit(v: Vec1us): Vec2d := new Vec2d(v.val0, 0); public static function operator implicit(v: Vec2d): Vec1us := new Vec1us(Convert.ToUInt16(v.val0)); public static function operator implicit(v: Vec1i): Vec2d := new Vec2d(v.val0, 0); public static function operator implicit(v: Vec2d): Vec1i := new Vec1i(Convert.ToInt32(v.val0)); public static function operator implicit(v: Vec1ui): Vec2d := new Vec2d(v.val0, 0); public static function operator implicit(v: Vec2d): Vec1ui := new Vec1ui(Convert.ToUInt32(v.val0)); public static function operator implicit(v: Vec1i64): Vec2d := new Vec2d(v.val0, 0); public static function operator implicit(v: Vec2d): Vec1i64 := new Vec1i64(Convert.ToInt64(v.val0)); public static function operator implicit(v: Vec1ui64): Vec2d := new Vec2d(v.val0, 0); public static function operator implicit(v: Vec2d): Vec1ui64 := new Vec1ui64(Convert.ToUInt64(v.val0)); public static function operator implicit(v: Vec1f): Vec2d := new Vec2d(v.val0, 0); public static function operator implicit(v: Vec2d): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec2d := new Vec2d(v.val0, 0); public static function operator implicit(v: Vec2d): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec2b := new Vec2b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1)); public static function operator implicit(v: Vec2ub): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec2ub := new Vec2ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1)); public static function operator implicit(v: Vec2s): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec2s := new Vec2s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1)); public static function operator implicit(v: Vec2us): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec2us := new Vec2us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1)); public static function operator implicit(v: Vec2i): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec2i := new Vec2i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1)); public static function operator implicit(v: Vec2ui): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec2ui := new Vec2ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1)); public static function operator implicit(v: Vec2i64): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec2i64 := new Vec2i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1)); public static function operator implicit(v: Vec2ui64): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec2ui64 := new Vec2ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1)); public static function operator implicit(v: Vec2f): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec2f := new Vec2f(v.val0, v.val1); public function SqrLength := val0*val0 + val1*val1; public function Normalized := self / self.SqrLength.Sqrt; public static function Random(min, max: double): Vec2d; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec2d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1); end; public static function Readln(prompt: string := nil): Vec2d; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec2d; begin Writeln(self.ToString); Result := self; end; end; UseVec2dPtrCallbackP = procedure(var ptr: Vec2d); UseVec2dPtrCallbackF<T> = function(var ptr: Vec2d): T; {$endregion Vec2} {$region Vec3} Vec3b = record public val0: SByte; public val1: SByte; public val2: SByte; public constructor(val0, val1, val2: SByte); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; end; public static function operator-(v: Vec3b): Vec3b := new Vec3b(-v.val0, -v.val1, -v.val2); public static function operator+(v: Vec3b): Vec3b := v; public static function operator*(v: Vec3b; k: SByte): Vec3b := new Vec3b(v.val0*k, v.val1*k, v.val2*k); public static function operator div(v: Vec3b; k: SByte): Vec3b := new Vec3b(v.val0 div k, v.val1 div k, v.val2 div k); public static function operator*(v1, v2: Vec3b): SByte := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 ); public static function operator+(v1, v2: Vec3b): Vec3b := new Vec3b(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2); public static function operator-(v1, v2: Vec3b): Vec3b := new Vec3b(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2); public static function operator implicit(v: Vec1b): Vec3b := new Vec3b(v.val0, 0, 0); public static function operator implicit(v: Vec3b): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec3b := new Vec3b(v.val0, 0, 0); public static function operator implicit(v: Vec3b): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec3b := new Vec3b(v.val0, 0, 0); public static function operator implicit(v: Vec3b): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec3b := new Vec3b(v.val0, 0, 0); public static function operator implicit(v: Vec3b): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec3b := new Vec3b(v.val0, 0, 0); public static function operator implicit(v: Vec3b): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec3b := new Vec3b(v.val0, 0, 0); public static function operator implicit(v: Vec3b): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec3b := new Vec3b(v.val0, 0, 0); public static function operator implicit(v: Vec3b): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec3b := new Vec3b(v.val0, 0, 0); public static function operator implicit(v: Vec3b): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec3b := new Vec3b(Convert.ToSByte(v.val0), 0, 0); public static function operator implicit(v: Vec3b): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec3b := new Vec3b(Convert.ToSByte(v.val0), 0, 0); public static function operator implicit(v: Vec3b): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec3b := new Vec3b(v.val0, v.val1, 0); public static function operator implicit(v: Vec3b): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec3b := new Vec3b(v.val0, v.val1, 0); public static function operator implicit(v: Vec3b): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec3b := new Vec3b(v.val0, v.val1, 0); public static function operator implicit(v: Vec3b): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec3b := new Vec3b(v.val0, v.val1, 0); public static function operator implicit(v: Vec3b): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec3b := new Vec3b(v.val0, v.val1, 0); public static function operator implicit(v: Vec3b): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec3b := new Vec3b(v.val0, v.val1, 0); public static function operator implicit(v: Vec3b): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec3b := new Vec3b(v.val0, v.val1, 0); public static function operator implicit(v: Vec3b): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec3b := new Vec3b(v.val0, v.val1, 0); public static function operator implicit(v: Vec3b): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec3b := new Vec3b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1), 0); public static function operator implicit(v: Vec3b): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec3b := new Vec3b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1), 0); public static function operator implicit(v: Vec3b): Vec2d := new Vec2d(v.val0, v.val1); public function SqrLength := val0*val0 + val1*val1 + val2*val2; public static function CrossCW(v1,v2: Vec3b) := new Vec3b(v1.val1*v2.val2 - v2.val1*v1.val2, v1.val2*v2.val0 - v2.val2*v1.val0, v1.val0*v2.val1 - v2.val0*v1.val1); public static function CrossCCW(v1,v2: Vec3b) := CrossCW(v2,v1); public static function Random(min, max: SByte): Vec3b; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec3b; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2); end; public static function Readln(prompt: string := nil): Vec3b; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec3b; begin Writeln(self.ToString); Result := self; end; end; Vec3ub = record public val0: Byte; public val1: Byte; public val2: Byte; public constructor(val0, val1, val2: Byte); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; end; public static function operator+(v: Vec3ub): Vec3ub := v; public static function operator*(v: Vec3ub; k: Byte): Vec3ub := new Vec3ub(v.val0*k, v.val1*k, v.val2*k); public static function operator div(v: Vec3ub; k: Byte): Vec3ub := new Vec3ub(v.val0 div k, v.val1 div k, v.val2 div k); public static function operator*(v1, v2: Vec3ub): Byte := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 ); public static function operator+(v1, v2: Vec3ub): Vec3ub := new Vec3ub(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2); public static function operator-(v1, v2: Vec3ub): Vec3ub := new Vec3ub(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2); public static function operator implicit(v: Vec1b): Vec3ub := new Vec3ub(v.val0, 0, 0); public static function operator implicit(v: Vec3ub): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec3ub := new Vec3ub(v.val0, 0, 0); public static function operator implicit(v: Vec3ub): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec3ub := new Vec3ub(v.val0, 0, 0); public static function operator implicit(v: Vec3ub): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec3ub := new Vec3ub(v.val0, 0, 0); public static function operator implicit(v: Vec3ub): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec3ub := new Vec3ub(v.val0, 0, 0); public static function operator implicit(v: Vec3ub): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec3ub := new Vec3ub(v.val0, 0, 0); public static function operator implicit(v: Vec3ub): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec3ub := new Vec3ub(v.val0, 0, 0); public static function operator implicit(v: Vec3ub): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec3ub := new Vec3ub(v.val0, 0, 0); public static function operator implicit(v: Vec3ub): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec3ub := new Vec3ub(Convert.ToByte(v.val0), 0, 0); public static function operator implicit(v: Vec3ub): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec3ub := new Vec3ub(Convert.ToByte(v.val0), 0, 0); public static function operator implicit(v: Vec3ub): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec3ub := new Vec3ub(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ub): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec3ub := new Vec3ub(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ub): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec3ub := new Vec3ub(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ub): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec3ub := new Vec3ub(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ub): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec3ub := new Vec3ub(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ub): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec3ub := new Vec3ub(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ub): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec3ub := new Vec3ub(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ub): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec3ub := new Vec3ub(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ub): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec3ub := new Vec3ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1), 0); public static function operator implicit(v: Vec3ub): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec3ub := new Vec3ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1), 0); public static function operator implicit(v: Vec3ub): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public function SqrLength := val0*val0 + val1*val1 + val2*val2; public static function Random(min, max: Byte): Vec3ub; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec3ub; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2); end; public static function Readln(prompt: string := nil): Vec3ub; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec3ub; begin Writeln(self.ToString); Result := self; end; end; Vec3s = record public val0: Int16; public val1: Int16; public val2: Int16; public constructor(val0, val1, val2: Int16); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; end; public static function operator-(v: Vec3s): Vec3s := new Vec3s(-v.val0, -v.val1, -v.val2); public static function operator+(v: Vec3s): Vec3s := v; public static function operator*(v: Vec3s; k: Int16): Vec3s := new Vec3s(v.val0*k, v.val1*k, v.val2*k); public static function operator div(v: Vec3s; k: Int16): Vec3s := new Vec3s(v.val0 div k, v.val1 div k, v.val2 div k); public static function operator*(v1, v2: Vec3s): Int16 := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 ); public static function operator+(v1, v2: Vec3s): Vec3s := new Vec3s(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2); public static function operator-(v1, v2: Vec3s): Vec3s := new Vec3s(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2); public static function operator implicit(v: Vec1b): Vec3s := new Vec3s(v.val0, 0, 0); public static function operator implicit(v: Vec3s): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec3s := new Vec3s(v.val0, 0, 0); public static function operator implicit(v: Vec3s): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec3s := new Vec3s(v.val0, 0, 0); public static function operator implicit(v: Vec3s): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec3s := new Vec3s(v.val0, 0, 0); public static function operator implicit(v: Vec3s): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec3s := new Vec3s(v.val0, 0, 0); public static function operator implicit(v: Vec3s): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec3s := new Vec3s(v.val0, 0, 0); public static function operator implicit(v: Vec3s): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec3s := new Vec3s(v.val0, 0, 0); public static function operator implicit(v: Vec3s): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec3s := new Vec3s(v.val0, 0, 0); public static function operator implicit(v: Vec3s): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec3s := new Vec3s(Convert.ToInt16(v.val0), 0, 0); public static function operator implicit(v: Vec3s): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec3s := new Vec3s(Convert.ToInt16(v.val0), 0, 0); public static function operator implicit(v: Vec3s): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec3s := new Vec3s(v.val0, v.val1, 0); public static function operator implicit(v: Vec3s): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec3s := new Vec3s(v.val0, v.val1, 0); public static function operator implicit(v: Vec3s): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec3s := new Vec3s(v.val0, v.val1, 0); public static function operator implicit(v: Vec3s): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec3s := new Vec3s(v.val0, v.val1, 0); public static function operator implicit(v: Vec3s): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec3s := new Vec3s(v.val0, v.val1, 0); public static function operator implicit(v: Vec3s): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec3s := new Vec3s(v.val0, v.val1, 0); public static function operator implicit(v: Vec3s): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec3s := new Vec3s(v.val0, v.val1, 0); public static function operator implicit(v: Vec3s): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec3s := new Vec3s(v.val0, v.val1, 0); public static function operator implicit(v: Vec3s): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec3s := new Vec3s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1), 0); public static function operator implicit(v: Vec3s): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec3s := new Vec3s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1), 0); public static function operator implicit(v: Vec3s): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public function SqrLength := val0*val0 + val1*val1 + val2*val2; public static function CrossCW(v1,v2: Vec3s) := new Vec3s(v1.val1*v2.val2 - v2.val1*v1.val2, v1.val2*v2.val0 - v2.val2*v1.val0, v1.val0*v2.val1 - v2.val0*v1.val1); public static function CrossCCW(v1,v2: Vec3s) := CrossCW(v2,v1); public static function Random(min, max: Int16): Vec3s; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec3s; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2); end; public static function Readln(prompt: string := nil): Vec3s; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec3s; begin Writeln(self.ToString); Result := self; end; end; Vec3us = record public val0: UInt16; public val1: UInt16; public val2: UInt16; public constructor(val0, val1, val2: UInt16); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; end; public static function operator+(v: Vec3us): Vec3us := v; public static function operator*(v: Vec3us; k: UInt16): Vec3us := new Vec3us(v.val0*k, v.val1*k, v.val2*k); public static function operator div(v: Vec3us; k: UInt16): Vec3us := new Vec3us(v.val0 div k, v.val1 div k, v.val2 div k); public static function operator*(v1, v2: Vec3us): UInt16 := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 ); public static function operator+(v1, v2: Vec3us): Vec3us := new Vec3us(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2); public static function operator-(v1, v2: Vec3us): Vec3us := new Vec3us(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2); public static function operator implicit(v: Vec1b): Vec3us := new Vec3us(v.val0, 0, 0); public static function operator implicit(v: Vec3us): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec3us := new Vec3us(v.val0, 0, 0); public static function operator implicit(v: Vec3us): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec3us := new Vec3us(v.val0, 0, 0); public static function operator implicit(v: Vec3us): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec3us := new Vec3us(v.val0, 0, 0); public static function operator implicit(v: Vec3us): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec3us := new Vec3us(v.val0, 0, 0); public static function operator implicit(v: Vec3us): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec3us := new Vec3us(v.val0, 0, 0); public static function operator implicit(v: Vec3us): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec3us := new Vec3us(v.val0, 0, 0); public static function operator implicit(v: Vec3us): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec3us := new Vec3us(v.val0, 0, 0); public static function operator implicit(v: Vec3us): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec3us := new Vec3us(Convert.ToUInt16(v.val0), 0, 0); public static function operator implicit(v: Vec3us): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec3us := new Vec3us(Convert.ToUInt16(v.val0), 0, 0); public static function operator implicit(v: Vec3us): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec3us := new Vec3us(v.val0, v.val1, 0); public static function operator implicit(v: Vec3us): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec3us := new Vec3us(v.val0, v.val1, 0); public static function operator implicit(v: Vec3us): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec3us := new Vec3us(v.val0, v.val1, 0); public static function operator implicit(v: Vec3us): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec3us := new Vec3us(v.val0, v.val1, 0); public static function operator implicit(v: Vec3us): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec3us := new Vec3us(v.val0, v.val1, 0); public static function operator implicit(v: Vec3us): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec3us := new Vec3us(v.val0, v.val1, 0); public static function operator implicit(v: Vec3us): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec3us := new Vec3us(v.val0, v.val1, 0); public static function operator implicit(v: Vec3us): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec3us := new Vec3us(v.val0, v.val1, 0); public static function operator implicit(v: Vec3us): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec3us := new Vec3us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1), 0); public static function operator implicit(v: Vec3us): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec3us := new Vec3us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1), 0); public static function operator implicit(v: Vec3us): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public function SqrLength := val0*val0 + val1*val1 + val2*val2; public static function Random(min, max: UInt16): Vec3us; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec3us; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2); end; public static function Readln(prompt: string := nil): Vec3us; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec3us; begin Writeln(self.ToString); Result := self; end; end; Vec3i = record public val0: Int32; public val1: Int32; public val2: Int32; public constructor(val0, val1, val2: Int32); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; end; public static function operator-(v: Vec3i): Vec3i := new Vec3i(-v.val0, -v.val1, -v.val2); public static function operator+(v: Vec3i): Vec3i := v; public static function operator*(v: Vec3i; k: Int32): Vec3i := new Vec3i(v.val0*k, v.val1*k, v.val2*k); public static function operator div(v: Vec3i; k: Int32): Vec3i := new Vec3i(v.val0 div k, v.val1 div k, v.val2 div k); public static function operator*(v1, v2: Vec3i): Int32 := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 ); public static function operator+(v1, v2: Vec3i): Vec3i := new Vec3i(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2); public static function operator-(v1, v2: Vec3i): Vec3i := new Vec3i(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2); public static function operator implicit(v: Vec1b): Vec3i := new Vec3i(v.val0, 0, 0); public static function operator implicit(v: Vec3i): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec3i := new Vec3i(v.val0, 0, 0); public static function operator implicit(v: Vec3i): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec3i := new Vec3i(v.val0, 0, 0); public static function operator implicit(v: Vec3i): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec3i := new Vec3i(v.val0, 0, 0); public static function operator implicit(v: Vec3i): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec3i := new Vec3i(v.val0, 0, 0); public static function operator implicit(v: Vec3i): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec3i := new Vec3i(v.val0, 0, 0); public static function operator implicit(v: Vec3i): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec3i := new Vec3i(v.val0, 0, 0); public static function operator implicit(v: Vec3i): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec3i := new Vec3i(v.val0, 0, 0); public static function operator implicit(v: Vec3i): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec3i := new Vec3i(Convert.ToInt32(v.val0), 0, 0); public static function operator implicit(v: Vec3i): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec3i := new Vec3i(Convert.ToInt32(v.val0), 0, 0); public static function operator implicit(v: Vec3i): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec3i := new Vec3i(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec3i := new Vec3i(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec3i := new Vec3i(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec3i := new Vec3i(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec3i := new Vec3i(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec3i := new Vec3i(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec3i := new Vec3i(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec3i := new Vec3i(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec3i := new Vec3i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1), 0); public static function operator implicit(v: Vec3i): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec3i := new Vec3i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1), 0); public static function operator implicit(v: Vec3i): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public function SqrLength := val0*val0 + val1*val1 + val2*val2; public static function CrossCW(v1,v2: Vec3i) := new Vec3i(v1.val1*v2.val2 - v2.val1*v1.val2, v1.val2*v2.val0 - v2.val2*v1.val0, v1.val0*v2.val1 - v2.val0*v1.val1); public static function CrossCCW(v1,v2: Vec3i) := CrossCW(v2,v1); public static function Random(min, max: Int32): Vec3i; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec3i; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2); end; public static function Readln(prompt: string := nil): Vec3i; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec3i; begin Writeln(self.ToString); Result := self; end; end; Vec3ui = record public val0: UInt32; public val1: UInt32; public val2: UInt32; public constructor(val0, val1, val2: UInt32); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; end; public static function operator+(v: Vec3ui): Vec3ui := v; public static function operator*(v: Vec3ui; k: UInt32): Vec3ui := new Vec3ui(v.val0*k, v.val1*k, v.val2*k); public static function operator div(v: Vec3ui; k: UInt32): Vec3ui := new Vec3ui(v.val0 div k, v.val1 div k, v.val2 div k); public static function operator*(v1, v2: Vec3ui): UInt32 := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 ); public static function operator+(v1, v2: Vec3ui): Vec3ui := new Vec3ui(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2); public static function operator-(v1, v2: Vec3ui): Vec3ui := new Vec3ui(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2); public static function operator implicit(v: Vec1b): Vec3ui := new Vec3ui(v.val0, 0, 0); public static function operator implicit(v: Vec3ui): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec3ui := new Vec3ui(v.val0, 0, 0); public static function operator implicit(v: Vec3ui): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec3ui := new Vec3ui(v.val0, 0, 0); public static function operator implicit(v: Vec3ui): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec3ui := new Vec3ui(v.val0, 0, 0); public static function operator implicit(v: Vec3ui): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec3ui := new Vec3ui(v.val0, 0, 0); public static function operator implicit(v: Vec3ui): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec3ui := new Vec3ui(v.val0, 0, 0); public static function operator implicit(v: Vec3ui): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec3ui := new Vec3ui(v.val0, 0, 0); public static function operator implicit(v: Vec3ui): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec3ui := new Vec3ui(v.val0, 0, 0); public static function operator implicit(v: Vec3ui): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec3ui := new Vec3ui(Convert.ToUInt32(v.val0), 0, 0); public static function operator implicit(v: Vec3ui): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec3ui := new Vec3ui(Convert.ToUInt32(v.val0), 0, 0); public static function operator implicit(v: Vec3ui): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec3ui := new Vec3ui(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec3ui := new Vec3ui(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec3ui := new Vec3ui(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec3ui := new Vec3ui(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec3ui := new Vec3ui(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec3ui := new Vec3ui(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec3ui := new Vec3ui(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec3ui := new Vec3ui(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec3ui := new Vec3ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1), 0); public static function operator implicit(v: Vec3ui): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec3ui := new Vec3ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1), 0); public static function operator implicit(v: Vec3ui): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public function SqrLength := val0*val0 + val1*val1 + val2*val2; public static function Random(min, max: UInt32): Vec3ui; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec3ui; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2); end; public static function Readln(prompt: string := nil): Vec3ui; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec3ui; begin Writeln(self.ToString); Result := self; end; end; Vec3i64 = record public val0: Int64; public val1: Int64; public val2: Int64; public constructor(val0, val1, val2: Int64); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; end; public static function operator-(v: Vec3i64): Vec3i64 := new Vec3i64(-v.val0, -v.val1, -v.val2); public static function operator+(v: Vec3i64): Vec3i64 := v; public static function operator*(v: Vec3i64; k: Int64): Vec3i64 := new Vec3i64(v.val0*k, v.val1*k, v.val2*k); public static function operator div(v: Vec3i64; k: Int64): Vec3i64 := new Vec3i64(v.val0 div k, v.val1 div k, v.val2 div k); public static function operator*(v1, v2: Vec3i64): Int64 := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 ); public static function operator+(v1, v2: Vec3i64): Vec3i64 := new Vec3i64(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2); public static function operator-(v1, v2: Vec3i64): Vec3i64 := new Vec3i64(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2); public static function operator implicit(v: Vec1b): Vec3i64 := new Vec3i64(v.val0, 0, 0); public static function operator implicit(v: Vec3i64): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec3i64 := new Vec3i64(v.val0, 0, 0); public static function operator implicit(v: Vec3i64): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec3i64 := new Vec3i64(v.val0, 0, 0); public static function operator implicit(v: Vec3i64): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec3i64 := new Vec3i64(v.val0, 0, 0); public static function operator implicit(v: Vec3i64): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec3i64 := new Vec3i64(v.val0, 0, 0); public static function operator implicit(v: Vec3i64): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec3i64 := new Vec3i64(v.val0, 0, 0); public static function operator implicit(v: Vec3i64): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec3i64 := new Vec3i64(v.val0, 0, 0); public static function operator implicit(v: Vec3i64): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec3i64 := new Vec3i64(v.val0, 0, 0); public static function operator implicit(v: Vec3i64): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec3i64 := new Vec3i64(Convert.ToInt64(v.val0), 0, 0); public static function operator implicit(v: Vec3i64): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec3i64 := new Vec3i64(Convert.ToInt64(v.val0), 0, 0); public static function operator implicit(v: Vec3i64): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec3i64 := new Vec3i64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i64): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec3i64 := new Vec3i64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i64): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec3i64 := new Vec3i64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i64): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec3i64 := new Vec3i64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i64): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec3i64 := new Vec3i64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i64): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec3i64 := new Vec3i64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i64): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec3i64 := new Vec3i64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i64): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec3i64 := new Vec3i64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3i64): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec3i64 := new Vec3i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1), 0); public static function operator implicit(v: Vec3i64): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec3i64 := new Vec3i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1), 0); public static function operator implicit(v: Vec3i64): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public function SqrLength := val0*val0 + val1*val1 + val2*val2; public static function CrossCW(v1,v2: Vec3i64) := new Vec3i64(v1.val1*v2.val2 - v2.val1*v1.val2, v1.val2*v2.val0 - v2.val2*v1.val0, v1.val0*v2.val1 - v2.val0*v1.val1); public static function CrossCCW(v1,v2: Vec3i64) := CrossCW(v2,v1); public static function Random(min, max: Int64): Vec3i64; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec3i64; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2); end; public static function Readln(prompt: string := nil): Vec3i64; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec3i64; begin Writeln(self.ToString); Result := self; end; end; Vec3ui64 = record public val0: UInt64; public val1: UInt64; public val2: UInt64; public constructor(val0, val1, val2: UInt64); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; end; public static function operator+(v: Vec3ui64): Vec3ui64 := v; public static function operator*(v: Vec3ui64; k: UInt64): Vec3ui64 := new Vec3ui64(v.val0*k, v.val1*k, v.val2*k); public static function operator div(v: Vec3ui64; k: UInt64): Vec3ui64 := new Vec3ui64(v.val0 div k, v.val1 div k, v.val2 div k); public static function operator*(v1, v2: Vec3ui64): UInt64 := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 ); public static function operator+(v1, v2: Vec3ui64): Vec3ui64 := new Vec3ui64(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2); public static function operator-(v1, v2: Vec3ui64): Vec3ui64 := new Vec3ui64(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2); public static function operator implicit(v: Vec1b): Vec3ui64 := new Vec3ui64(v.val0, 0, 0); public static function operator implicit(v: Vec3ui64): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec3ui64 := new Vec3ui64(v.val0, 0, 0); public static function operator implicit(v: Vec3ui64): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec3ui64 := new Vec3ui64(v.val0, 0, 0); public static function operator implicit(v: Vec3ui64): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec3ui64 := new Vec3ui64(v.val0, 0, 0); public static function operator implicit(v: Vec3ui64): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec3ui64 := new Vec3ui64(v.val0, 0, 0); public static function operator implicit(v: Vec3ui64): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec3ui64 := new Vec3ui64(v.val0, 0, 0); public static function operator implicit(v: Vec3ui64): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec3ui64 := new Vec3ui64(v.val0, 0, 0); public static function operator implicit(v: Vec3ui64): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec3ui64 := new Vec3ui64(v.val0, 0, 0); public static function operator implicit(v: Vec3ui64): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec3ui64 := new Vec3ui64(Convert.ToUInt64(v.val0), 0, 0); public static function operator implicit(v: Vec3ui64): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec3ui64 := new Vec3ui64(Convert.ToUInt64(v.val0), 0, 0); public static function operator implicit(v: Vec3ui64): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec3ui64 := new Vec3ui64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui64): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec3ui64 := new Vec3ui64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui64): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec3ui64 := new Vec3ui64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui64): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec3ui64 := new Vec3ui64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui64): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec3ui64 := new Vec3ui64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui64): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec3ui64 := new Vec3ui64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui64): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec3ui64 := new Vec3ui64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui64): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec3ui64 := new Vec3ui64(v.val0, v.val1, 0); public static function operator implicit(v: Vec3ui64): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec3ui64 := new Vec3ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1), 0); public static function operator implicit(v: Vec3ui64): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec3ui64 := new Vec3ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1), 0); public static function operator implicit(v: Vec3ui64): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public function SqrLength := val0*val0 + val1*val1 + val2*val2; public static function Random(min, max: UInt64): Vec3ui64; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec3ui64; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2); end; public static function Readln(prompt: string := nil): Vec3ui64; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec3ui64; begin Writeln(self.ToString); Result := self; end; end; Vec3f = record public val0: single; public val1: single; public val2: single; public constructor(val0, val1, val2: single); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; end; public static function operator-(v: Vec3f): Vec3f := new Vec3f(-v.val0, -v.val1, -v.val2); public static function operator+(v: Vec3f): Vec3f := v; public static function operator*(v: Vec3f; k: single): Vec3f := new Vec3f(v.val0*k, v.val1*k, v.val2*k); public static function operator/(v: Vec3f; k: single): Vec3f := new Vec3f(v.val0/k, v.val1/k, v.val2/k); public static function operator*(v1, v2: Vec3f): single := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 ); public static function operator+(v1, v2: Vec3f): Vec3f := new Vec3f(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2); public static function operator-(v1, v2: Vec3f): Vec3f := new Vec3f(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2); public static function operator implicit(v: Vec1b): Vec3f := new Vec3f(v.val0, 0, 0); public static function operator implicit(v: Vec3f): Vec1b := new Vec1b(Convert.ToSByte(v.val0)); public static function operator implicit(v: Vec1ub): Vec3f := new Vec3f(v.val0, 0, 0); public static function operator implicit(v: Vec3f): Vec1ub := new Vec1ub(Convert.ToByte(v.val0)); public static function operator implicit(v: Vec1s): Vec3f := new Vec3f(v.val0, 0, 0); public static function operator implicit(v: Vec3f): Vec1s := new Vec1s(Convert.ToInt16(v.val0)); public static function operator implicit(v: Vec1us): Vec3f := new Vec3f(v.val0, 0, 0); public static function operator implicit(v: Vec3f): Vec1us := new Vec1us(Convert.ToUInt16(v.val0)); public static function operator implicit(v: Vec1i): Vec3f := new Vec3f(v.val0, 0, 0); public static function operator implicit(v: Vec3f): Vec1i := new Vec1i(Convert.ToInt32(v.val0)); public static function operator implicit(v: Vec1ui): Vec3f := new Vec3f(v.val0, 0, 0); public static function operator implicit(v: Vec3f): Vec1ui := new Vec1ui(Convert.ToUInt32(v.val0)); public static function operator implicit(v: Vec1i64): Vec3f := new Vec3f(v.val0, 0, 0); public static function operator implicit(v: Vec3f): Vec1i64 := new Vec1i64(Convert.ToInt64(v.val0)); public static function operator implicit(v: Vec1ui64): Vec3f := new Vec3f(v.val0, 0, 0); public static function operator implicit(v: Vec3f): Vec1ui64 := new Vec1ui64(Convert.ToUInt64(v.val0)); public static function operator implicit(v: Vec1f): Vec3f := new Vec3f(v.val0, 0, 0); public static function operator implicit(v: Vec3f): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec3f := new Vec3f(v.val0, 0, 0); public static function operator implicit(v: Vec3f): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec3f := new Vec3f(v.val0, v.val1, 0); public static function operator implicit(v: Vec3f): Vec2b := new Vec2b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1)); public static function operator implicit(v: Vec2ub): Vec3f := new Vec3f(v.val0, v.val1, 0); public static function operator implicit(v: Vec3f): Vec2ub := new Vec2ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1)); public static function operator implicit(v: Vec2s): Vec3f := new Vec3f(v.val0, v.val1, 0); public static function operator implicit(v: Vec3f): Vec2s := new Vec2s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1)); public static function operator implicit(v: Vec2us): Vec3f := new Vec3f(v.val0, v.val1, 0); public static function operator implicit(v: Vec3f): Vec2us := new Vec2us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1)); public static function operator implicit(v: Vec2i): Vec3f := new Vec3f(v.val0, v.val1, 0); public static function operator implicit(v: Vec3f): Vec2i := new Vec2i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1)); public static function operator implicit(v: Vec2ui): Vec3f := new Vec3f(v.val0, v.val1, 0); public static function operator implicit(v: Vec3f): Vec2ui := new Vec2ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1)); public static function operator implicit(v: Vec2i64): Vec3f := new Vec3f(v.val0, v.val1, 0); public static function operator implicit(v: Vec3f): Vec2i64 := new Vec2i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1)); public static function operator implicit(v: Vec2ui64): Vec3f := new Vec3f(v.val0, v.val1, 0); public static function operator implicit(v: Vec3f): Vec2ui64 := new Vec2ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1)); public static function operator implicit(v: Vec2f): Vec3f := new Vec3f(v.val0, v.val1, 0); public static function operator implicit(v: Vec3f): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec3f := new Vec3f(v.val0, v.val1, 0); public static function operator implicit(v: Vec3f): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec3b := new Vec3b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1), Convert.ToSByte(v.val2)); public static function operator implicit(v: Vec3ub): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec3ub := new Vec3ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1), Convert.ToByte(v.val2)); public static function operator implicit(v: Vec3s): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec3s := new Vec3s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1), Convert.ToInt16(v.val2)); public static function operator implicit(v: Vec3us): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec3us := new Vec3us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1), Convert.ToUInt16(v.val2)); public static function operator implicit(v: Vec3i): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec3i := new Vec3i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1), Convert.ToInt32(v.val2)); public static function operator implicit(v: Vec3ui): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec3ui := new Vec3ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1), Convert.ToUInt32(v.val2)); public static function operator implicit(v: Vec3i64): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec3i64 := new Vec3i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1), Convert.ToInt64(v.val2)); public static function operator implicit(v: Vec3ui64): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec3ui64 := new Vec3ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1), Convert.ToUInt64(v.val2)); public function SqrLength := val0*val0 + val1*val1 + val2*val2; public function Normalized := self / single(Sqrt(self.SqrLength)); public static function CrossCW(v1,v2: Vec3f) := new Vec3f(v1.val1*v2.val2 - v2.val1*v1.val2, v1.val2*v2.val0 - v2.val2*v1.val0, v1.val0*v2.val1 - v2.val0*v1.val1); public static function CrossCCW(v1,v2: Vec3f) := CrossCW(v2,v1); public static function Random(min, max: single): Vec3f; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec3f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2); end; public static function Readln(prompt: string := nil): Vec3f; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec3f; begin Writeln(self.ToString); Result := self; end; end; UseVec3fPtrCallbackP = procedure(var ptr: Vec3f); UseVec3fPtrCallbackF<T> = function(var ptr: Vec3f): T; Vec3d = record public val0: double; public val1: double; public val2: double; public constructor(val0, val1, val2: double); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; end; public static function operator-(v: Vec3d): Vec3d := new Vec3d(-v.val0, -v.val1, -v.val2); public static function operator+(v: Vec3d): Vec3d := v; public static function operator*(v: Vec3d; k: double): Vec3d := new Vec3d(v.val0*k, v.val1*k, v.val2*k); public static function operator/(v: Vec3d; k: double): Vec3d := new Vec3d(v.val0/k, v.val1/k, v.val2/k); public static function operator*(v1, v2: Vec3d): double := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 ); public static function operator+(v1, v2: Vec3d): Vec3d := new Vec3d(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2); public static function operator-(v1, v2: Vec3d): Vec3d := new Vec3d(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2); public static function operator implicit(v: Vec1b): Vec3d := new Vec3d(v.val0, 0, 0); public static function operator implicit(v: Vec3d): Vec1b := new Vec1b(Convert.ToSByte(v.val0)); public static function operator implicit(v: Vec1ub): Vec3d := new Vec3d(v.val0, 0, 0); public static function operator implicit(v: Vec3d): Vec1ub := new Vec1ub(Convert.ToByte(v.val0)); public static function operator implicit(v: Vec1s): Vec3d := new Vec3d(v.val0, 0, 0); public static function operator implicit(v: Vec3d): Vec1s := new Vec1s(Convert.ToInt16(v.val0)); public static function operator implicit(v: Vec1us): Vec3d := new Vec3d(v.val0, 0, 0); public static function operator implicit(v: Vec3d): Vec1us := new Vec1us(Convert.ToUInt16(v.val0)); public static function operator implicit(v: Vec1i): Vec3d := new Vec3d(v.val0, 0, 0); public static function operator implicit(v: Vec3d): Vec1i := new Vec1i(Convert.ToInt32(v.val0)); public static function operator implicit(v: Vec1ui): Vec3d := new Vec3d(v.val0, 0, 0); public static function operator implicit(v: Vec3d): Vec1ui := new Vec1ui(Convert.ToUInt32(v.val0)); public static function operator implicit(v: Vec1i64): Vec3d := new Vec3d(v.val0, 0, 0); public static function operator implicit(v: Vec3d): Vec1i64 := new Vec1i64(Convert.ToInt64(v.val0)); public static function operator implicit(v: Vec1ui64): Vec3d := new Vec3d(v.val0, 0, 0); public static function operator implicit(v: Vec3d): Vec1ui64 := new Vec1ui64(Convert.ToUInt64(v.val0)); public static function operator implicit(v: Vec1f): Vec3d := new Vec3d(v.val0, 0, 0); public static function operator implicit(v: Vec3d): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec3d := new Vec3d(v.val0, 0, 0); public static function operator implicit(v: Vec3d): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec3d := new Vec3d(v.val0, v.val1, 0); public static function operator implicit(v: Vec3d): Vec2b := new Vec2b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1)); public static function operator implicit(v: Vec2ub): Vec3d := new Vec3d(v.val0, v.val1, 0); public static function operator implicit(v: Vec3d): Vec2ub := new Vec2ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1)); public static function operator implicit(v: Vec2s): Vec3d := new Vec3d(v.val0, v.val1, 0); public static function operator implicit(v: Vec3d): Vec2s := new Vec2s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1)); public static function operator implicit(v: Vec2us): Vec3d := new Vec3d(v.val0, v.val1, 0); public static function operator implicit(v: Vec3d): Vec2us := new Vec2us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1)); public static function operator implicit(v: Vec2i): Vec3d := new Vec3d(v.val0, v.val1, 0); public static function operator implicit(v: Vec3d): Vec2i := new Vec2i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1)); public static function operator implicit(v: Vec2ui): Vec3d := new Vec3d(v.val0, v.val1, 0); public static function operator implicit(v: Vec3d): Vec2ui := new Vec2ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1)); public static function operator implicit(v: Vec2i64): Vec3d := new Vec3d(v.val0, v.val1, 0); public static function operator implicit(v: Vec3d): Vec2i64 := new Vec2i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1)); public static function operator implicit(v: Vec2ui64): Vec3d := new Vec3d(v.val0, v.val1, 0); public static function operator implicit(v: Vec3d): Vec2ui64 := new Vec2ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1)); public static function operator implicit(v: Vec2f): Vec3d := new Vec3d(v.val0, v.val1, 0); public static function operator implicit(v: Vec3d): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec3d := new Vec3d(v.val0, v.val1, 0); public static function operator implicit(v: Vec3d): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec3b := new Vec3b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1), Convert.ToSByte(v.val2)); public static function operator implicit(v: Vec3ub): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec3ub := new Vec3ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1), Convert.ToByte(v.val2)); public static function operator implicit(v: Vec3s): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec3s := new Vec3s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1), Convert.ToInt16(v.val2)); public static function operator implicit(v: Vec3us): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec3us := new Vec3us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1), Convert.ToUInt16(v.val2)); public static function operator implicit(v: Vec3i): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec3i := new Vec3i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1), Convert.ToInt32(v.val2)); public static function operator implicit(v: Vec3ui): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec3ui := new Vec3ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1), Convert.ToUInt32(v.val2)); public static function operator implicit(v: Vec3i64): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec3i64 := new Vec3i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1), Convert.ToInt64(v.val2)); public static function operator implicit(v: Vec3ui64): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec3ui64 := new Vec3ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1), Convert.ToUInt64(v.val2)); public static function operator implicit(v: Vec3f): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public function SqrLength := val0*val0 + val1*val1 + val2*val2; public function Normalized := self / self.SqrLength.Sqrt; public static function CrossCW(v1,v2: Vec3d) := new Vec3d(v1.val1*v2.val2 - v2.val1*v1.val2, v1.val2*v2.val0 - v2.val2*v1.val0, v1.val0*v2.val1 - v2.val0*v1.val1); public static function CrossCCW(v1,v2: Vec3d) := CrossCW(v2,v1); public static function Random(min, max: double): Vec3d; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec3d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2); end; public static function Readln(prompt: string := nil): Vec3d; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec3d; begin Writeln(self.ToString); Result := self; end; end; UseVec3dPtrCallbackP = procedure(var ptr: Vec3d); UseVec3dPtrCallbackF<T> = function(var ptr: Vec3d): T; {$endregion Vec3} {$region Vec4} Vec4b = record public val0: SByte; public val1: SByte; public val2: SByte; public val3: SByte; public constructor(val0, val1, val2, val3: SByte); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; self.val3 := val3; end; public static function operator-(v: Vec4b): Vec4b := new Vec4b(-v.val0, -v.val1, -v.val2, -v.val3); public static function operator+(v: Vec4b): Vec4b := v; public static function operator*(v: Vec4b; k: SByte): Vec4b := new Vec4b(v.val0*k, v.val1*k, v.val2*k, v.val3*k); public static function operator div(v: Vec4b; k: SByte): Vec4b := new Vec4b(v.val0 div k, v.val1 div k, v.val2 div k, v.val3 div k); public static function operator*(v1, v2: Vec4b): SByte := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 + v1.val3*v2.val3 ); public static function operator+(v1, v2: Vec4b): Vec4b := new Vec4b(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2, v1.val3+v2.val3); public static function operator-(v1, v2: Vec4b): Vec4b := new Vec4b(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2, v1.val3-v2.val3); public static function operator implicit(v: Vec1b): Vec4b := new Vec4b(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4b): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec4b := new Vec4b(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4b): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec4b := new Vec4b(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4b): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec4b := new Vec4b(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4b): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec4b := new Vec4b(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4b): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec4b := new Vec4b(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4b): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec4b := new Vec4b(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4b): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec4b := new Vec4b(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4b): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec4b := new Vec4b(Convert.ToSByte(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4b): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec4b := new Vec4b(Convert.ToSByte(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4b): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec4b := new Vec4b(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4b): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec4b := new Vec4b(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4b): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec4b := new Vec4b(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4b): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec4b := new Vec4b(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4b): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec4b := new Vec4b(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4b): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec4b := new Vec4b(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4b): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec4b := new Vec4b(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4b): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec4b := new Vec4b(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4b): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec4b := new Vec4b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1), 0, 0); public static function operator implicit(v: Vec4b): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec4b := new Vec4b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1), 0, 0); public static function operator implicit(v: Vec4b): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec4b := new Vec4b(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4b): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec4b := new Vec4b(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4b): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec4b := new Vec4b(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4b): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec4b := new Vec4b(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4b): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec4b := new Vec4b(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4b): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec4b := new Vec4b(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4b): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec4b := new Vec4b(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4b): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec4b := new Vec4b(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4b): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec4b := new Vec4b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1), Convert.ToSByte(v.val2), 0); public static function operator implicit(v: Vec4b): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec4b := new Vec4b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1), Convert.ToSByte(v.val2), 0); public static function operator implicit(v: Vec4b): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public function SqrLength := val0*val0 + val1*val1 + val2*val2 + val3*val3; public static function Random(min, max: SByte): Vec4b; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); Result.val3 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec4b; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2, Result.val3); end; public static function Readln(prompt: string := nil): Vec4b; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2, Result.val3); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ', '; res += val3.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec4b; begin Writeln(self.ToString); Result := self; end; end; Vec4ub = record public val0: Byte; public val1: Byte; public val2: Byte; public val3: Byte; public constructor(val0, val1, val2, val3: Byte); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; self.val3 := val3; end; public static function operator+(v: Vec4ub): Vec4ub := v; public static function operator*(v: Vec4ub; k: Byte): Vec4ub := new Vec4ub(v.val0*k, v.val1*k, v.val2*k, v.val3*k); public static function operator div(v: Vec4ub; k: Byte): Vec4ub := new Vec4ub(v.val0 div k, v.val1 div k, v.val2 div k, v.val3 div k); public static function operator*(v1, v2: Vec4ub): Byte := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 + v1.val3*v2.val3 ); public static function operator+(v1, v2: Vec4ub): Vec4ub := new Vec4ub(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2, v1.val3+v2.val3); public static function operator-(v1, v2: Vec4ub): Vec4ub := new Vec4ub(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2, v1.val3-v2.val3); public static function operator implicit(v: Vec1b): Vec4ub := new Vec4ub(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ub): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec4ub := new Vec4ub(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ub): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec4ub := new Vec4ub(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ub): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec4ub := new Vec4ub(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ub): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec4ub := new Vec4ub(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ub): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec4ub := new Vec4ub(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ub): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec4ub := new Vec4ub(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ub): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec4ub := new Vec4ub(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ub): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec4ub := new Vec4ub(Convert.ToByte(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4ub): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec4ub := new Vec4ub(Convert.ToByte(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4ub): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec4ub := new Vec4ub(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ub): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec4ub := new Vec4ub(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ub): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec4ub := new Vec4ub(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ub): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec4ub := new Vec4ub(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ub): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec4ub := new Vec4ub(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ub): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec4ub := new Vec4ub(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ub): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec4ub := new Vec4ub(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ub): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec4ub := new Vec4ub(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ub): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec4ub := new Vec4ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1), 0, 0); public static function operator implicit(v: Vec4ub): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec4ub := new Vec4ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1), 0, 0); public static function operator implicit(v: Vec4ub): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ub): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ub): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ub): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ub): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ub): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ub): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ub): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ub): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec4ub := new Vec4ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1), Convert.ToByte(v.val2), 0); public static function operator implicit(v: Vec4ub): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec4ub := new Vec4ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1), Convert.ToByte(v.val2), 0); public static function operator implicit(v: Vec4ub): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec4b): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ub): Vec4b := new Vec4b(v.val0, v.val1, v.val2, v.val3); public function SqrLength := val0*val0 + val1*val1 + val2*val2 + val3*val3; public static function Random(min, max: Byte): Vec4ub; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); Result.val3 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec4ub; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2, Result.val3); end; public static function Readln(prompt: string := nil): Vec4ub; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2, Result.val3); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ', '; res += val3.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec4ub; begin Writeln(self.ToString); Result := self; end; end; Vec4s = record public val0: Int16; public val1: Int16; public val2: Int16; public val3: Int16; public constructor(val0, val1, val2, val3: Int16); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; self.val3 := val3; end; public static function operator-(v: Vec4s): Vec4s := new Vec4s(-v.val0, -v.val1, -v.val2, -v.val3); public static function operator+(v: Vec4s): Vec4s := v; public static function operator*(v: Vec4s; k: Int16): Vec4s := new Vec4s(v.val0*k, v.val1*k, v.val2*k, v.val3*k); public static function operator div(v: Vec4s; k: Int16): Vec4s := new Vec4s(v.val0 div k, v.val1 div k, v.val2 div k, v.val3 div k); public static function operator*(v1, v2: Vec4s): Int16 := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 + v1.val3*v2.val3 ); public static function operator+(v1, v2: Vec4s): Vec4s := new Vec4s(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2, v1.val3+v2.val3); public static function operator-(v1, v2: Vec4s): Vec4s := new Vec4s(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2, v1.val3-v2.val3); public static function operator implicit(v: Vec1b): Vec4s := new Vec4s(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4s): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec4s := new Vec4s(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4s): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec4s := new Vec4s(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4s): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec4s := new Vec4s(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4s): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec4s := new Vec4s(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4s): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec4s := new Vec4s(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4s): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec4s := new Vec4s(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4s): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec4s := new Vec4s(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4s): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec4s := new Vec4s(Convert.ToInt16(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4s): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec4s := new Vec4s(Convert.ToInt16(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4s): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec4s := new Vec4s(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4s): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec4s := new Vec4s(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4s): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec4s := new Vec4s(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4s): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec4s := new Vec4s(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4s): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec4s := new Vec4s(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4s): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec4s := new Vec4s(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4s): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec4s := new Vec4s(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4s): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec4s := new Vec4s(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4s): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec4s := new Vec4s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1), 0, 0); public static function operator implicit(v: Vec4s): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec4s := new Vec4s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1), 0, 0); public static function operator implicit(v: Vec4s): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec4s := new Vec4s(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4s): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec4s := new Vec4s(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4s): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec4s := new Vec4s(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4s): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec4s := new Vec4s(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4s): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec4s := new Vec4s(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4s): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec4s := new Vec4s(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4s): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec4s := new Vec4s(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4s): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec4s := new Vec4s(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4s): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec4s := new Vec4s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1), Convert.ToInt16(v.val2), 0); public static function operator implicit(v: Vec4s): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec4s := new Vec4s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1), Convert.ToInt16(v.val2), 0); public static function operator implicit(v: Vec4s): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec4b): Vec4s := new Vec4s(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4s): Vec4b := new Vec4b(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ub): Vec4s := new Vec4s(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4s): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, v.val3); public function SqrLength := val0*val0 + val1*val1 + val2*val2 + val3*val3; public static function Random(min, max: Int16): Vec4s; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); Result.val3 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec4s; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2, Result.val3); end; public static function Readln(prompt: string := nil): Vec4s; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2, Result.val3); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ', '; res += val3.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec4s; begin Writeln(self.ToString); Result := self; end; end; Vec4us = record public val0: UInt16; public val1: UInt16; public val2: UInt16; public val3: UInt16; public constructor(val0, val1, val2, val3: UInt16); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; self.val3 := val3; end; public static function operator+(v: Vec4us): Vec4us := v; public static function operator*(v: Vec4us; k: UInt16): Vec4us := new Vec4us(v.val0*k, v.val1*k, v.val2*k, v.val3*k); public static function operator div(v: Vec4us; k: UInt16): Vec4us := new Vec4us(v.val0 div k, v.val1 div k, v.val2 div k, v.val3 div k); public static function operator*(v1, v2: Vec4us): UInt16 := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 + v1.val3*v2.val3 ); public static function operator+(v1, v2: Vec4us): Vec4us := new Vec4us(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2, v1.val3+v2.val3); public static function operator-(v1, v2: Vec4us): Vec4us := new Vec4us(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2, v1.val3-v2.val3); public static function operator implicit(v: Vec1b): Vec4us := new Vec4us(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4us): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec4us := new Vec4us(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4us): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec4us := new Vec4us(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4us): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec4us := new Vec4us(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4us): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec4us := new Vec4us(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4us): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec4us := new Vec4us(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4us): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec4us := new Vec4us(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4us): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec4us := new Vec4us(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4us): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec4us := new Vec4us(Convert.ToUInt16(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4us): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec4us := new Vec4us(Convert.ToUInt16(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4us): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec4us := new Vec4us(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4us): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec4us := new Vec4us(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4us): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec4us := new Vec4us(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4us): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec4us := new Vec4us(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4us): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec4us := new Vec4us(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4us): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec4us := new Vec4us(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4us): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec4us := new Vec4us(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4us): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec4us := new Vec4us(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4us): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec4us := new Vec4us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1), 0, 0); public static function operator implicit(v: Vec4us): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec4us := new Vec4us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1), 0, 0); public static function operator implicit(v: Vec4us): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec4us := new Vec4us(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4us): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec4us := new Vec4us(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4us): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec4us := new Vec4us(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4us): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec4us := new Vec4us(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4us): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec4us := new Vec4us(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4us): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec4us := new Vec4us(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4us): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec4us := new Vec4us(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4us): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec4us := new Vec4us(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4us): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec4us := new Vec4us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1), Convert.ToUInt16(v.val2), 0); public static function operator implicit(v: Vec4us): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec4us := new Vec4us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1), Convert.ToUInt16(v.val2), 0); public static function operator implicit(v: Vec4us): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec4b): Vec4us := new Vec4us(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4us): Vec4b := new Vec4b(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ub): Vec4us := new Vec4us(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4us): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4s): Vec4us := new Vec4us(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4us): Vec4s := new Vec4s(v.val0, v.val1, v.val2, v.val3); public function SqrLength := val0*val0 + val1*val1 + val2*val2 + val3*val3; public static function Random(min, max: UInt16): Vec4us; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); Result.val3 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec4us; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2, Result.val3); end; public static function Readln(prompt: string := nil): Vec4us; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2, Result.val3); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ', '; res += val3.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec4us; begin Writeln(self.ToString); Result := self; end; end; Vec4i = record public val0: Int32; public val1: Int32; public val2: Int32; public val3: Int32; public constructor(val0, val1, val2, val3: Int32); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; self.val3 := val3; end; public static function operator-(v: Vec4i): Vec4i := new Vec4i(-v.val0, -v.val1, -v.val2, -v.val3); public static function operator+(v: Vec4i): Vec4i := v; public static function operator*(v: Vec4i; k: Int32): Vec4i := new Vec4i(v.val0*k, v.val1*k, v.val2*k, v.val3*k); public static function operator div(v: Vec4i; k: Int32): Vec4i := new Vec4i(v.val0 div k, v.val1 div k, v.val2 div k, v.val3 div k); public static function operator*(v1, v2: Vec4i): Int32 := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 + v1.val3*v2.val3 ); public static function operator+(v1, v2: Vec4i): Vec4i := new Vec4i(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2, v1.val3+v2.val3); public static function operator-(v1, v2: Vec4i): Vec4i := new Vec4i(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2, v1.val3-v2.val3); public static function operator implicit(v: Vec1b): Vec4i := new Vec4i(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec4i := new Vec4i(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec4i := new Vec4i(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec4i := new Vec4i(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec4i := new Vec4i(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec4i := new Vec4i(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec4i := new Vec4i(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec4i := new Vec4i(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec4i := new Vec4i(Convert.ToInt32(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4i): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec4i := new Vec4i(Convert.ToInt32(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4i): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec4i := new Vec4i(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec4i := new Vec4i(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec4i := new Vec4i(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec4i := new Vec4i(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec4i := new Vec4i(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec4i := new Vec4i(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec4i := new Vec4i(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec4i := new Vec4i(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec4i := new Vec4i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1), 0, 0); public static function operator implicit(v: Vec4i): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec4i := new Vec4i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1), 0, 0); public static function operator implicit(v: Vec4i): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec4i := new Vec4i(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec4i := new Vec4i(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec4i := new Vec4i(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec4i := new Vec4i(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec4i := new Vec4i(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec4i := new Vec4i(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec4i := new Vec4i(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec4i := new Vec4i(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec4i := new Vec4i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1), Convert.ToInt32(v.val2), 0); public static function operator implicit(v: Vec4i): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec4i := new Vec4i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1), Convert.ToInt32(v.val2), 0); public static function operator implicit(v: Vec4i): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec4b): Vec4i := new Vec4i(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4i): Vec4b := new Vec4b(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ub): Vec4i := new Vec4i(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4i): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4s): Vec4i := new Vec4i(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4i): Vec4s := new Vec4s(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4us): Vec4i := new Vec4i(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4i): Vec4us := new Vec4us(v.val0, v.val1, v.val2, v.val3); public function SqrLength := val0*val0 + val1*val1 + val2*val2 + val3*val3; public static function Random(min, max: Int32): Vec4i; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); Result.val3 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec4i; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2, Result.val3); end; public static function Readln(prompt: string := nil): Vec4i; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2, Result.val3); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ', '; res += val3.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec4i; begin Writeln(self.ToString); Result := self; end; end; Vec4ui = record public val0: UInt32; public val1: UInt32; public val2: UInt32; public val3: UInt32; public constructor(val0, val1, val2, val3: UInt32); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; self.val3 := val3; end; public static function operator+(v: Vec4ui): Vec4ui := v; public static function operator*(v: Vec4ui; k: UInt32): Vec4ui := new Vec4ui(v.val0*k, v.val1*k, v.val2*k, v.val3*k); public static function operator div(v: Vec4ui; k: UInt32): Vec4ui := new Vec4ui(v.val0 div k, v.val1 div k, v.val2 div k, v.val3 div k); public static function operator*(v1, v2: Vec4ui): UInt32 := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 + v1.val3*v2.val3 ); public static function operator+(v1, v2: Vec4ui): Vec4ui := new Vec4ui(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2, v1.val3+v2.val3); public static function operator-(v1, v2: Vec4ui): Vec4ui := new Vec4ui(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2, v1.val3-v2.val3); public static function operator implicit(v: Vec1b): Vec4ui := new Vec4ui(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec4ui := new Vec4ui(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec4ui := new Vec4ui(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec4ui := new Vec4ui(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec4ui := new Vec4ui(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec4ui := new Vec4ui(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec4ui := new Vec4ui(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec4ui := new Vec4ui(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec4ui := new Vec4ui(Convert.ToUInt32(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4ui): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec4ui := new Vec4ui(Convert.ToUInt32(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4ui): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec4ui := new Vec4ui(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec4ui := new Vec4ui(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec4ui := new Vec4ui(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec4ui := new Vec4ui(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec4ui := new Vec4ui(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec4ui := new Vec4ui(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec4ui := new Vec4ui(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec4ui := new Vec4ui(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec4ui := new Vec4ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1), 0, 0); public static function operator implicit(v: Vec4ui): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec4ui := new Vec4ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1), 0, 0); public static function operator implicit(v: Vec4ui): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec4ui := new Vec4ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1), Convert.ToUInt32(v.val2), 0); public static function operator implicit(v: Vec4ui): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec4ui := new Vec4ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1), Convert.ToUInt32(v.val2), 0); public static function operator implicit(v: Vec4ui): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec4b): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ui): Vec4b := new Vec4b(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ub): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ui): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4s): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ui): Vec4s := new Vec4s(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4us): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ui): Vec4us := new Vec4us(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4i): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ui): Vec4i := new Vec4i(v.val0, v.val1, v.val2, v.val3); public function SqrLength := val0*val0 + val1*val1 + val2*val2 + val3*val3; public static function Random(min, max: UInt32): Vec4ui; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); Result.val3 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec4ui; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2, Result.val3); end; public static function Readln(prompt: string := nil): Vec4ui; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2, Result.val3); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ', '; res += val3.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec4ui; begin Writeln(self.ToString); Result := self; end; end; Vec4i64 = record public val0: Int64; public val1: Int64; public val2: Int64; public val3: Int64; public constructor(val0, val1, val2, val3: Int64); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; self.val3 := val3; end; public static function operator-(v: Vec4i64): Vec4i64 := new Vec4i64(-v.val0, -v.val1, -v.val2, -v.val3); public static function operator+(v: Vec4i64): Vec4i64 := v; public static function operator*(v: Vec4i64; k: Int64): Vec4i64 := new Vec4i64(v.val0*k, v.val1*k, v.val2*k, v.val3*k); public static function operator div(v: Vec4i64; k: Int64): Vec4i64 := new Vec4i64(v.val0 div k, v.val1 div k, v.val2 div k, v.val3 div k); public static function operator*(v1, v2: Vec4i64): Int64 := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 + v1.val3*v2.val3 ); public static function operator+(v1, v2: Vec4i64): Vec4i64 := new Vec4i64(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2, v1.val3+v2.val3); public static function operator-(v1, v2: Vec4i64): Vec4i64 := new Vec4i64(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2, v1.val3-v2.val3); public static function operator implicit(v: Vec1b): Vec4i64 := new Vec4i64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i64): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec4i64 := new Vec4i64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i64): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec4i64 := new Vec4i64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i64): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec4i64 := new Vec4i64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i64): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec4i64 := new Vec4i64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i64): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec4i64 := new Vec4i64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i64): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec4i64 := new Vec4i64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i64): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec4i64 := new Vec4i64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4i64): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec4i64 := new Vec4i64(Convert.ToInt64(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4i64): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec4i64 := new Vec4i64(Convert.ToInt64(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4i64): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec4i64 := new Vec4i64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i64): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec4i64 := new Vec4i64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i64): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec4i64 := new Vec4i64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i64): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec4i64 := new Vec4i64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i64): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec4i64 := new Vec4i64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i64): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec4i64 := new Vec4i64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i64): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec4i64 := new Vec4i64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i64): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec4i64 := new Vec4i64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4i64): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec4i64 := new Vec4i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1), 0, 0); public static function operator implicit(v: Vec4i64): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec4i64 := new Vec4i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1), 0, 0); public static function operator implicit(v: Vec4i64): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i64): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i64): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i64): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i64): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i64): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i64): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i64): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4i64): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec4i64 := new Vec4i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1), Convert.ToInt64(v.val2), 0); public static function operator implicit(v: Vec4i64): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec4i64 := new Vec4i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1), Convert.ToInt64(v.val2), 0); public static function operator implicit(v: Vec4i64): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec4b): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4i64): Vec4b := new Vec4b(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ub): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4i64): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4s): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4i64): Vec4s := new Vec4s(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4us): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4i64): Vec4us := new Vec4us(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4i): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4i64): Vec4i := new Vec4i(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ui): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4i64): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, v.val3); public function SqrLength := val0*val0 + val1*val1 + val2*val2 + val3*val3; public static function Random(min, max: Int64): Vec4i64; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); Result.val3 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec4i64; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2, Result.val3); end; public static function Readln(prompt: string := nil): Vec4i64; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2, Result.val3); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ', '; res += val3.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec4i64; begin Writeln(self.ToString); Result := self; end; end; Vec4ui64 = record public val0: UInt64; public val1: UInt64; public val2: UInt64; public val3: UInt64; public constructor(val0, val1, val2, val3: UInt64); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; self.val3 := val3; end; public static function operator+(v: Vec4ui64): Vec4ui64 := v; public static function operator*(v: Vec4ui64; k: UInt64): Vec4ui64 := new Vec4ui64(v.val0*k, v.val1*k, v.val2*k, v.val3*k); public static function operator div(v: Vec4ui64; k: UInt64): Vec4ui64 := new Vec4ui64(v.val0 div k, v.val1 div k, v.val2 div k, v.val3 div k); public static function operator*(v1, v2: Vec4ui64): UInt64 := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 + v1.val3*v2.val3 ); public static function operator+(v1, v2: Vec4ui64): Vec4ui64 := new Vec4ui64(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2, v1.val3+v2.val3); public static function operator-(v1, v2: Vec4ui64): Vec4ui64 := new Vec4ui64(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2, v1.val3-v2.val3); public static function operator implicit(v: Vec1b): Vec4ui64 := new Vec4ui64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui64): Vec1b := new Vec1b(v.val0); public static function operator implicit(v: Vec1ub): Vec4ui64 := new Vec4ui64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui64): Vec1ub := new Vec1ub(v.val0); public static function operator implicit(v: Vec1s): Vec4ui64 := new Vec4ui64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui64): Vec1s := new Vec1s(v.val0); public static function operator implicit(v: Vec1us): Vec4ui64 := new Vec4ui64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui64): Vec1us := new Vec1us(v.val0); public static function operator implicit(v: Vec1i): Vec4ui64 := new Vec4ui64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui64): Vec1i := new Vec1i(v.val0); public static function operator implicit(v: Vec1ui): Vec4ui64 := new Vec4ui64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui64): Vec1ui := new Vec1ui(v.val0); public static function operator implicit(v: Vec1i64): Vec4ui64 := new Vec4ui64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui64): Vec1i64 := new Vec1i64(v.val0); public static function operator implicit(v: Vec1ui64): Vec4ui64 := new Vec4ui64(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4ui64): Vec1ui64 := new Vec1ui64(v.val0); public static function operator implicit(v: Vec1f): Vec4ui64 := new Vec4ui64(Convert.ToUInt64(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4ui64): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec4ui64 := new Vec4ui64(Convert.ToUInt64(v.val0), 0, 0, 0); public static function operator implicit(v: Vec4ui64): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec4ui64 := new Vec4ui64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui64): Vec2b := new Vec2b(v.val0, v.val1); public static function operator implicit(v: Vec2ub): Vec4ui64 := new Vec4ui64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui64): Vec2ub := new Vec2ub(v.val0, v.val1); public static function operator implicit(v: Vec2s): Vec4ui64 := new Vec4ui64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui64): Vec2s := new Vec2s(v.val0, v.val1); public static function operator implicit(v: Vec2us): Vec4ui64 := new Vec4ui64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui64): Vec2us := new Vec2us(v.val0, v.val1); public static function operator implicit(v: Vec2i): Vec4ui64 := new Vec4ui64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui64): Vec2i := new Vec2i(v.val0, v.val1); public static function operator implicit(v: Vec2ui): Vec4ui64 := new Vec4ui64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui64): Vec2ui := new Vec2ui(v.val0, v.val1); public static function operator implicit(v: Vec2i64): Vec4ui64 := new Vec4ui64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui64): Vec2i64 := new Vec2i64(v.val0, v.val1); public static function operator implicit(v: Vec2ui64): Vec4ui64 := new Vec4ui64(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4ui64): Vec2ui64 := new Vec2ui64(v.val0, v.val1); public static function operator implicit(v: Vec2f): Vec4ui64 := new Vec4ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1), 0, 0); public static function operator implicit(v: Vec4ui64): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec4ui64 := new Vec4ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1), 0, 0); public static function operator implicit(v: Vec4ui64): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui64): Vec3b := new Vec3b(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ub): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui64): Vec3ub := new Vec3ub(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3s): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui64): Vec3s := new Vec3s(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3us): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui64): Vec3us := new Vec3us(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui64): Vec3i := new Vec3i(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui64): Vec3ui := new Vec3ui(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3i64): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui64): Vec3i64 := new Vec3i64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3ui64): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4ui64): Vec3ui64 := new Vec3ui64(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3f): Vec4ui64 := new Vec4ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1), Convert.ToUInt64(v.val2), 0); public static function operator implicit(v: Vec4ui64): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec4ui64 := new Vec4ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1), Convert.ToUInt64(v.val2), 0); public static function operator implicit(v: Vec4ui64): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec4b): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ui64): Vec4b := new Vec4b(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ub): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ui64): Vec4ub := new Vec4ub(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4s): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ui64): Vec4s := new Vec4s(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4us): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ui64): Vec4us := new Vec4us(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4i): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ui64): Vec4i := new Vec4i(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ui): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ui64): Vec4ui := new Vec4ui(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4i64): Vec4ui64 := new Vec4ui64(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4ui64): Vec4i64 := new Vec4i64(v.val0, v.val1, v.val2, v.val3); public function SqrLength := val0*val0 + val1*val1 + val2*val2 + val3*val3; public static function Random(min, max: UInt64): Vec4ui64; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); Result.val3 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec4ui64; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2, Result.val3); end; public static function Readln(prompt: string := nil): Vec4ui64; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2, Result.val3); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ', '; res += val3.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec4ui64; begin Writeln(self.ToString); Result := self; end; end; Vec4f = record public val0: single; public val1: single; public val2: single; public val3: single; public constructor(val0, val1, val2, val3: single); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; self.val3 := val3; end; public static function operator-(v: Vec4f): Vec4f := new Vec4f(-v.val0, -v.val1, -v.val2, -v.val3); public static function operator+(v: Vec4f): Vec4f := v; public static function operator*(v: Vec4f; k: single): Vec4f := new Vec4f(v.val0*k, v.val1*k, v.val2*k, v.val3*k); public static function operator/(v: Vec4f; k: single): Vec4f := new Vec4f(v.val0/k, v.val1/k, v.val2/k, v.val3/k); public static function operator*(v1, v2: Vec4f): single := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 + v1.val3*v2.val3 ); public static function operator+(v1, v2: Vec4f): Vec4f := new Vec4f(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2, v1.val3+v2.val3); public static function operator-(v1, v2: Vec4f): Vec4f := new Vec4f(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2, v1.val3-v2.val3); public static function operator implicit(v: Vec1b): Vec4f := new Vec4f(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4f): Vec1b := new Vec1b(Convert.ToSByte(v.val0)); public static function operator implicit(v: Vec1ub): Vec4f := new Vec4f(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4f): Vec1ub := new Vec1ub(Convert.ToByte(v.val0)); public static function operator implicit(v: Vec1s): Vec4f := new Vec4f(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4f): Vec1s := new Vec1s(Convert.ToInt16(v.val0)); public static function operator implicit(v: Vec1us): Vec4f := new Vec4f(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4f): Vec1us := new Vec1us(Convert.ToUInt16(v.val0)); public static function operator implicit(v: Vec1i): Vec4f := new Vec4f(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4f): Vec1i := new Vec1i(Convert.ToInt32(v.val0)); public static function operator implicit(v: Vec1ui): Vec4f := new Vec4f(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4f): Vec1ui := new Vec1ui(Convert.ToUInt32(v.val0)); public static function operator implicit(v: Vec1i64): Vec4f := new Vec4f(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4f): Vec1i64 := new Vec1i64(Convert.ToInt64(v.val0)); public static function operator implicit(v: Vec1ui64): Vec4f := new Vec4f(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4f): Vec1ui64 := new Vec1ui64(Convert.ToUInt64(v.val0)); public static function operator implicit(v: Vec1f): Vec4f := new Vec4f(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4f): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec4f := new Vec4f(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4f): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec4f := new Vec4f(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4f): Vec2b := new Vec2b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1)); public static function operator implicit(v: Vec2ub): Vec4f := new Vec4f(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4f): Vec2ub := new Vec2ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1)); public static function operator implicit(v: Vec2s): Vec4f := new Vec4f(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4f): Vec2s := new Vec2s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1)); public static function operator implicit(v: Vec2us): Vec4f := new Vec4f(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4f): Vec2us := new Vec2us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1)); public static function operator implicit(v: Vec2i): Vec4f := new Vec4f(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4f): Vec2i := new Vec2i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1)); public static function operator implicit(v: Vec2ui): Vec4f := new Vec4f(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4f): Vec2ui := new Vec2ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1)); public static function operator implicit(v: Vec2i64): Vec4f := new Vec4f(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4f): Vec2i64 := new Vec2i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1)); public static function operator implicit(v: Vec2ui64): Vec4f := new Vec4f(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4f): Vec2ui64 := new Vec2ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1)); public static function operator implicit(v: Vec2f): Vec4f := new Vec4f(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4f): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec4f := new Vec4f(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4f): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec4f := new Vec4f(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4f): Vec3b := new Vec3b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1), Convert.ToSByte(v.val2)); public static function operator implicit(v: Vec3ub): Vec4f := new Vec4f(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4f): Vec3ub := new Vec3ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1), Convert.ToByte(v.val2)); public static function operator implicit(v: Vec3s): Vec4f := new Vec4f(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4f): Vec3s := new Vec3s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1), Convert.ToInt16(v.val2)); public static function operator implicit(v: Vec3us): Vec4f := new Vec4f(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4f): Vec3us := new Vec3us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1), Convert.ToUInt16(v.val2)); public static function operator implicit(v: Vec3i): Vec4f := new Vec4f(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4f): Vec3i := new Vec3i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1), Convert.ToInt32(v.val2)); public static function operator implicit(v: Vec3ui): Vec4f := new Vec4f(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4f): Vec3ui := new Vec3ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1), Convert.ToUInt32(v.val2)); public static function operator implicit(v: Vec3i64): Vec4f := new Vec4f(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4f): Vec3i64 := new Vec3i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1), Convert.ToInt64(v.val2)); public static function operator implicit(v: Vec3ui64): Vec4f := new Vec4f(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4f): Vec3ui64 := new Vec3ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1), Convert.ToUInt64(v.val2)); public static function operator implicit(v: Vec3f): Vec4f := new Vec4f(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4f): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec4f := new Vec4f(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4f): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec4b): Vec4f := new Vec4f(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4f): Vec4b := new Vec4b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1), Convert.ToSByte(v.val2), Convert.ToSByte(v.val3)); public static function operator implicit(v: Vec4ub): Vec4f := new Vec4f(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4f): Vec4ub := new Vec4ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1), Convert.ToByte(v.val2), Convert.ToByte(v.val3)); public static function operator implicit(v: Vec4s): Vec4f := new Vec4f(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4f): Vec4s := new Vec4s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1), Convert.ToInt16(v.val2), Convert.ToInt16(v.val3)); public static function operator implicit(v: Vec4us): Vec4f := new Vec4f(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4f): Vec4us := new Vec4us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1), Convert.ToUInt16(v.val2), Convert.ToUInt16(v.val3)); public static function operator implicit(v: Vec4i): Vec4f := new Vec4f(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4f): Vec4i := new Vec4i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1), Convert.ToInt32(v.val2), Convert.ToInt32(v.val3)); public static function operator implicit(v: Vec4ui): Vec4f := new Vec4f(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4f): Vec4ui := new Vec4ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1), Convert.ToUInt32(v.val2), Convert.ToUInt32(v.val3)); public static function operator implicit(v: Vec4i64): Vec4f := new Vec4f(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4f): Vec4i64 := new Vec4i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1), Convert.ToInt64(v.val2), Convert.ToInt64(v.val3)); public static function operator implicit(v: Vec4ui64): Vec4f := new Vec4f(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4f): Vec4ui64 := new Vec4ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1), Convert.ToUInt64(v.val2), Convert.ToUInt64(v.val3)); public function SqrLength := val0*val0 + val1*val1 + val2*val2 + val3*val3; public function Normalized := self / single(Sqrt(self.SqrLength)); public static function Random(min, max: single): Vec4f; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); Result.val3 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec4f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2, Result.val3); end; public static function Readln(prompt: string := nil): Vec4f; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2, Result.val3); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ', '; res += val3.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec4f; begin Writeln(self.ToString); Result := self; end; end; UseVec4fPtrCallbackP = procedure(var ptr: Vec4f); UseVec4fPtrCallbackF<T> = function(var ptr: Vec4f): T; Vec4d = record public val0: double; public val1: double; public val2: double; public val3: double; public constructor(val0, val1, val2, val3: double); begin self.val0 := val0; self.val1 := val1; self.val2 := val2; self.val3 := val3; end; public static function operator-(v: Vec4d): Vec4d := new Vec4d(-v.val0, -v.val1, -v.val2, -v.val3); public static function operator+(v: Vec4d): Vec4d := v; public static function operator*(v: Vec4d; k: double): Vec4d := new Vec4d(v.val0*k, v.val1*k, v.val2*k, v.val3*k); public static function operator/(v: Vec4d; k: double): Vec4d := new Vec4d(v.val0/k, v.val1/k, v.val2/k, v.val3/k); public static function operator*(v1, v2: Vec4d): double := ( v1.val0*v2.val0 + v1.val1*v2.val1 + v1.val2*v2.val2 + v1.val3*v2.val3 ); public static function operator+(v1, v2: Vec4d): Vec4d := new Vec4d(v1.val0+v2.val0, v1.val1+v2.val1, v1.val2+v2.val2, v1.val3+v2.val3); public static function operator-(v1, v2: Vec4d): Vec4d := new Vec4d(v1.val0-v2.val0, v1.val1-v2.val1, v1.val2-v2.val2, v1.val3-v2.val3); public static function operator implicit(v: Vec1b): Vec4d := new Vec4d(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4d): Vec1b := new Vec1b(Convert.ToSByte(v.val0)); public static function operator implicit(v: Vec1ub): Vec4d := new Vec4d(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4d): Vec1ub := new Vec1ub(Convert.ToByte(v.val0)); public static function operator implicit(v: Vec1s): Vec4d := new Vec4d(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4d): Vec1s := new Vec1s(Convert.ToInt16(v.val0)); public static function operator implicit(v: Vec1us): Vec4d := new Vec4d(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4d): Vec1us := new Vec1us(Convert.ToUInt16(v.val0)); public static function operator implicit(v: Vec1i): Vec4d := new Vec4d(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4d): Vec1i := new Vec1i(Convert.ToInt32(v.val0)); public static function operator implicit(v: Vec1ui): Vec4d := new Vec4d(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4d): Vec1ui := new Vec1ui(Convert.ToUInt32(v.val0)); public static function operator implicit(v: Vec1i64): Vec4d := new Vec4d(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4d): Vec1i64 := new Vec1i64(Convert.ToInt64(v.val0)); public static function operator implicit(v: Vec1ui64): Vec4d := new Vec4d(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4d): Vec1ui64 := new Vec1ui64(Convert.ToUInt64(v.val0)); public static function operator implicit(v: Vec1f): Vec4d := new Vec4d(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4d): Vec1f := new Vec1f(v.val0); public static function operator implicit(v: Vec1d): Vec4d := new Vec4d(v.val0, 0, 0, 0); public static function operator implicit(v: Vec4d): Vec1d := new Vec1d(v.val0); public static function operator implicit(v: Vec2b): Vec4d := new Vec4d(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4d): Vec2b := new Vec2b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1)); public static function operator implicit(v: Vec2ub): Vec4d := new Vec4d(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4d): Vec2ub := new Vec2ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1)); public static function operator implicit(v: Vec2s): Vec4d := new Vec4d(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4d): Vec2s := new Vec2s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1)); public static function operator implicit(v: Vec2us): Vec4d := new Vec4d(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4d): Vec2us := new Vec2us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1)); public static function operator implicit(v: Vec2i): Vec4d := new Vec4d(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4d): Vec2i := new Vec2i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1)); public static function operator implicit(v: Vec2ui): Vec4d := new Vec4d(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4d): Vec2ui := new Vec2ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1)); public static function operator implicit(v: Vec2i64): Vec4d := new Vec4d(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4d): Vec2i64 := new Vec2i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1)); public static function operator implicit(v: Vec2ui64): Vec4d := new Vec4d(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4d): Vec2ui64 := new Vec2ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1)); public static function operator implicit(v: Vec2f): Vec4d := new Vec4d(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4d): Vec2f := new Vec2f(v.val0, v.val1); public static function operator implicit(v: Vec2d): Vec4d := new Vec4d(v.val0, v.val1, 0, 0); public static function operator implicit(v: Vec4d): Vec2d := new Vec2d(v.val0, v.val1); public static function operator implicit(v: Vec3b): Vec4d := new Vec4d(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4d): Vec3b := new Vec3b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1), Convert.ToSByte(v.val2)); public static function operator implicit(v: Vec3ub): Vec4d := new Vec4d(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4d): Vec3ub := new Vec3ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1), Convert.ToByte(v.val2)); public static function operator implicit(v: Vec3s): Vec4d := new Vec4d(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4d): Vec3s := new Vec3s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1), Convert.ToInt16(v.val2)); public static function operator implicit(v: Vec3us): Vec4d := new Vec4d(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4d): Vec3us := new Vec3us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1), Convert.ToUInt16(v.val2)); public static function operator implicit(v: Vec3i): Vec4d := new Vec4d(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4d): Vec3i := new Vec3i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1), Convert.ToInt32(v.val2)); public static function operator implicit(v: Vec3ui): Vec4d := new Vec4d(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4d): Vec3ui := new Vec3ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1), Convert.ToUInt32(v.val2)); public static function operator implicit(v: Vec3i64): Vec4d := new Vec4d(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4d): Vec3i64 := new Vec3i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1), Convert.ToInt64(v.val2)); public static function operator implicit(v: Vec3ui64): Vec4d := new Vec4d(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4d): Vec3ui64 := new Vec3ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1), Convert.ToUInt64(v.val2)); public static function operator implicit(v: Vec3f): Vec4d := new Vec4d(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4d): Vec3f := new Vec3f(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec3d): Vec4d := new Vec4d(v.val0, v.val1, v.val2, 0); public static function operator implicit(v: Vec4d): Vec3d := new Vec3d(v.val0, v.val1, v.val2); public static function operator implicit(v: Vec4b): Vec4d := new Vec4d(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4d): Vec4b := new Vec4b(Convert.ToSByte(v.val0), Convert.ToSByte(v.val1), Convert.ToSByte(v.val2), Convert.ToSByte(v.val3)); public static function operator implicit(v: Vec4ub): Vec4d := new Vec4d(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4d): Vec4ub := new Vec4ub(Convert.ToByte(v.val0), Convert.ToByte(v.val1), Convert.ToByte(v.val2), Convert.ToByte(v.val3)); public static function operator implicit(v: Vec4s): Vec4d := new Vec4d(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4d): Vec4s := new Vec4s(Convert.ToInt16(v.val0), Convert.ToInt16(v.val1), Convert.ToInt16(v.val2), Convert.ToInt16(v.val3)); public static function operator implicit(v: Vec4us): Vec4d := new Vec4d(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4d): Vec4us := new Vec4us(Convert.ToUInt16(v.val0), Convert.ToUInt16(v.val1), Convert.ToUInt16(v.val2), Convert.ToUInt16(v.val3)); public static function operator implicit(v: Vec4i): Vec4d := new Vec4d(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4d): Vec4i := new Vec4i(Convert.ToInt32(v.val0), Convert.ToInt32(v.val1), Convert.ToInt32(v.val2), Convert.ToInt32(v.val3)); public static function operator implicit(v: Vec4ui): Vec4d := new Vec4d(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4d): Vec4ui := new Vec4ui(Convert.ToUInt32(v.val0), Convert.ToUInt32(v.val1), Convert.ToUInt32(v.val2), Convert.ToUInt32(v.val3)); public static function operator implicit(v: Vec4i64): Vec4d := new Vec4d(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4d): Vec4i64 := new Vec4i64(Convert.ToInt64(v.val0), Convert.ToInt64(v.val1), Convert.ToInt64(v.val2), Convert.ToInt64(v.val3)); public static function operator implicit(v: Vec4ui64): Vec4d := new Vec4d(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4d): Vec4ui64 := new Vec4ui64(Convert.ToUInt64(v.val0), Convert.ToUInt64(v.val1), Convert.ToUInt64(v.val2), Convert.ToUInt64(v.val3)); public static function operator implicit(v: Vec4f): Vec4d := new Vec4d(v.val0, v.val1, v.val2, v.val3); public static function operator implicit(v: Vec4d): Vec4f := new Vec4f(v.val0, v.val1, v.val2, v.val3); public function SqrLength := val0*val0 + val1*val1 + val2*val2 + val3*val3; public function Normalized := self / self.SqrLength.Sqrt; public static function Random(min, max: double): Vec4d; begin if min>max then Swap(min,max); var r := max-min; Result.val0 := min + PABCSystem.Random(r); Result.val1 := min + PABCSystem.Random(r); Result.val2 := min + PABCSystem.Random(r); Result.val3 := min + PABCSystem.Random(r); end; public static function Read(prompt: string := nil): Vec4d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val0, Result.val1, Result.val2, Result.val3); end; public static function Readln(prompt: string := nil): Vec4d; begin if prompt <> nil then prompt.Print; PABCSystem.Readln(Result.val0, Result.val1, Result.val2, Result.val3); end; public function ToString: string; override; begin var res := new StringBuilder; res += '[ '; res += val0.ToString('f2'); res += ', '; res += val1.ToString('f2'); res += ', '; res += val2.ToString('f2'); res += ', '; res += val3.ToString('f2'); res += ' ]'; Result := res.ToString; end; public function Println: Vec4d; begin Writeln(self.ToString); Result := self; end; end; UseVec4dPtrCallbackP = procedure(var ptr: Vec4d); UseVec4dPtrCallbackF<T> = function(var ptr: Vec4d): T; {$endregion Vec4} {$endregion Vec} {$region Mtr} Mtr2x2f = record public val00, val10: single; public val01, val11: single; public constructor(val00, val01, val10, val11: single); begin self.val00 := val00; self.val01 := val01; self.val10 := val10; self.val11 := val11; end; public static property Identity: Mtr2x2f read new Mtr2x2f(1.0, 0.0, 0.0, 1.0); public property Row0: Vec2f read new Vec2f(self.val00, self.val01) write begin self.val00 := value.val0; self.val01 := value.val1; end; public property Row1: Vec2f read new Vec2f(self.val10, self.val11) write begin self.val10 := value.val0; self.val11 := value.val1; end; public property Col0: Vec2f read new Vec2f(self.val00, self.val10) write begin self.val00 := value.val0; self.val10 := value.val1; end; public property Col1: Vec2f read new Vec2f(self.val01, self.val11) write begin self.val01 := value.val0; self.val11 := value.val1; end; public property ColPtr0: ^Vec2f read pointer(@val00); public property ColPtr1: ^Vec2f read pointer(@val01); public property ColPtr[x: integer]: ^Vec2f read pointer(IntPtr(pointer(@self)) + x*8); public procedure UseColPtr0(callback: UseVec2fPtrCallbackP); type PVec2f = ^Vec2f; begin callback(PVec2f(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec2fPtrCallbackP); type PVec2f = ^Vec2f; begin callback(PVec2f(pointer(@val01))^); end; public function UseColPtr0<T>(callback: UseVec2fPtrCallbackF<T>): T; type PVec2f = ^Vec2f; begin Result := callback(PVec2f(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec2fPtrCallbackF<T>): T; type PVec2f = ^Vec2f; begin Result := callback(PVec2f(pointer(@val01))^); end; public static function Scale(k: single): Mtr2x2f := new Mtr2x2f(k, 0.0, 0.0, k); public static function Traslate(X: single): Mtr2x2f := new Mtr2x2f(1.0, X, 0.0, 1.0); public static function TraslateTransposed(X: single): Mtr2x2f := new Mtr2x2f(1.0, 0.0, X, 1.0); public static function RotateXYcw(rot: double): Mtr2x2f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr2x2f( cr, +sr, -sr, cr ); end; public static function RotateXYccw(rot: double): Mtr2x2f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr2x2f( cr, -sr, +sr, cr ); end; public function Det: single; begin Result := val00 * val11 - val01 * val10; end; public static function Random(min, max: single): Mtr2x2f; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr2x2f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01); PABCSystem.Read(Result.val10, Result.val11); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr2x2f; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11); end; public static function ReadCols(prompt: string := nil): Mtr2x2f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10); PABCSystem.Read(Result.val01, Result.val11); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr2x2f; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[2,2]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*2 + 4; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr2x2f; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr2x2f; v: Vec2f): Vec2f := new Vec2f(m.val00*v.val0+m.val01*v.val1, m.val10*v.val0+m.val11*v.val1); public static function operator*(v: Vec2f; m: Mtr2x2f): Vec2f := new Vec2f(m.val00*v.val0+m.val10*v.val1, m.val01*v.val0+m.val11*v.val1); end; Mtr2f = Mtr2x2f; Mtr3x3f = record public val00, val10, val20: single; public val01, val11, val21: single; public val02, val12, val22: single; public constructor(val00, val01, val02, val10, val11, val12, val20, val21, val22: single); begin self.val00 := val00; self.val01 := val01; self.val02 := val02; self.val10 := val10; self.val11 := val11; self.val12 := val12; self.val20 := val20; self.val21 := val21; self.val22 := val22; end; public static property Identity: Mtr3x3f read new Mtr3x3f(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0); public property Row0: Vec3f read new Vec3f(self.val00, self.val01, self.val02) write begin self.val00 := value.val0; self.val01 := value.val1; self.val02 := value.val2; end; public property Row1: Vec3f read new Vec3f(self.val10, self.val11, self.val12) write begin self.val10 := value.val0; self.val11 := value.val1; self.val12 := value.val2; end; public property Row2: Vec3f read new Vec3f(self.val20, self.val21, self.val22) write begin self.val20 := value.val0; self.val21 := value.val1; self.val22 := value.val2; end; public property Col0: Vec3f read new Vec3f(self.val00, self.val10, self.val20) write begin self.val00 := value.val0; self.val10 := value.val1; self.val20 := value.val2; end; public property Col1: Vec3f read new Vec3f(self.val01, self.val11, self.val21) write begin self.val01 := value.val0; self.val11 := value.val1; self.val21 := value.val2; end; public property Col2: Vec3f read new Vec3f(self.val02, self.val12, self.val22) write begin self.val02 := value.val0; self.val12 := value.val1; self.val22 := value.val2; end; public property ColPtr0: ^Vec3f read pointer(@val00); public property ColPtr1: ^Vec3f read pointer(@val01); public property ColPtr2: ^Vec3f read pointer(@val02); public property ColPtr[x: integer]: ^Vec3f read pointer(IntPtr(pointer(@self)) + x*12); public procedure UseColPtr0(callback: UseVec3fPtrCallbackP); type PVec3f = ^Vec3f; begin callback(PVec3f(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec3fPtrCallbackP); type PVec3f = ^Vec3f; begin callback(PVec3f(pointer(@val01))^); end; public procedure UseColPtr2(callback: UseVec3fPtrCallbackP); type PVec3f = ^Vec3f; begin callback(PVec3f(pointer(@val02))^); end; public function UseColPtr0<T>(callback: UseVec3fPtrCallbackF<T>): T; type PVec3f = ^Vec3f; begin Result := callback(PVec3f(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec3fPtrCallbackF<T>): T; type PVec3f = ^Vec3f; begin Result := callback(PVec3f(pointer(@val01))^); end; public function UseColPtr2<T>(callback: UseVec3fPtrCallbackF<T>): T; type PVec3f = ^Vec3f; begin Result := callback(PVec3f(pointer(@val02))^); end; public static function Scale(k: single): Mtr3x3f := new Mtr3x3f(k, 0.0, 0.0, 0.0, k, 0.0, 0.0, 0.0, k); public static function Traslate(X, Y: single): Mtr3x3f := new Mtr3x3f(1.0, 0.0, X, 0.0, 1.0, Y, 0.0, 0.0, 1.0); public static function TraslateTransposed(X, Y: single): Mtr3x3f := new Mtr3x3f(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, X, Y, 1.0); public static function RotateXYcw(rot: double): Mtr3x3f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr3x3f( cr, +sr, 0.0, -sr, cr, 0.0, 0.0, 0.0, 1.0 ); end; public static function RotateXYccw(rot: double): Mtr3x3f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr3x3f( cr, -sr, 0.0, +sr, cr, 0.0, 0.0, 0.0, 1.0 ); end; public static function RotateYZcw(rot: double): Mtr3x3f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr3x3f( 1.0, 0.0, 0.0, 0.0, cr, +sr, 0.0, -sr, cr ); end; public static function RotateYZccw(rot: double): Mtr3x3f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr3x3f( 1.0, 0.0, 0.0, 0.0, cr, -sr, 0.0, +sr, cr ); end; public static function RotateZXcw(rot: double): Mtr3x3f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr3x3f( cr, 0.0, -sr, 0.0, 1.0, 0.0, +sr, 0.0, cr ); end; public static function RotateZXccw(rot: double): Mtr3x3f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr3x3f( cr, 0.0, +sr, 0.0, 1.0, 0.0, -sr, 0.0, cr ); end; public static function Rotate3Dcw(u: Vec3f; rot: double): Mtr3x3f; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := -k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := -k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := -k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); end; public static function Rotate3Dccw(u: Vec3f; rot: double): Mtr3x3f; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := -k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := -k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := -k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); end; public function Det: single; begin var det2_01 := val10 * val21 - val11 * val20; var det2_02 := val10 * val22 - val12 * val20; var det2_12 := val11 * val22 - val12 * val21; Result := val00 * det2_12 - val01 * det2_02 + val02 * det2_01; end; public static function Random(min, max: single): Mtr3x3f; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val02 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val12 := min + PABCSystem.Random(r); Result.val20 := min + PABCSystem.Random(r); Result.val21 := min + PABCSystem.Random(r); Result.val22 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr3x3f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01, Result.val02); PABCSystem.Read(Result.val10, Result.val11, Result.val12); PABCSystem.Read(Result.val20, Result.val21, Result.val22); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr3x3f; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01, Result.val02); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11, Result.val12); if row_prompt <> nil then row_prompt(2).Print; PABCSystem.Readln(Result.val20, Result.val21, Result.val22); end; public static function ReadCols(prompt: string := nil): Mtr3x3f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10, Result.val20); PABCSystem.Read(Result.val01, Result.val11, Result.val21); PABCSystem.Read(Result.val02, Result.val12, Result.val22); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr3x3f; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10, Result.val20); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11, Result.val21); if col_prompt <> nil then col_prompt(2).Print; PABCSystem.Readln(Result.val02, Result.val12, Result.val22); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[3,3]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[0,2] := (Sign(val02)=-1?'-':'+') + Abs(val02).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[1,2] := (Sign(val12)=-1?'-':'+') + Abs(val12).ToString('f2'); ElStrs[2,0] := (Sign(val20)=-1?'-':'+') + Abs(val20).ToString('f2'); ElStrs[2,1] := (Sign(val21)=-1?'-':'+') + Abs(val21).ToString('f2'); ElStrs[2,2] := (Sign(val22)=-1?'-':'+') + Abs(val22).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*3 + 6; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,2].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,2].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[2,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,2].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr3x3f; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr3x3f; v: Vec3f): Vec3f := new Vec3f(m.val00*v.val0+m.val01*v.val1+m.val02*v.val2, m.val10*v.val0+m.val11*v.val1+m.val12*v.val2, m.val20*v.val0+m.val21*v.val1+m.val22*v.val2); public static function operator*(v: Vec3f; m: Mtr3x3f): Vec3f := new Vec3f(m.val00*v.val0+m.val10*v.val1+m.val20*v.val2, m.val01*v.val0+m.val11*v.val1+m.val21*v.val2, m.val02*v.val0+m.val12*v.val1+m.val22*v.val2); public static function operator implicit(m: Mtr2x2f): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr3x3f): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); end; Mtr3f = Mtr3x3f; Mtr4x4f = record public val00, val10, val20, val30: single; public val01, val11, val21, val31: single; public val02, val12, val22, val32: single; public val03, val13, val23, val33: single; public constructor(val00, val01, val02, val03, val10, val11, val12, val13, val20, val21, val22, val23, val30, val31, val32, val33: single); begin self.val00 := val00; self.val01 := val01; self.val02 := val02; self.val03 := val03; self.val10 := val10; self.val11 := val11; self.val12 := val12; self.val13 := val13; self.val20 := val20; self.val21 := val21; self.val22 := val22; self.val23 := val23; self.val30 := val30; self.val31 := val31; self.val32 := val32; self.val33 := val33; end; public static property Identity: Mtr4x4f read new Mtr4x4f(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public property Row0: Vec4f read new Vec4f(self.val00, self.val01, self.val02, self.val03) write begin self.val00 := value.val0; self.val01 := value.val1; self.val02 := value.val2; self.val03 := value.val3; end; public property Row1: Vec4f read new Vec4f(self.val10, self.val11, self.val12, self.val13) write begin self.val10 := value.val0; self.val11 := value.val1; self.val12 := value.val2; self.val13 := value.val3; end; public property Row2: Vec4f read new Vec4f(self.val20, self.val21, self.val22, self.val23) write begin self.val20 := value.val0; self.val21 := value.val1; self.val22 := value.val2; self.val23 := value.val3; end; public property Row3: Vec4f read new Vec4f(self.val30, self.val31, self.val32, self.val33) write begin self.val30 := value.val0; self.val31 := value.val1; self.val32 := value.val2; self.val33 := value.val3; end; public property Col0: Vec4f read new Vec4f(self.val00, self.val10, self.val20, self.val30) write begin self.val00 := value.val0; self.val10 := value.val1; self.val20 := value.val2; self.val30 := value.val3; end; public property Col1: Vec4f read new Vec4f(self.val01, self.val11, self.val21, self.val31) write begin self.val01 := value.val0; self.val11 := value.val1; self.val21 := value.val2; self.val31 := value.val3; end; public property Col2: Vec4f read new Vec4f(self.val02, self.val12, self.val22, self.val32) write begin self.val02 := value.val0; self.val12 := value.val1; self.val22 := value.val2; self.val32 := value.val3; end; public property Col3: Vec4f read new Vec4f(self.val03, self.val13, self.val23, self.val33) write begin self.val03 := value.val0; self.val13 := value.val1; self.val23 := value.val2; self.val33 := value.val3; end; public property ColPtr0: ^Vec4f read pointer(@val00); public property ColPtr1: ^Vec4f read pointer(@val01); public property ColPtr2: ^Vec4f read pointer(@val02); public property ColPtr3: ^Vec4f read pointer(@val03); public property ColPtr[x: integer]: ^Vec4f read pointer(IntPtr(pointer(@self)) + x*16); public procedure UseColPtr0(callback: UseVec4fPtrCallbackP); type PVec4f = ^Vec4f; begin callback(PVec4f(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec4fPtrCallbackP); type PVec4f = ^Vec4f; begin callback(PVec4f(pointer(@val01))^); end; public procedure UseColPtr2(callback: UseVec4fPtrCallbackP); type PVec4f = ^Vec4f; begin callback(PVec4f(pointer(@val02))^); end; public procedure UseColPtr3(callback: UseVec4fPtrCallbackP); type PVec4f = ^Vec4f; begin callback(PVec4f(pointer(@val03))^); end; public function UseColPtr0<T>(callback: UseVec4fPtrCallbackF<T>): T; type PVec4f = ^Vec4f; begin Result := callback(PVec4f(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec4fPtrCallbackF<T>): T; type PVec4f = ^Vec4f; begin Result := callback(PVec4f(pointer(@val01))^); end; public function UseColPtr2<T>(callback: UseVec4fPtrCallbackF<T>): T; type PVec4f = ^Vec4f; begin Result := callback(PVec4f(pointer(@val02))^); end; public function UseColPtr3<T>(callback: UseVec4fPtrCallbackF<T>): T; type PVec4f = ^Vec4f; begin Result := callback(PVec4f(pointer(@val03))^); end; public static function Scale(k: single): Mtr4x4f := new Mtr4x4f(k, 0.0, 0.0, 0.0, 0.0, k, 0.0, 0.0, 0.0, 0.0, k, 0.0, 0.0, 0.0, 0.0, k); public static function Traslate(X, Y, Z: single): Mtr4x4f := new Mtr4x4f(1.0, 0.0, 0.0, X, 0.0, 1.0, 0.0, Y, 0.0, 0.0, 1.0, Z, 0.0, 0.0, 0.0, 1.0); public static function TraslateTransposed(X, Y, Z: single): Mtr4x4f := new Mtr4x4f(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, X, Y, Z, 1.0); public static function RotateXYcw(rot: double): Mtr4x4f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr4x4f( cr, +sr, 0.0, 0.0, -sr, cr, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ); end; public static function RotateXYccw(rot: double): Mtr4x4f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr4x4f( cr, -sr, 0.0, 0.0, +sr, cr, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ); end; public static function RotateYZcw(rot: double): Mtr4x4f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr4x4f( 1.0, 0.0, 0.0, 0.0, 0.0, cr, +sr, 0.0, 0.0, -sr, cr, 0.0, 0.0, 0.0, 0.0, 1.0 ); end; public static function RotateYZccw(rot: double): Mtr4x4f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr4x4f( 1.0, 0.0, 0.0, 0.0, 0.0, cr, -sr, 0.0, 0.0, +sr, cr, 0.0, 0.0, 0.0, 0.0, 1.0 ); end; public static function RotateZXcw(rot: double): Mtr4x4f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr4x4f( cr, 0.0, -sr, 0.0, 0.0, 1.0, 0.0, 0.0, +sr, 0.0, cr, 0.0, 0.0, 0.0, 0.0, 1.0 ); end; public static function RotateZXccw(rot: double): Mtr4x4f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr4x4f( cr, 0.0, +sr, 0.0, 0.0, 1.0, 0.0, 0.0, -sr, 0.0, cr, 0.0, 0.0, 0.0, 0.0, 1.0 ); end; public static function Rotate3Dcw(u: Vec3f; rot: double): Mtr4x4f; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := -k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := -k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := -k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); Result.val33 := 1; end; public static function Rotate3Dccw(u: Vec3f; rot: double): Mtr4x4f; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := -k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := -k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := -k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); Result.val33 := 1; end; public function Det: single; begin var det2_01 := val20 * val31 - val21 * val30; var det2_02 := val20 * val32 - val22 * val30; var det2_03 := val20 * val33 - val23 * val30; var det2_12 := val21 * val32 - val22 * val31; var det2_13 := val21 * val33 - val23 * val31; var det2_23 := val22 * val33 - val23 * val32; var det3_012 := val10 * det2_12 - val11 * det2_02 + val12 * det2_01; var det3_013 := val10 * det2_13 - val11 * det2_03 + val13 * det2_01; var det3_023 := val10 * det2_23 - val12 * det2_03 + val13 * det2_02; var det3_123 := val11 * det2_23 - val12 * det2_13 + val13 * det2_12; Result := val00 * det3_123 - val01 * det3_023 + val02 * det3_013 - val03 * det3_012; end; public static function Random(min, max: single): Mtr4x4f; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val02 := min + PABCSystem.Random(r); Result.val03 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val12 := min + PABCSystem.Random(r); Result.val13 := min + PABCSystem.Random(r); Result.val20 := min + PABCSystem.Random(r); Result.val21 := min + PABCSystem.Random(r); Result.val22 := min + PABCSystem.Random(r); Result.val23 := min + PABCSystem.Random(r); Result.val30 := min + PABCSystem.Random(r); Result.val31 := min + PABCSystem.Random(r); Result.val32 := min + PABCSystem.Random(r); Result.val33 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr4x4f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01, Result.val02, Result.val03); PABCSystem.Read(Result.val10, Result.val11, Result.val12, Result.val13); PABCSystem.Read(Result.val20, Result.val21, Result.val22, Result.val23); PABCSystem.Read(Result.val30, Result.val31, Result.val32, Result.val33); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr4x4f; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01, Result.val02, Result.val03); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11, Result.val12, Result.val13); if row_prompt <> nil then row_prompt(2).Print; PABCSystem.Readln(Result.val20, Result.val21, Result.val22, Result.val23); if row_prompt <> nil then row_prompt(3).Print; PABCSystem.Readln(Result.val30, Result.val31, Result.val32, Result.val33); end; public static function ReadCols(prompt: string := nil): Mtr4x4f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10, Result.val20, Result.val30); PABCSystem.Read(Result.val01, Result.val11, Result.val21, Result.val31); PABCSystem.Read(Result.val02, Result.val12, Result.val22, Result.val32); PABCSystem.Read(Result.val03, Result.val13, Result.val23, Result.val33); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr4x4f; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10, Result.val20, Result.val30); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11, Result.val21, Result.val31); if col_prompt <> nil then col_prompt(2).Print; PABCSystem.Readln(Result.val02, Result.val12, Result.val22, Result.val32); if col_prompt <> nil then col_prompt(3).Print; PABCSystem.Readln(Result.val03, Result.val13, Result.val23, Result.val33); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[4,4]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[0,2] := (Sign(val02)=-1?'-':'+') + Abs(val02).ToString('f2'); ElStrs[0,3] := (Sign(val03)=-1?'-':'+') + Abs(val03).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[1,2] := (Sign(val12)=-1?'-':'+') + Abs(val12).ToString('f2'); ElStrs[1,3] := (Sign(val13)=-1?'-':'+') + Abs(val13).ToString('f2'); ElStrs[2,0] := (Sign(val20)=-1?'-':'+') + Abs(val20).ToString('f2'); ElStrs[2,1] := (Sign(val21)=-1?'-':'+') + Abs(val21).ToString('f2'); ElStrs[2,2] := (Sign(val22)=-1?'-':'+') + Abs(val22).ToString('f2'); ElStrs[2,3] := (Sign(val23)=-1?'-':'+') + Abs(val23).ToString('f2'); ElStrs[3,0] := (Sign(val30)=-1?'-':'+') + Abs(val30).ToString('f2'); ElStrs[3,1] := (Sign(val31)=-1?'-':'+') + Abs(val31).ToString('f2'); ElStrs[3,2] := (Sign(val32)=-1?'-':'+') + Abs(val32).ToString('f2'); ElStrs[3,3] := (Sign(val33)=-1?'-':'+') + Abs(val33).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*4 + 8; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,3].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,3].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[2,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,3].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[3,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[3,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[3,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[3,3].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr4x4f; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr4x4f; v: Vec4f): Vec4f := new Vec4f(m.val00*v.val0+m.val01*v.val1+m.val02*v.val2+m.val03*v.val3, m.val10*v.val0+m.val11*v.val1+m.val12*v.val2+m.val13*v.val3, m.val20*v.val0+m.val21*v.val1+m.val22*v.val2+m.val23*v.val3, m.val30*v.val0+m.val31*v.val1+m.val32*v.val2+m.val33*v.val3); public static function operator*(v: Vec4f; m: Mtr4x4f): Vec4f := new Vec4f(m.val00*v.val0+m.val10*v.val1+m.val20*v.val2+m.val30*v.val3, m.val01*v.val0+m.val11*v.val1+m.val21*v.val2+m.val31*v.val3, m.val02*v.val0+m.val12*v.val1+m.val22*v.val2+m.val32*v.val3, m.val03*v.val0+m.val13*v.val1+m.val23*v.val2+m.val33*v.val3); public static function operator implicit(m: Mtr2x2f): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4f): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4f): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22); end; Mtr4f = Mtr4x4f; Mtr2x3f = record public val00, val10: single; public val01, val11: single; public val02, val12: single; public constructor(val00, val01, val02, val10, val11, val12: single); begin self.val00 := val00; self.val01 := val01; self.val02 := val02; self.val10 := val10; self.val11 := val11; self.val12 := val12; end; public static property Identity: Mtr2x3f read new Mtr2x3f(1.0, 0.0, 0.0, 0.0, 1.0, 0.0); public property Row0: Vec3f read new Vec3f(self.val00, self.val01, self.val02) write begin self.val00 := value.val0; self.val01 := value.val1; self.val02 := value.val2; end; public property Row1: Vec3f read new Vec3f(self.val10, self.val11, self.val12) write begin self.val10 := value.val0; self.val11 := value.val1; self.val12 := value.val2; end; public property Col0: Vec2f read new Vec2f(self.val00, self.val10) write begin self.val00 := value.val0; self.val10 := value.val1; end; public property Col1: Vec2f read new Vec2f(self.val01, self.val11) write begin self.val01 := value.val0; self.val11 := value.val1; end; public property Col2: Vec2f read new Vec2f(self.val02, self.val12) write begin self.val02 := value.val0; self.val12 := value.val1; end; public property ColPtr0: ^Vec2f read pointer(@val00); public property ColPtr1: ^Vec2f read pointer(@val01); public property ColPtr2: ^Vec2f read pointer(@val02); public property ColPtr[x: integer]: ^Vec2f read pointer(IntPtr(pointer(@self)) + x*8); public procedure UseColPtr0(callback: UseVec2fPtrCallbackP); type PVec2f = ^Vec2f; begin callback(PVec2f(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec2fPtrCallbackP); type PVec2f = ^Vec2f; begin callback(PVec2f(pointer(@val01))^); end; public procedure UseColPtr2(callback: UseVec2fPtrCallbackP); type PVec2f = ^Vec2f; begin callback(PVec2f(pointer(@val02))^); end; public function UseColPtr0<T>(callback: UseVec2fPtrCallbackF<T>): T; type PVec2f = ^Vec2f; begin Result := callback(PVec2f(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec2fPtrCallbackF<T>): T; type PVec2f = ^Vec2f; begin Result := callback(PVec2f(pointer(@val01))^); end; public function UseColPtr2<T>(callback: UseVec2fPtrCallbackF<T>): T; type PVec2f = ^Vec2f; begin Result := callback(PVec2f(pointer(@val02))^); end; public static function Scale(k: single): Mtr2x3f := new Mtr2x3f(k, 0.0, 0.0, 0.0, k, 0.0); public static function Traslate(X, Y: single): Mtr2x3f := new Mtr2x3f(1.0, 0.0, X, 0.0, 1.0, Y); public static function TraslateTransposed(X: single): Mtr2x3f := new Mtr2x3f(1.0, 0.0, 0.0, X, 1.0, 0.0); public static function RotateXYcw(rot: double): Mtr2x3f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr2x3f( cr, +sr, 0.0, -sr, cr, 0.0 ); end; public static function RotateXYccw(rot: double): Mtr2x3f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr2x3f( cr, -sr, 0.0, +sr, cr, 0.0 ); end; public static function Random(min, max: single): Mtr2x3f; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val02 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val12 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr2x3f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01, Result.val02); PABCSystem.Read(Result.val10, Result.val11, Result.val12); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr2x3f; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01, Result.val02); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11, Result.val12); end; public static function ReadCols(prompt: string := nil): Mtr2x3f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10); PABCSystem.Read(Result.val01, Result.val11); PABCSystem.Read(Result.val02, Result.val12); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr2x3f; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11); if col_prompt <> nil then col_prompt(2).Print; PABCSystem.Readln(Result.val02, Result.val12); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[2,3]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[0,2] := (Sign(val02)=-1?'-':'+') + Abs(val02).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[1,2] := (Sign(val12)=-1?'-':'+') + Abs(val12).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*3 + 6; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,2].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,2].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr2x3f; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr2x3f; v: Vec3f): Vec2f := new Vec2f(m.val00*v.val0+m.val01*v.val1+m.val02*v.val2, m.val10*v.val0+m.val11*v.val1+m.val12*v.val2); public static function operator*(v: Vec2f; m: Mtr2x3f): Vec3f := new Vec3f(m.val00*v.val0+m.val10*v.val1, m.val01*v.val0+m.val11*v.val1, m.val02*v.val0+m.val12*v.val1); public static function operator implicit(m: Mtr2x2f): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0); public static function operator implicit(m: Mtr2x3f): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr2x3f): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4f): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr2x3f): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); end; Mtr3x2f = record public val00, val10, val20: single; public val01, val11, val21: single; public constructor(val00, val01, val10, val11, val20, val21: single); begin self.val00 := val00; self.val01 := val01; self.val10 := val10; self.val11 := val11; self.val20 := val20; self.val21 := val21; end; public static property Identity: Mtr3x2f read new Mtr3x2f(1.0, 0.0, 0.0, 1.0, 0.0, 0.0); public property Row0: Vec2f read new Vec2f(self.val00, self.val01) write begin self.val00 := value.val0; self.val01 := value.val1; end; public property Row1: Vec2f read new Vec2f(self.val10, self.val11) write begin self.val10 := value.val0; self.val11 := value.val1; end; public property Row2: Vec2f read new Vec2f(self.val20, self.val21) write begin self.val20 := value.val0; self.val21 := value.val1; end; public property Col0: Vec3f read new Vec3f(self.val00, self.val10, self.val20) write begin self.val00 := value.val0; self.val10 := value.val1; self.val20 := value.val2; end; public property Col1: Vec3f read new Vec3f(self.val01, self.val11, self.val21) write begin self.val01 := value.val0; self.val11 := value.val1; self.val21 := value.val2; end; public property ColPtr0: ^Vec3f read pointer(@val00); public property ColPtr1: ^Vec3f read pointer(@val01); public property ColPtr[x: integer]: ^Vec3f read pointer(IntPtr(pointer(@self)) + x*12); public procedure UseColPtr0(callback: UseVec3fPtrCallbackP); type PVec3f = ^Vec3f; begin callback(PVec3f(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec3fPtrCallbackP); type PVec3f = ^Vec3f; begin callback(PVec3f(pointer(@val01))^); end; public function UseColPtr0<T>(callback: UseVec3fPtrCallbackF<T>): T; type PVec3f = ^Vec3f; begin Result := callback(PVec3f(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec3fPtrCallbackF<T>): T; type PVec3f = ^Vec3f; begin Result := callback(PVec3f(pointer(@val01))^); end; public static function Scale(k: single): Mtr3x2f := new Mtr3x2f(k, 0.0, 0.0, k, 0.0, 0.0); public static function Traslate(X: single): Mtr3x2f := new Mtr3x2f(1.0, X, 0.0, 1.0, 0.0, 0.0); public static function TraslateTransposed(X, Y: single): Mtr3x2f := new Mtr3x2f(1.0, 0.0, 0.0, 1.0, X, Y); public static function RotateXYcw(rot: double): Mtr3x2f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr3x2f( cr, +sr, -sr, cr, 0.0, 0.0 ); end; public static function RotateXYccw(rot: double): Mtr3x2f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr3x2f( cr, -sr, +sr, cr, 0.0, 0.0 ); end; public static function Random(min, max: single): Mtr3x2f; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val20 := min + PABCSystem.Random(r); Result.val21 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr3x2f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01); PABCSystem.Read(Result.val10, Result.val11); PABCSystem.Read(Result.val20, Result.val21); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr3x2f; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11); if row_prompt <> nil then row_prompt(2).Print; PABCSystem.Readln(Result.val20, Result.val21); end; public static function ReadCols(prompt: string := nil): Mtr3x2f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10, Result.val20); PABCSystem.Read(Result.val01, Result.val11, Result.val21); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr3x2f; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10, Result.val20); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11, Result.val21); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[3,2]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[2,0] := (Sign(val20)=-1?'-':'+') + Abs(val20).ToString('f2'); ElStrs[2,1] := (Sign(val21)=-1?'-':'+') + Abs(val21).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*2 + 4; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[2,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,1].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr3x2f; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr3x2f; v: Vec2f): Vec3f := new Vec3f(m.val00*v.val0+m.val01*v.val1, m.val10*v.val0+m.val11*v.val1, m.val20*v.val0+m.val21*v.val1); public static function operator*(v: Vec3f; m: Mtr3x2f): Vec2f := new Vec2f(m.val00*v.val0+m.val10*v.val1+m.val20*v.val2, m.val01*v.val0+m.val11*v.val1+m.val21*v.val2); public static function operator implicit(m: Mtr2x2f): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr3x2f): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr3x2f): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0); public static function operator implicit(m: Mtr4x4f): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr3x2f): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr2x3f): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr3x2f): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0); end; Mtr2x4f = record public val00, val10: single; public val01, val11: single; public val02, val12: single; public val03, val13: single; public constructor(val00, val01, val02, val03, val10, val11, val12, val13: single); begin self.val00 := val00; self.val01 := val01; self.val02 := val02; self.val03 := val03; self.val10 := val10; self.val11 := val11; self.val12 := val12; self.val13 := val13; end; public static property Identity: Mtr2x4f read new Mtr2x4f(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0); public property Row0: Vec4f read new Vec4f(self.val00, self.val01, self.val02, self.val03) write begin self.val00 := value.val0; self.val01 := value.val1; self.val02 := value.val2; self.val03 := value.val3; end; public property Row1: Vec4f read new Vec4f(self.val10, self.val11, self.val12, self.val13) write begin self.val10 := value.val0; self.val11 := value.val1; self.val12 := value.val2; self.val13 := value.val3; end; public property Col0: Vec2f read new Vec2f(self.val00, self.val10) write begin self.val00 := value.val0; self.val10 := value.val1; end; public property Col1: Vec2f read new Vec2f(self.val01, self.val11) write begin self.val01 := value.val0; self.val11 := value.val1; end; public property Col2: Vec2f read new Vec2f(self.val02, self.val12) write begin self.val02 := value.val0; self.val12 := value.val1; end; public property Col3: Vec2f read new Vec2f(self.val03, self.val13) write begin self.val03 := value.val0; self.val13 := value.val1; end; public property ColPtr0: ^Vec2f read pointer(@val00); public property ColPtr1: ^Vec2f read pointer(@val01); public property ColPtr2: ^Vec2f read pointer(@val02); public property ColPtr3: ^Vec2f read pointer(@val03); public property ColPtr[x: integer]: ^Vec2f read pointer(IntPtr(pointer(@self)) + x*8); public procedure UseColPtr0(callback: UseVec2fPtrCallbackP); type PVec2f = ^Vec2f; begin callback(PVec2f(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec2fPtrCallbackP); type PVec2f = ^Vec2f; begin callback(PVec2f(pointer(@val01))^); end; public procedure UseColPtr2(callback: UseVec2fPtrCallbackP); type PVec2f = ^Vec2f; begin callback(PVec2f(pointer(@val02))^); end; public procedure UseColPtr3(callback: UseVec2fPtrCallbackP); type PVec2f = ^Vec2f; begin callback(PVec2f(pointer(@val03))^); end; public function UseColPtr0<T>(callback: UseVec2fPtrCallbackF<T>): T; type PVec2f = ^Vec2f; begin Result := callback(PVec2f(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec2fPtrCallbackF<T>): T; type PVec2f = ^Vec2f; begin Result := callback(PVec2f(pointer(@val01))^); end; public function UseColPtr2<T>(callback: UseVec2fPtrCallbackF<T>): T; type PVec2f = ^Vec2f; begin Result := callback(PVec2f(pointer(@val02))^); end; public function UseColPtr3<T>(callback: UseVec2fPtrCallbackF<T>): T; type PVec2f = ^Vec2f; begin Result := callback(PVec2f(pointer(@val03))^); end; public static function Scale(k: single): Mtr2x4f := new Mtr2x4f(k, 0.0, 0.0, 0.0, 0.0, k, 0.0, 0.0); public static function Traslate(X, Y: single): Mtr2x4f := new Mtr2x4f(1.0, 0.0, 0.0, X, 0.0, 1.0, 0.0, Y); public static function TraslateTransposed(X: single): Mtr2x4f := new Mtr2x4f(1.0, 0.0, 0.0, 0.0, X, 1.0, 0.0, 0.0); public static function RotateXYcw(rot: double): Mtr2x4f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr2x4f( cr, +sr, 0.0, 0.0, -sr, cr, 0.0, 0.0 ); end; public static function RotateXYccw(rot: double): Mtr2x4f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr2x4f( cr, -sr, 0.0, 0.0, +sr, cr, 0.0, 0.0 ); end; public static function Random(min, max: single): Mtr2x4f; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val02 := min + PABCSystem.Random(r); Result.val03 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val12 := min + PABCSystem.Random(r); Result.val13 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr2x4f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01, Result.val02, Result.val03); PABCSystem.Read(Result.val10, Result.val11, Result.val12, Result.val13); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr2x4f; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01, Result.val02, Result.val03); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11, Result.val12, Result.val13); end; public static function ReadCols(prompt: string := nil): Mtr2x4f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10); PABCSystem.Read(Result.val01, Result.val11); PABCSystem.Read(Result.val02, Result.val12); PABCSystem.Read(Result.val03, Result.val13); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr2x4f; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11); if col_prompt <> nil then col_prompt(2).Print; PABCSystem.Readln(Result.val02, Result.val12); if col_prompt <> nil then col_prompt(3).Print; PABCSystem.Readln(Result.val03, Result.val13); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[2,4]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[0,2] := (Sign(val02)=-1?'-':'+') + Abs(val02).ToString('f2'); ElStrs[0,3] := (Sign(val03)=-1?'-':'+') + Abs(val03).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[1,2] := (Sign(val12)=-1?'-':'+') + Abs(val12).ToString('f2'); ElStrs[1,3] := (Sign(val13)=-1?'-':'+') + Abs(val13).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*4 + 8; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,3].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,3].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr2x4f; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr2x4f; v: Vec4f): Vec2f := new Vec2f(m.val00*v.val0+m.val01*v.val1+m.val02*v.val2+m.val03*v.val3, m.val10*v.val0+m.val11*v.val1+m.val12*v.val2+m.val13*v.val3); public static function operator*(v: Vec2f; m: Mtr2x4f): Vec4f := new Vec4f(m.val00*v.val0+m.val10*v.val1, m.val01*v.val0+m.val11*v.val1, m.val02*v.val0+m.val12*v.val1, m.val03*v.val0+m.val13*v.val1); public static function operator implicit(m: Mtr2x2f): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr2x4f): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0); public static function operator implicit(m: Mtr2x4f): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4f): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13); public static function operator implicit(m: Mtr2x4f): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr2x3f): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0); public static function operator implicit(m: Mtr2x4f): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr3x2f): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr2x4f): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0); end; Mtr4x2f = record public val00, val10, val20, val30: single; public val01, val11, val21, val31: single; public constructor(val00, val01, val10, val11, val20, val21, val30, val31: single); begin self.val00 := val00; self.val01 := val01; self.val10 := val10; self.val11 := val11; self.val20 := val20; self.val21 := val21; self.val30 := val30; self.val31 := val31; end; public static property Identity: Mtr4x2f read new Mtr4x2f(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0); public property Row0: Vec2f read new Vec2f(self.val00, self.val01) write begin self.val00 := value.val0; self.val01 := value.val1; end; public property Row1: Vec2f read new Vec2f(self.val10, self.val11) write begin self.val10 := value.val0; self.val11 := value.val1; end; public property Row2: Vec2f read new Vec2f(self.val20, self.val21) write begin self.val20 := value.val0; self.val21 := value.val1; end; public property Row3: Vec2f read new Vec2f(self.val30, self.val31) write begin self.val30 := value.val0; self.val31 := value.val1; end; public property Col0: Vec4f read new Vec4f(self.val00, self.val10, self.val20, self.val30) write begin self.val00 := value.val0; self.val10 := value.val1; self.val20 := value.val2; self.val30 := value.val3; end; public property Col1: Vec4f read new Vec4f(self.val01, self.val11, self.val21, self.val31) write begin self.val01 := value.val0; self.val11 := value.val1; self.val21 := value.val2; self.val31 := value.val3; end; public property ColPtr0: ^Vec4f read pointer(@val00); public property ColPtr1: ^Vec4f read pointer(@val01); public property ColPtr[x: integer]: ^Vec4f read pointer(IntPtr(pointer(@self)) + x*16); public procedure UseColPtr0(callback: UseVec4fPtrCallbackP); type PVec4f = ^Vec4f; begin callback(PVec4f(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec4fPtrCallbackP); type PVec4f = ^Vec4f; begin callback(PVec4f(pointer(@val01))^); end; public function UseColPtr0<T>(callback: UseVec4fPtrCallbackF<T>): T; type PVec4f = ^Vec4f; begin Result := callback(PVec4f(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec4fPtrCallbackF<T>): T; type PVec4f = ^Vec4f; begin Result := callback(PVec4f(pointer(@val01))^); end; public static function Scale(k: single): Mtr4x2f := new Mtr4x2f(k, 0.0, 0.0, k, 0.0, 0.0, 0.0, 0.0); public static function Traslate(X: single): Mtr4x2f := new Mtr4x2f(1.0, X, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0); public static function TraslateTransposed(X, Y: single): Mtr4x2f := new Mtr4x2f(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, X, Y); public static function RotateXYcw(rot: double): Mtr4x2f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr4x2f( cr, +sr, -sr, cr, 0.0, 0.0, 0.0, 0.0 ); end; public static function RotateXYccw(rot: double): Mtr4x2f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr4x2f( cr, -sr, +sr, cr, 0.0, 0.0, 0.0, 0.0 ); end; public static function Random(min, max: single): Mtr4x2f; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val20 := min + PABCSystem.Random(r); Result.val21 := min + PABCSystem.Random(r); Result.val30 := min + PABCSystem.Random(r); Result.val31 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr4x2f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01); PABCSystem.Read(Result.val10, Result.val11); PABCSystem.Read(Result.val20, Result.val21); PABCSystem.Read(Result.val30, Result.val31); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr4x2f; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11); if row_prompt <> nil then row_prompt(2).Print; PABCSystem.Readln(Result.val20, Result.val21); if row_prompt <> nil then row_prompt(3).Print; PABCSystem.Readln(Result.val30, Result.val31); end; public static function ReadCols(prompt: string := nil): Mtr4x2f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10, Result.val20, Result.val30); PABCSystem.Read(Result.val01, Result.val11, Result.val21, Result.val31); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr4x2f; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10, Result.val20, Result.val30); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11, Result.val21, Result.val31); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[4,2]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[2,0] := (Sign(val20)=-1?'-':'+') + Abs(val20).ToString('f2'); ElStrs[2,1] := (Sign(val21)=-1?'-':'+') + Abs(val21).ToString('f2'); ElStrs[3,0] := (Sign(val30)=-1?'-':'+') + Abs(val30).ToString('f2'); ElStrs[3,1] := (Sign(val31)=-1?'-':'+') + Abs(val31).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*2 + 4; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[2,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,1].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[3,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[3,1].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr4x2f; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr4x2f; v: Vec2f): Vec4f := new Vec4f(m.val00*v.val0+m.val01*v.val1, m.val10*v.val0+m.val11*v.val1, m.val20*v.val0+m.val21*v.val1, m.val30*v.val0+m.val31*v.val1); public static function operator*(v: Vec4f; m: Mtr4x2f): Vec2f := new Vec2f(m.val00*v.val0+m.val10*v.val1+m.val20*v.val2+m.val30*v.val3, m.val01*v.val0+m.val11*v.val1+m.val21*v.val2+m.val31*v.val3); public static function operator implicit(m: Mtr2x2f): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x2f): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, 0.0, 0.0); public static function operator implicit(m: Mtr4x2f): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0); public static function operator implicit(m: Mtr4x4f): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, m.val30, m.val31); public static function operator implicit(m: Mtr4x2f): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0, m.val30, m.val31, 0.0, 1.0); public static function operator implicit(m: Mtr2x3f): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x2f): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0); public static function operator implicit(m: Mtr3x2f): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, 0.0, 0.0); public static function operator implicit(m: Mtr4x2f): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr2x4f): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x2f): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0); end; Mtr3x4f = record public val00, val10, val20: single; public val01, val11, val21: single; public val02, val12, val22: single; public val03, val13, val23: single; public constructor(val00, val01, val02, val03, val10, val11, val12, val13, val20, val21, val22, val23: single); begin self.val00 := val00; self.val01 := val01; self.val02 := val02; self.val03 := val03; self.val10 := val10; self.val11 := val11; self.val12 := val12; self.val13 := val13; self.val20 := val20; self.val21 := val21; self.val22 := val22; self.val23 := val23; end; public static property Identity: Mtr3x4f read new Mtr3x4f(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); public property Row0: Vec4f read new Vec4f(self.val00, self.val01, self.val02, self.val03) write begin self.val00 := value.val0; self.val01 := value.val1; self.val02 := value.val2; self.val03 := value.val3; end; public property Row1: Vec4f read new Vec4f(self.val10, self.val11, self.val12, self.val13) write begin self.val10 := value.val0; self.val11 := value.val1; self.val12 := value.val2; self.val13 := value.val3; end; public property Row2: Vec4f read new Vec4f(self.val20, self.val21, self.val22, self.val23) write begin self.val20 := value.val0; self.val21 := value.val1; self.val22 := value.val2; self.val23 := value.val3; end; public property Col0: Vec3f read new Vec3f(self.val00, self.val10, self.val20) write begin self.val00 := value.val0; self.val10 := value.val1; self.val20 := value.val2; end; public property Col1: Vec3f read new Vec3f(self.val01, self.val11, self.val21) write begin self.val01 := value.val0; self.val11 := value.val1; self.val21 := value.val2; end; public property Col2: Vec3f read new Vec3f(self.val02, self.val12, self.val22) write begin self.val02 := value.val0; self.val12 := value.val1; self.val22 := value.val2; end; public property Col3: Vec3f read new Vec3f(self.val03, self.val13, self.val23) write begin self.val03 := value.val0; self.val13 := value.val1; self.val23 := value.val2; end; public property ColPtr0: ^Vec3f read pointer(@val00); public property ColPtr1: ^Vec3f read pointer(@val01); public property ColPtr2: ^Vec3f read pointer(@val02); public property ColPtr3: ^Vec3f read pointer(@val03); public property ColPtr[x: integer]: ^Vec3f read pointer(IntPtr(pointer(@self)) + x*12); public procedure UseColPtr0(callback: UseVec3fPtrCallbackP); type PVec3f = ^Vec3f; begin callback(PVec3f(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec3fPtrCallbackP); type PVec3f = ^Vec3f; begin callback(PVec3f(pointer(@val01))^); end; public procedure UseColPtr2(callback: UseVec3fPtrCallbackP); type PVec3f = ^Vec3f; begin callback(PVec3f(pointer(@val02))^); end; public procedure UseColPtr3(callback: UseVec3fPtrCallbackP); type PVec3f = ^Vec3f; begin callback(PVec3f(pointer(@val03))^); end; public function UseColPtr0<T>(callback: UseVec3fPtrCallbackF<T>): T; type PVec3f = ^Vec3f; begin Result := callback(PVec3f(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec3fPtrCallbackF<T>): T; type PVec3f = ^Vec3f; begin Result := callback(PVec3f(pointer(@val01))^); end; public function UseColPtr2<T>(callback: UseVec3fPtrCallbackF<T>): T; type PVec3f = ^Vec3f; begin Result := callback(PVec3f(pointer(@val02))^); end; public function UseColPtr3<T>(callback: UseVec3fPtrCallbackF<T>): T; type PVec3f = ^Vec3f; begin Result := callback(PVec3f(pointer(@val03))^); end; public static function Scale(k: single): Mtr3x4f := new Mtr3x4f(k, 0.0, 0.0, 0.0, 0.0, k, 0.0, 0.0, 0.0, 0.0, k, 0.0); public static function Traslate(X, Y, Z: single): Mtr3x4f := new Mtr3x4f(1.0, 0.0, 0.0, X, 0.0, 1.0, 0.0, Y, 0.0, 0.0, 1.0, Z); public static function TraslateTransposed(X, Y: single): Mtr3x4f := new Mtr3x4f(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, X, Y, 1.0, 0.0); public static function RotateXYcw(rot: double): Mtr3x4f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr3x4f( cr, +sr, 0.0, 0.0, -sr, cr, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 ); end; public static function RotateXYccw(rot: double): Mtr3x4f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr3x4f( cr, -sr, 0.0, 0.0, +sr, cr, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 ); end; public static function RotateYZcw(rot: double): Mtr3x4f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr3x4f( 1.0, 0.0, 0.0, 0.0, 0.0, cr, +sr, 0.0, 0.0, -sr, cr, 0.0 ); end; public static function RotateYZccw(rot: double): Mtr3x4f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr3x4f( 1.0, 0.0, 0.0, 0.0, 0.0, cr, -sr, 0.0, 0.0, +sr, cr, 0.0 ); end; public static function RotateZXcw(rot: double): Mtr3x4f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr3x4f( cr, 0.0, -sr, 0.0, 0.0, 1.0, 0.0, 0.0, +sr, 0.0, cr, 0.0 ); end; public static function RotateZXccw(rot: double): Mtr3x4f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr3x4f( cr, 0.0, +sr, 0.0, 0.0, 1.0, 0.0, 0.0, -sr, 0.0, cr, 0.0 ); end; public static function Rotate3Dcw(u: Vec3f; rot: double): Mtr3x4f; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := -k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := -k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := -k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); end; public static function Rotate3Dccw(u: Vec3f; rot: double): Mtr3x4f; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := -k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := -k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := -k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); end; public static function Random(min, max: single): Mtr3x4f; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val02 := min + PABCSystem.Random(r); Result.val03 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val12 := min + PABCSystem.Random(r); Result.val13 := min + PABCSystem.Random(r); Result.val20 := min + PABCSystem.Random(r); Result.val21 := min + PABCSystem.Random(r); Result.val22 := min + PABCSystem.Random(r); Result.val23 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr3x4f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01, Result.val02, Result.val03); PABCSystem.Read(Result.val10, Result.val11, Result.val12, Result.val13); PABCSystem.Read(Result.val20, Result.val21, Result.val22, Result.val23); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr3x4f; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01, Result.val02, Result.val03); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11, Result.val12, Result.val13); if row_prompt <> nil then row_prompt(2).Print; PABCSystem.Readln(Result.val20, Result.val21, Result.val22, Result.val23); end; public static function ReadCols(prompt: string := nil): Mtr3x4f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10, Result.val20); PABCSystem.Read(Result.val01, Result.val11, Result.val21); PABCSystem.Read(Result.val02, Result.val12, Result.val22); PABCSystem.Read(Result.val03, Result.val13, Result.val23); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr3x4f; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10, Result.val20); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11, Result.val21); if col_prompt <> nil then col_prompt(2).Print; PABCSystem.Readln(Result.val02, Result.val12, Result.val22); if col_prompt <> nil then col_prompt(3).Print; PABCSystem.Readln(Result.val03, Result.val13, Result.val23); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[3,4]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[0,2] := (Sign(val02)=-1?'-':'+') + Abs(val02).ToString('f2'); ElStrs[0,3] := (Sign(val03)=-1?'-':'+') + Abs(val03).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[1,2] := (Sign(val12)=-1?'-':'+') + Abs(val12).ToString('f2'); ElStrs[1,3] := (Sign(val13)=-1?'-':'+') + Abs(val13).ToString('f2'); ElStrs[2,0] := (Sign(val20)=-1?'-':'+') + Abs(val20).ToString('f2'); ElStrs[2,1] := (Sign(val21)=-1?'-':'+') + Abs(val21).ToString('f2'); ElStrs[2,2] := (Sign(val22)=-1?'-':'+') + Abs(val22).ToString('f2'); ElStrs[2,3] := (Sign(val23)=-1?'-':'+') + Abs(val23).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*4 + 8; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,3].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,3].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[2,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,3].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr3x4f; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr3x4f; v: Vec4f): Vec3f := new Vec3f(m.val00*v.val0+m.val01*v.val1+m.val02*v.val2+m.val03*v.val3, m.val10*v.val0+m.val11*v.val1+m.val12*v.val2+m.val13*v.val3, m.val20*v.val0+m.val21*v.val1+m.val22*v.val2+m.val23*v.val3); public static function operator*(v: Vec3f; m: Mtr3x4f): Vec4f := new Vec4f(m.val00*v.val0+m.val10*v.val1+m.val20*v.val2, m.val01*v.val0+m.val11*v.val1+m.val21*v.val2, m.val02*v.val0+m.val12*v.val1+m.val22*v.val2, m.val03*v.val0+m.val13*v.val1+m.val23*v.val2); public static function operator implicit(m: Mtr2x2f): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); public static function operator implicit(m: Mtr3x4f): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0); public static function operator implicit(m: Mtr3x4f): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22); public static function operator implicit(m: Mtr4x4f): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, m.val20, m.val21, m.val22, m.val23); public static function operator implicit(m: Mtr3x4f): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, m.val20, m.val21, m.val22, m.val23, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr2x3f): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, 0.0, 0.0, 1.0, 0.0); public static function operator implicit(m: Mtr3x4f): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr3x2f): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0); public static function operator implicit(m: Mtr3x4f): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr2x4f): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, 0.0, 0.0, 1.0, 0.0); public static function operator implicit(m: Mtr3x4f): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13); public static function operator implicit(m: Mtr4x2f): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0); public static function operator implicit(m: Mtr3x4f): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, 0.0, 0.0); end; Mtr4x3f = record public val00, val10, val20, val30: single; public val01, val11, val21, val31: single; public val02, val12, val22, val32: single; public constructor(val00, val01, val02, val10, val11, val12, val20, val21, val22, val30, val31, val32: single); begin self.val00 := val00; self.val01 := val01; self.val02 := val02; self.val10 := val10; self.val11 := val11; self.val12 := val12; self.val20 := val20; self.val21 := val21; self.val22 := val22; self.val30 := val30; self.val31 := val31; self.val32 := val32; end; public static property Identity: Mtr4x3f read new Mtr4x3f(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public property Row0: Vec3f read new Vec3f(self.val00, self.val01, self.val02) write begin self.val00 := value.val0; self.val01 := value.val1; self.val02 := value.val2; end; public property Row1: Vec3f read new Vec3f(self.val10, self.val11, self.val12) write begin self.val10 := value.val0; self.val11 := value.val1; self.val12 := value.val2; end; public property Row2: Vec3f read new Vec3f(self.val20, self.val21, self.val22) write begin self.val20 := value.val0; self.val21 := value.val1; self.val22 := value.val2; end; public property Row3: Vec3f read new Vec3f(self.val30, self.val31, self.val32) write begin self.val30 := value.val0; self.val31 := value.val1; self.val32 := value.val2; end; public property Col0: Vec4f read new Vec4f(self.val00, self.val10, self.val20, self.val30) write begin self.val00 := value.val0; self.val10 := value.val1; self.val20 := value.val2; self.val30 := value.val3; end; public property Col1: Vec4f read new Vec4f(self.val01, self.val11, self.val21, self.val31) write begin self.val01 := value.val0; self.val11 := value.val1; self.val21 := value.val2; self.val31 := value.val3; end; public property Col2: Vec4f read new Vec4f(self.val02, self.val12, self.val22, self.val32) write begin self.val02 := value.val0; self.val12 := value.val1; self.val22 := value.val2; self.val32 := value.val3; end; public property ColPtr0: ^Vec4f read pointer(@val00); public property ColPtr1: ^Vec4f read pointer(@val01); public property ColPtr2: ^Vec4f read pointer(@val02); public property ColPtr[x: integer]: ^Vec4f read pointer(IntPtr(pointer(@self)) + x*16); public procedure UseColPtr0(callback: UseVec4fPtrCallbackP); type PVec4f = ^Vec4f; begin callback(PVec4f(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec4fPtrCallbackP); type PVec4f = ^Vec4f; begin callback(PVec4f(pointer(@val01))^); end; public procedure UseColPtr2(callback: UseVec4fPtrCallbackP); type PVec4f = ^Vec4f; begin callback(PVec4f(pointer(@val02))^); end; public function UseColPtr0<T>(callback: UseVec4fPtrCallbackF<T>): T; type PVec4f = ^Vec4f; begin Result := callback(PVec4f(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec4fPtrCallbackF<T>): T; type PVec4f = ^Vec4f; begin Result := callback(PVec4f(pointer(@val01))^); end; public function UseColPtr2<T>(callback: UseVec4fPtrCallbackF<T>): T; type PVec4f = ^Vec4f; begin Result := callback(PVec4f(pointer(@val02))^); end; public static function Scale(k: single): Mtr4x3f := new Mtr4x3f(k, 0.0, 0.0, 0.0, k, 0.0, 0.0, 0.0, k, 0.0, 0.0, 0.0); public static function Traslate(X, Y: single): Mtr4x3f := new Mtr4x3f(1.0, 0.0, X, 0.0, 1.0, Y, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public static function TraslateTransposed(X, Y, Z: single): Mtr4x3f := new Mtr4x3f(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, X, Y, Z); public static function RotateXYcw(rot: double): Mtr4x3f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr4x3f( cr, +sr, 0.0, -sr, cr, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0 ); end; public static function RotateXYccw(rot: double): Mtr4x3f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr4x3f( cr, -sr, 0.0, +sr, cr, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0 ); end; public static function RotateYZcw(rot: double): Mtr4x3f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr4x3f( 1.0, 0.0, 0.0, 0.0, cr, +sr, 0.0, -sr, cr, 0.0, 0.0, 0.0 ); end; public static function RotateYZccw(rot: double): Mtr4x3f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr4x3f( 1.0, 0.0, 0.0, 0.0, cr, -sr, 0.0, +sr, cr, 0.0, 0.0, 0.0 ); end; public static function RotateZXcw(rot: double): Mtr4x3f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr4x3f( cr, 0.0, -sr, 0.0, 1.0, 0.0, +sr, 0.0, cr, 0.0, 0.0, 0.0 ); end; public static function RotateZXccw(rot: double): Mtr4x3f; begin var sr: single := Sin(rot); var cr: single := Cos(rot); Result := new Mtr4x3f( cr, 0.0, +sr, 0.0, 1.0, 0.0, -sr, 0.0, cr, 0.0, 0.0, 0.0 ); end; public static function Rotate3Dcw(u: Vec3f; rot: double): Mtr4x3f; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := -k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := -k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := -k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); end; public static function Rotate3Dccw(u: Vec3f; rot: double): Mtr4x3f; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := -k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := -k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := -k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); end; public static function Random(min, max: single): Mtr4x3f; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val02 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val12 := min + PABCSystem.Random(r); Result.val20 := min + PABCSystem.Random(r); Result.val21 := min + PABCSystem.Random(r); Result.val22 := min + PABCSystem.Random(r); Result.val30 := min + PABCSystem.Random(r); Result.val31 := min + PABCSystem.Random(r); Result.val32 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr4x3f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01, Result.val02); PABCSystem.Read(Result.val10, Result.val11, Result.val12); PABCSystem.Read(Result.val20, Result.val21, Result.val22); PABCSystem.Read(Result.val30, Result.val31, Result.val32); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr4x3f; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01, Result.val02); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11, Result.val12); if row_prompt <> nil then row_prompt(2).Print; PABCSystem.Readln(Result.val20, Result.val21, Result.val22); if row_prompt <> nil then row_prompt(3).Print; PABCSystem.Readln(Result.val30, Result.val31, Result.val32); end; public static function ReadCols(prompt: string := nil): Mtr4x3f; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10, Result.val20, Result.val30); PABCSystem.Read(Result.val01, Result.val11, Result.val21, Result.val31); PABCSystem.Read(Result.val02, Result.val12, Result.val22, Result.val32); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr4x3f; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10, Result.val20, Result.val30); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11, Result.val21, Result.val31); if col_prompt <> nil then col_prompt(2).Print; PABCSystem.Readln(Result.val02, Result.val12, Result.val22, Result.val32); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[4,3]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[0,2] := (Sign(val02)=-1?'-':'+') + Abs(val02).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[1,2] := (Sign(val12)=-1?'-':'+') + Abs(val12).ToString('f2'); ElStrs[2,0] := (Sign(val20)=-1?'-':'+') + Abs(val20).ToString('f2'); ElStrs[2,1] := (Sign(val21)=-1?'-':'+') + Abs(val21).ToString('f2'); ElStrs[2,2] := (Sign(val22)=-1?'-':'+') + Abs(val22).ToString('f2'); ElStrs[3,0] := (Sign(val30)=-1?'-':'+') + Abs(val30).ToString('f2'); ElStrs[3,1] := (Sign(val31)=-1?'-':'+') + Abs(val31).ToString('f2'); ElStrs[3,2] := (Sign(val32)=-1?'-':'+') + Abs(val32).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*3 + 6; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,2].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,2].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[2,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,2].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[3,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[3,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[3,2].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr4x3f; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr4x3f; v: Vec3f): Vec4f := new Vec4f(m.val00*v.val0+m.val01*v.val1+m.val02*v.val2, m.val10*v.val0+m.val11*v.val1+m.val12*v.val2, m.val20*v.val0+m.val21*v.val1+m.val22*v.val2, m.val30*v.val0+m.val31*v.val1+m.val32*v.val2); public static function operator*(v: Vec4f; m: Mtr4x3f): Vec3f := new Vec3f(m.val00*v.val0+m.val10*v.val1+m.val20*v.val2+m.val30*v.val3, m.val01*v.val0+m.val11*v.val1+m.val21*v.val2+m.val31*v.val3, m.val02*v.val0+m.val12*v.val1+m.val22*v.val2+m.val32*v.val3); public static function operator implicit(m: Mtr2x2f): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3f): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3f): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22); public static function operator implicit(m: Mtr4x4f): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22, m.val30, m.val31, m.val32); public static function operator implicit(m: Mtr4x3f): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0, m.val30, m.val31, m.val32, 1.0); public static function operator implicit(m: Mtr2x3f): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3f): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr3x2f): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3f): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr2x4f): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3f): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0); public static function operator implicit(m: Mtr4x2f): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0, m.val30, m.val31, 0.0); public static function operator implicit(m: Mtr4x3f): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, m.val30, m.val31); public static function operator implicit(m: Mtr3x4f): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3f): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0); end; Mtr2x2d = record public val00, val10: double; public val01, val11: double; public constructor(val00, val01, val10, val11: double); begin self.val00 := val00; self.val01 := val01; self.val10 := val10; self.val11 := val11; end; public static property Identity: Mtr2x2d read new Mtr2x2d(1.0, 0.0, 0.0, 1.0); public property Row0: Vec2d read new Vec2d(self.val00, self.val01) write begin self.val00 := value.val0; self.val01 := value.val1; end; public property Row1: Vec2d read new Vec2d(self.val10, self.val11) write begin self.val10 := value.val0; self.val11 := value.val1; end; public property Col0: Vec2d read new Vec2d(self.val00, self.val10) write begin self.val00 := value.val0; self.val10 := value.val1; end; public property Col1: Vec2d read new Vec2d(self.val01, self.val11) write begin self.val01 := value.val0; self.val11 := value.val1; end; public property ColPtr0: ^Vec2d read pointer(@val00); public property ColPtr1: ^Vec2d read pointer(@val01); public property ColPtr[x: integer]: ^Vec2d read pointer(IntPtr(pointer(@self)) + x*16); public procedure UseColPtr0(callback: UseVec2dPtrCallbackP); type PVec2d = ^Vec2d; begin callback(PVec2d(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec2dPtrCallbackP); type PVec2d = ^Vec2d; begin callback(PVec2d(pointer(@val01))^); end; public function UseColPtr0<T>(callback: UseVec2dPtrCallbackF<T>): T; type PVec2d = ^Vec2d; begin Result := callback(PVec2d(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec2dPtrCallbackF<T>): T; type PVec2d = ^Vec2d; begin Result := callback(PVec2d(pointer(@val01))^); end; public static function Scale(k: double): Mtr2x2d := new Mtr2x2d(k, 0.0, 0.0, k); public static function Traslate(X: double): Mtr2x2d := new Mtr2x2d(1.0, X, 0.0, 1.0); public static function TraslateTransposed(X: double): Mtr2x2d := new Mtr2x2d(1.0, 0.0, X, 1.0); public static function RotateXYcw(rot: double): Mtr2x2d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr2x2d( cr, +sr, -sr, cr ); end; public static function RotateXYccw(rot: double): Mtr2x2d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr2x2d( cr, -sr, +sr, cr ); end; public function Det: double; begin Result := val00 * val11 - val01 * val10; end; public static function Random(min, max: double): Mtr2x2d; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr2x2d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01); PABCSystem.Read(Result.val10, Result.val11); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr2x2d; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11); end; public static function ReadCols(prompt: string := nil): Mtr2x2d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10); PABCSystem.Read(Result.val01, Result.val11); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr2x2d; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[2,2]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*2 + 4; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr2x2d; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr2x2d; v: Vec2d): Vec2d := new Vec2d(m.val00*v.val0+m.val01*v.val1, m.val10*v.val0+m.val11*v.val1); public static function operator*(v: Vec2d; m: Mtr2x2d): Vec2d := new Vec2d(m.val00*v.val0+m.val10*v.val1, m.val01*v.val0+m.val11*v.val1); public static function operator implicit(m: Mtr2x2f): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr2x2d): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr2x2d): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4f): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr2x2d): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr2x3f): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr2x2d): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0); public static function operator implicit(m: Mtr3x2f): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr2x2d): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr2x4f): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr2x2d): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr4x2f): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr2x2d): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr3x4f): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr2x2d): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); public static function operator implicit(m: Mtr4x3f): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr2x2d): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); end; Mtr2d = Mtr2x2d; Mtr3x3d = record public val00, val10, val20: double; public val01, val11, val21: double; public val02, val12, val22: double; public constructor(val00, val01, val02, val10, val11, val12, val20, val21, val22: double); begin self.val00 := val00; self.val01 := val01; self.val02 := val02; self.val10 := val10; self.val11 := val11; self.val12 := val12; self.val20 := val20; self.val21 := val21; self.val22 := val22; end; public static property Identity: Mtr3x3d read new Mtr3x3d(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0); public property Row0: Vec3d read new Vec3d(self.val00, self.val01, self.val02) write begin self.val00 := value.val0; self.val01 := value.val1; self.val02 := value.val2; end; public property Row1: Vec3d read new Vec3d(self.val10, self.val11, self.val12) write begin self.val10 := value.val0; self.val11 := value.val1; self.val12 := value.val2; end; public property Row2: Vec3d read new Vec3d(self.val20, self.val21, self.val22) write begin self.val20 := value.val0; self.val21 := value.val1; self.val22 := value.val2; end; public property Col0: Vec3d read new Vec3d(self.val00, self.val10, self.val20) write begin self.val00 := value.val0; self.val10 := value.val1; self.val20 := value.val2; end; public property Col1: Vec3d read new Vec3d(self.val01, self.val11, self.val21) write begin self.val01 := value.val0; self.val11 := value.val1; self.val21 := value.val2; end; public property Col2: Vec3d read new Vec3d(self.val02, self.val12, self.val22) write begin self.val02 := value.val0; self.val12 := value.val1; self.val22 := value.val2; end; public property ColPtr0: ^Vec3d read pointer(@val00); public property ColPtr1: ^Vec3d read pointer(@val01); public property ColPtr2: ^Vec3d read pointer(@val02); public property ColPtr[x: integer]: ^Vec3d read pointer(IntPtr(pointer(@self)) + x*24); public procedure UseColPtr0(callback: UseVec3dPtrCallbackP); type PVec3d = ^Vec3d; begin callback(PVec3d(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec3dPtrCallbackP); type PVec3d = ^Vec3d; begin callback(PVec3d(pointer(@val01))^); end; public procedure UseColPtr2(callback: UseVec3dPtrCallbackP); type PVec3d = ^Vec3d; begin callback(PVec3d(pointer(@val02))^); end; public function UseColPtr0<T>(callback: UseVec3dPtrCallbackF<T>): T; type PVec3d = ^Vec3d; begin Result := callback(PVec3d(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec3dPtrCallbackF<T>): T; type PVec3d = ^Vec3d; begin Result := callback(PVec3d(pointer(@val01))^); end; public function UseColPtr2<T>(callback: UseVec3dPtrCallbackF<T>): T; type PVec3d = ^Vec3d; begin Result := callback(PVec3d(pointer(@val02))^); end; public static function Scale(k: double): Mtr3x3d := new Mtr3x3d(k, 0.0, 0.0, 0.0, k, 0.0, 0.0, 0.0, k); public static function Traslate(X, Y: double): Mtr3x3d := new Mtr3x3d(1.0, 0.0, X, 0.0, 1.0, Y, 0.0, 0.0, 1.0); public static function TraslateTransposed(X, Y: double): Mtr3x3d := new Mtr3x3d(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, X, Y, 1.0); public static function RotateXYcw(rot: double): Mtr3x3d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr3x3d( cr, +sr, 0.0, -sr, cr, 0.0, 0.0, 0.0, 1.0 ); end; public static function RotateXYccw(rot: double): Mtr3x3d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr3x3d( cr, -sr, 0.0, +sr, cr, 0.0, 0.0, 0.0, 1.0 ); end; public static function RotateYZcw(rot: double): Mtr3x3d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr3x3d( 1.0, 0.0, 0.0, 0.0, cr, +sr, 0.0, -sr, cr ); end; public static function RotateYZccw(rot: double): Mtr3x3d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr3x3d( 1.0, 0.0, 0.0, 0.0, cr, -sr, 0.0, +sr, cr ); end; public static function RotateZXcw(rot: double): Mtr3x3d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr3x3d( cr, 0.0, -sr, 0.0, 1.0, 0.0, +sr, 0.0, cr ); end; public static function RotateZXccw(rot: double): Mtr3x3d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr3x3d( cr, 0.0, +sr, 0.0, 1.0, 0.0, -sr, 0.0, cr ); end; public static function Rotate3Dcw(u: Vec3d; rot: double): Mtr3x3d; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := -k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := -k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := -k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); end; public static function Rotate3Dccw(u: Vec3d; rot: double): Mtr3x3d; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := -k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := -k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := -k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); end; public function Det: double; begin var det2_01 := val10 * val21 - val11 * val20; var det2_02 := val10 * val22 - val12 * val20; var det2_12 := val11 * val22 - val12 * val21; Result := val00 * det2_12 - val01 * det2_02 + val02 * det2_01; end; public static function Random(min, max: double): Mtr3x3d; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val02 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val12 := min + PABCSystem.Random(r); Result.val20 := min + PABCSystem.Random(r); Result.val21 := min + PABCSystem.Random(r); Result.val22 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr3x3d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01, Result.val02); PABCSystem.Read(Result.val10, Result.val11, Result.val12); PABCSystem.Read(Result.val20, Result.val21, Result.val22); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr3x3d; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01, Result.val02); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11, Result.val12); if row_prompt <> nil then row_prompt(2).Print; PABCSystem.Readln(Result.val20, Result.val21, Result.val22); end; public static function ReadCols(prompt: string := nil): Mtr3x3d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10, Result.val20); PABCSystem.Read(Result.val01, Result.val11, Result.val21); PABCSystem.Read(Result.val02, Result.val12, Result.val22); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr3x3d; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10, Result.val20); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11, Result.val21); if col_prompt <> nil then col_prompt(2).Print; PABCSystem.Readln(Result.val02, Result.val12, Result.val22); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[3,3]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[0,2] := (Sign(val02)=-1?'-':'+') + Abs(val02).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[1,2] := (Sign(val12)=-1?'-':'+') + Abs(val12).ToString('f2'); ElStrs[2,0] := (Sign(val20)=-1?'-':'+') + Abs(val20).ToString('f2'); ElStrs[2,1] := (Sign(val21)=-1?'-':'+') + Abs(val21).ToString('f2'); ElStrs[2,2] := (Sign(val22)=-1?'-':'+') + Abs(val22).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*3 + 6; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,2].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,2].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[2,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,2].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr3x3d; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr3x3d; v: Vec3d): Vec3d := new Vec3d(m.val00*v.val0+m.val01*v.val1+m.val02*v.val2, m.val10*v.val0+m.val11*v.val1+m.val12*v.val2, m.val20*v.val0+m.val21*v.val1+m.val22*v.val2); public static function operator*(v: Vec3d; m: Mtr3x3d): Vec3d := new Vec3d(m.val00*v.val0+m.val10*v.val1+m.val20*v.val2, m.val01*v.val0+m.val11*v.val1+m.val21*v.val2, m.val02*v.val0+m.val12*v.val1+m.val22*v.val2); public static function operator implicit(m: Mtr2x2f): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr3x3d): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22); public static function operator implicit(m: Mtr3x3d): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22); public static function operator implicit(m: Mtr4x4f): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22); public static function operator implicit(m: Mtr3x3d): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr2x3f): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr3x3d): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr3x2f): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0); public static function operator implicit(m: Mtr3x3d): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr2x4f): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr3x3d): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0); public static function operator implicit(m: Mtr4x2f): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0); public static function operator implicit(m: Mtr3x3d): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, 0.0, 0.0); public static function operator implicit(m: Mtr3x4f): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22); public static function operator implicit(m: Mtr3x3d): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0); public static function operator implicit(m: Mtr4x3f): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22); public static function operator implicit(m: Mtr3x3d): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr2x2d): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr3x3d): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); end; Mtr3d = Mtr3x3d; Mtr4x4d = record public val00, val10, val20, val30: double; public val01, val11, val21, val31: double; public val02, val12, val22, val32: double; public val03, val13, val23, val33: double; public constructor(val00, val01, val02, val03, val10, val11, val12, val13, val20, val21, val22, val23, val30, val31, val32, val33: double); begin self.val00 := val00; self.val01 := val01; self.val02 := val02; self.val03 := val03; self.val10 := val10; self.val11 := val11; self.val12 := val12; self.val13 := val13; self.val20 := val20; self.val21 := val21; self.val22 := val22; self.val23 := val23; self.val30 := val30; self.val31 := val31; self.val32 := val32; self.val33 := val33; end; public static property Identity: Mtr4x4d read new Mtr4x4d(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public property Row0: Vec4d read new Vec4d(self.val00, self.val01, self.val02, self.val03) write begin self.val00 := value.val0; self.val01 := value.val1; self.val02 := value.val2; self.val03 := value.val3; end; public property Row1: Vec4d read new Vec4d(self.val10, self.val11, self.val12, self.val13) write begin self.val10 := value.val0; self.val11 := value.val1; self.val12 := value.val2; self.val13 := value.val3; end; public property Row2: Vec4d read new Vec4d(self.val20, self.val21, self.val22, self.val23) write begin self.val20 := value.val0; self.val21 := value.val1; self.val22 := value.val2; self.val23 := value.val3; end; public property Row3: Vec4d read new Vec4d(self.val30, self.val31, self.val32, self.val33) write begin self.val30 := value.val0; self.val31 := value.val1; self.val32 := value.val2; self.val33 := value.val3; end; public property Col0: Vec4d read new Vec4d(self.val00, self.val10, self.val20, self.val30) write begin self.val00 := value.val0; self.val10 := value.val1; self.val20 := value.val2; self.val30 := value.val3; end; public property Col1: Vec4d read new Vec4d(self.val01, self.val11, self.val21, self.val31) write begin self.val01 := value.val0; self.val11 := value.val1; self.val21 := value.val2; self.val31 := value.val3; end; public property Col2: Vec4d read new Vec4d(self.val02, self.val12, self.val22, self.val32) write begin self.val02 := value.val0; self.val12 := value.val1; self.val22 := value.val2; self.val32 := value.val3; end; public property Col3: Vec4d read new Vec4d(self.val03, self.val13, self.val23, self.val33) write begin self.val03 := value.val0; self.val13 := value.val1; self.val23 := value.val2; self.val33 := value.val3; end; public property ColPtr0: ^Vec4d read pointer(@val00); public property ColPtr1: ^Vec4d read pointer(@val01); public property ColPtr2: ^Vec4d read pointer(@val02); public property ColPtr3: ^Vec4d read pointer(@val03); public property ColPtr[x: integer]: ^Vec4d read pointer(IntPtr(pointer(@self)) + x*32); public procedure UseColPtr0(callback: UseVec4dPtrCallbackP); type PVec4d = ^Vec4d; begin callback(PVec4d(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec4dPtrCallbackP); type PVec4d = ^Vec4d; begin callback(PVec4d(pointer(@val01))^); end; public procedure UseColPtr2(callback: UseVec4dPtrCallbackP); type PVec4d = ^Vec4d; begin callback(PVec4d(pointer(@val02))^); end; public procedure UseColPtr3(callback: UseVec4dPtrCallbackP); type PVec4d = ^Vec4d; begin callback(PVec4d(pointer(@val03))^); end; public function UseColPtr0<T>(callback: UseVec4dPtrCallbackF<T>): T; type PVec4d = ^Vec4d; begin Result := callback(PVec4d(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec4dPtrCallbackF<T>): T; type PVec4d = ^Vec4d; begin Result := callback(PVec4d(pointer(@val01))^); end; public function UseColPtr2<T>(callback: UseVec4dPtrCallbackF<T>): T; type PVec4d = ^Vec4d; begin Result := callback(PVec4d(pointer(@val02))^); end; public function UseColPtr3<T>(callback: UseVec4dPtrCallbackF<T>): T; type PVec4d = ^Vec4d; begin Result := callback(PVec4d(pointer(@val03))^); end; public static function Scale(k: double): Mtr4x4d := new Mtr4x4d(k, 0.0, 0.0, 0.0, 0.0, k, 0.0, 0.0, 0.0, 0.0, k, 0.0, 0.0, 0.0, 0.0, k); public static function Traslate(X, Y, Z: double): Mtr4x4d := new Mtr4x4d(1.0, 0.0, 0.0, X, 0.0, 1.0, 0.0, Y, 0.0, 0.0, 1.0, Z, 0.0, 0.0, 0.0, 1.0); public static function TraslateTransposed(X, Y, Z: double): Mtr4x4d := new Mtr4x4d(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, X, Y, Z, 1.0); public static function RotateXYcw(rot: double): Mtr4x4d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr4x4d( cr, +sr, 0.0, 0.0, -sr, cr, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ); end; public static function RotateXYccw(rot: double): Mtr4x4d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr4x4d( cr, -sr, 0.0, 0.0, +sr, cr, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ); end; public static function RotateYZcw(rot: double): Mtr4x4d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr4x4d( 1.0, 0.0, 0.0, 0.0, 0.0, cr, +sr, 0.0, 0.0, -sr, cr, 0.0, 0.0, 0.0, 0.0, 1.0 ); end; public static function RotateYZccw(rot: double): Mtr4x4d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr4x4d( 1.0, 0.0, 0.0, 0.0, 0.0, cr, -sr, 0.0, 0.0, +sr, cr, 0.0, 0.0, 0.0, 0.0, 1.0 ); end; public static function RotateZXcw(rot: double): Mtr4x4d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr4x4d( cr, 0.0, -sr, 0.0, 0.0, 1.0, 0.0, 0.0, +sr, 0.0, cr, 0.0, 0.0, 0.0, 0.0, 1.0 ); end; public static function RotateZXccw(rot: double): Mtr4x4d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr4x4d( cr, 0.0, +sr, 0.0, 0.0, 1.0, 0.0, 0.0, -sr, 0.0, cr, 0.0, 0.0, 0.0, 0.0, 1.0 ); end; public static function Rotate3Dcw(u: Vec3d; rot: double): Mtr4x4d; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := -k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := -k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := -k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); Result.val33 := 1; end; public static function Rotate3Dccw(u: Vec3d; rot: double): Mtr4x4d; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := -k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := -k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := -k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); Result.val33 := 1; end; public function Det: double; begin var det2_01 := val20 * val31 - val21 * val30; var det2_02 := val20 * val32 - val22 * val30; var det2_03 := val20 * val33 - val23 * val30; var det2_12 := val21 * val32 - val22 * val31; var det2_13 := val21 * val33 - val23 * val31; var det2_23 := val22 * val33 - val23 * val32; var det3_012 := val10 * det2_12 - val11 * det2_02 + val12 * det2_01; var det3_013 := val10 * det2_13 - val11 * det2_03 + val13 * det2_01; var det3_023 := val10 * det2_23 - val12 * det2_03 + val13 * det2_02; var det3_123 := val11 * det2_23 - val12 * det2_13 + val13 * det2_12; Result := val00 * det3_123 - val01 * det3_023 + val02 * det3_013 - val03 * det3_012; end; public static function Random(min, max: double): Mtr4x4d; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val02 := min + PABCSystem.Random(r); Result.val03 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val12 := min + PABCSystem.Random(r); Result.val13 := min + PABCSystem.Random(r); Result.val20 := min + PABCSystem.Random(r); Result.val21 := min + PABCSystem.Random(r); Result.val22 := min + PABCSystem.Random(r); Result.val23 := min + PABCSystem.Random(r); Result.val30 := min + PABCSystem.Random(r); Result.val31 := min + PABCSystem.Random(r); Result.val32 := min + PABCSystem.Random(r); Result.val33 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr4x4d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01, Result.val02, Result.val03); PABCSystem.Read(Result.val10, Result.val11, Result.val12, Result.val13); PABCSystem.Read(Result.val20, Result.val21, Result.val22, Result.val23); PABCSystem.Read(Result.val30, Result.val31, Result.val32, Result.val33); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr4x4d; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01, Result.val02, Result.val03); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11, Result.val12, Result.val13); if row_prompt <> nil then row_prompt(2).Print; PABCSystem.Readln(Result.val20, Result.val21, Result.val22, Result.val23); if row_prompt <> nil then row_prompt(3).Print; PABCSystem.Readln(Result.val30, Result.val31, Result.val32, Result.val33); end; public static function ReadCols(prompt: string := nil): Mtr4x4d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10, Result.val20, Result.val30); PABCSystem.Read(Result.val01, Result.val11, Result.val21, Result.val31); PABCSystem.Read(Result.val02, Result.val12, Result.val22, Result.val32); PABCSystem.Read(Result.val03, Result.val13, Result.val23, Result.val33); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr4x4d; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10, Result.val20, Result.val30); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11, Result.val21, Result.val31); if col_prompt <> nil then col_prompt(2).Print; PABCSystem.Readln(Result.val02, Result.val12, Result.val22, Result.val32); if col_prompt <> nil then col_prompt(3).Print; PABCSystem.Readln(Result.val03, Result.val13, Result.val23, Result.val33); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[4,4]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[0,2] := (Sign(val02)=-1?'-':'+') + Abs(val02).ToString('f2'); ElStrs[0,3] := (Sign(val03)=-1?'-':'+') + Abs(val03).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[1,2] := (Sign(val12)=-1?'-':'+') + Abs(val12).ToString('f2'); ElStrs[1,3] := (Sign(val13)=-1?'-':'+') + Abs(val13).ToString('f2'); ElStrs[2,0] := (Sign(val20)=-1?'-':'+') + Abs(val20).ToString('f2'); ElStrs[2,1] := (Sign(val21)=-1?'-':'+') + Abs(val21).ToString('f2'); ElStrs[2,2] := (Sign(val22)=-1?'-':'+') + Abs(val22).ToString('f2'); ElStrs[2,3] := (Sign(val23)=-1?'-':'+') + Abs(val23).ToString('f2'); ElStrs[3,0] := (Sign(val30)=-1?'-':'+') + Abs(val30).ToString('f2'); ElStrs[3,1] := (Sign(val31)=-1?'-':'+') + Abs(val31).ToString('f2'); ElStrs[3,2] := (Sign(val32)=-1?'-':'+') + Abs(val32).ToString('f2'); ElStrs[3,3] := (Sign(val33)=-1?'-':'+') + Abs(val33).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*4 + 8; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,3].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,3].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[2,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,3].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[3,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[3,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[3,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[3,3].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr4x4d; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr4x4d; v: Vec4d): Vec4d := new Vec4d(m.val00*v.val0+m.val01*v.val1+m.val02*v.val2+m.val03*v.val3, m.val10*v.val0+m.val11*v.val1+m.val12*v.val2+m.val13*v.val3, m.val20*v.val0+m.val21*v.val1+m.val22*v.val2+m.val23*v.val3, m.val30*v.val0+m.val31*v.val1+m.val32*v.val2+m.val33*v.val3); public static function operator*(v: Vec4d; m: Mtr4x4d): Vec4d := new Vec4d(m.val00*v.val0+m.val10*v.val1+m.val20*v.val2+m.val30*v.val3, m.val01*v.val0+m.val11*v.val1+m.val21*v.val2+m.val31*v.val3, m.val02*v.val0+m.val12*v.val1+m.val22*v.val2+m.val32*v.val3, m.val03*v.val0+m.val13*v.val1+m.val23*v.val2+m.val33*v.val3); public static function operator implicit(m: Mtr2x2f): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4d): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4d): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22); public static function operator implicit(m: Mtr4x4f): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, m.val20, m.val21, m.val22, m.val23, m.val30, m.val31, m.val32, m.val33); public static function operator implicit(m: Mtr4x4d): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, m.val20, m.val21, m.val22, m.val23, m.val30, m.val31, m.val32, m.val33); public static function operator implicit(m: Mtr2x3f): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4d): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr3x2f): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4d): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr2x4f): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4d): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13); public static function operator implicit(m: Mtr4x2f): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0, m.val30, m.val31, 0.0, 1.0); public static function operator implicit(m: Mtr4x4d): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, m.val30, m.val31); public static function operator implicit(m: Mtr3x4f): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, m.val20, m.val21, m.val22, m.val23, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4d): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, m.val20, m.val21, m.val22, m.val23); public static function operator implicit(m: Mtr4x3f): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0, m.val30, m.val31, m.val32, 1.0); public static function operator implicit(m: Mtr4x4d): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22, m.val30, m.val31, m.val32); public static function operator implicit(m: Mtr2x2d): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4d): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3d): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4d): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22); end; Mtr4d = Mtr4x4d; Mtr2x3d = record public val00, val10: double; public val01, val11: double; public val02, val12: double; public constructor(val00, val01, val02, val10, val11, val12: double); begin self.val00 := val00; self.val01 := val01; self.val02 := val02; self.val10 := val10; self.val11 := val11; self.val12 := val12; end; public static property Identity: Mtr2x3d read new Mtr2x3d(1.0, 0.0, 0.0, 0.0, 1.0, 0.0); public property Row0: Vec3d read new Vec3d(self.val00, self.val01, self.val02) write begin self.val00 := value.val0; self.val01 := value.val1; self.val02 := value.val2; end; public property Row1: Vec3d read new Vec3d(self.val10, self.val11, self.val12) write begin self.val10 := value.val0; self.val11 := value.val1; self.val12 := value.val2; end; public property Col0: Vec2d read new Vec2d(self.val00, self.val10) write begin self.val00 := value.val0; self.val10 := value.val1; end; public property Col1: Vec2d read new Vec2d(self.val01, self.val11) write begin self.val01 := value.val0; self.val11 := value.val1; end; public property Col2: Vec2d read new Vec2d(self.val02, self.val12) write begin self.val02 := value.val0; self.val12 := value.val1; end; public property ColPtr0: ^Vec2d read pointer(@val00); public property ColPtr1: ^Vec2d read pointer(@val01); public property ColPtr2: ^Vec2d read pointer(@val02); public property ColPtr[x: integer]: ^Vec2d read pointer(IntPtr(pointer(@self)) + x*16); public procedure UseColPtr0(callback: UseVec2dPtrCallbackP); type PVec2d = ^Vec2d; begin callback(PVec2d(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec2dPtrCallbackP); type PVec2d = ^Vec2d; begin callback(PVec2d(pointer(@val01))^); end; public procedure UseColPtr2(callback: UseVec2dPtrCallbackP); type PVec2d = ^Vec2d; begin callback(PVec2d(pointer(@val02))^); end; public function UseColPtr0<T>(callback: UseVec2dPtrCallbackF<T>): T; type PVec2d = ^Vec2d; begin Result := callback(PVec2d(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec2dPtrCallbackF<T>): T; type PVec2d = ^Vec2d; begin Result := callback(PVec2d(pointer(@val01))^); end; public function UseColPtr2<T>(callback: UseVec2dPtrCallbackF<T>): T; type PVec2d = ^Vec2d; begin Result := callback(PVec2d(pointer(@val02))^); end; public static function Scale(k: double): Mtr2x3d := new Mtr2x3d(k, 0.0, 0.0, 0.0, k, 0.0); public static function Traslate(X, Y: double): Mtr2x3d := new Mtr2x3d(1.0, 0.0, X, 0.0, 1.0, Y); public static function TraslateTransposed(X: double): Mtr2x3d := new Mtr2x3d(1.0, 0.0, 0.0, X, 1.0, 0.0); public static function RotateXYcw(rot: double): Mtr2x3d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr2x3d( cr, +sr, 0.0, -sr, cr, 0.0 ); end; public static function RotateXYccw(rot: double): Mtr2x3d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr2x3d( cr, -sr, 0.0, +sr, cr, 0.0 ); end; public static function Random(min, max: double): Mtr2x3d; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val02 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val12 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr2x3d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01, Result.val02); PABCSystem.Read(Result.val10, Result.val11, Result.val12); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr2x3d; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01, Result.val02); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11, Result.val12); end; public static function ReadCols(prompt: string := nil): Mtr2x3d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10); PABCSystem.Read(Result.val01, Result.val11); PABCSystem.Read(Result.val02, Result.val12); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr2x3d; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11); if col_prompt <> nil then col_prompt(2).Print; PABCSystem.Readln(Result.val02, Result.val12); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[2,3]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[0,2] := (Sign(val02)=-1?'-':'+') + Abs(val02).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[1,2] := (Sign(val12)=-1?'-':'+') + Abs(val12).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*3 + 6; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,2].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,2].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr2x3d; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr2x3d; v: Vec3d): Vec2d := new Vec2d(m.val00*v.val0+m.val01*v.val1+m.val02*v.val2, m.val10*v.val0+m.val11*v.val1+m.val12*v.val2); public static function operator*(v: Vec2d; m: Mtr2x3d): Vec3d := new Vec3d(m.val00*v.val0+m.val10*v.val1, m.val01*v.val0+m.val11*v.val1, m.val02*v.val0+m.val12*v.val1); public static function operator implicit(m: Mtr2x2f): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0); public static function operator implicit(m: Mtr2x3d): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr2x3d): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4f): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr2x3d): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr2x3f): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr2x3d): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr3x2f): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0); public static function operator implicit(m: Mtr2x3d): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr2x4f): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr2x3d): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0); public static function operator implicit(m: Mtr4x2f): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0); public static function operator implicit(m: Mtr2x3d): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr3x4f): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr2x3d): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, 0.0, 0.0, 1.0, 0.0); public static function operator implicit(m: Mtr4x3f): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr2x3d): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr2x2d): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0); public static function operator implicit(m: Mtr2x3d): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3d): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr2x3d): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4d): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr2x3d): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); end; Mtr3x2d = record public val00, val10, val20: double; public val01, val11, val21: double; public constructor(val00, val01, val10, val11, val20, val21: double); begin self.val00 := val00; self.val01 := val01; self.val10 := val10; self.val11 := val11; self.val20 := val20; self.val21 := val21; end; public static property Identity: Mtr3x2d read new Mtr3x2d(1.0, 0.0, 0.0, 1.0, 0.0, 0.0); public property Row0: Vec2d read new Vec2d(self.val00, self.val01) write begin self.val00 := value.val0; self.val01 := value.val1; end; public property Row1: Vec2d read new Vec2d(self.val10, self.val11) write begin self.val10 := value.val0; self.val11 := value.val1; end; public property Row2: Vec2d read new Vec2d(self.val20, self.val21) write begin self.val20 := value.val0; self.val21 := value.val1; end; public property Col0: Vec3d read new Vec3d(self.val00, self.val10, self.val20) write begin self.val00 := value.val0; self.val10 := value.val1; self.val20 := value.val2; end; public property Col1: Vec3d read new Vec3d(self.val01, self.val11, self.val21) write begin self.val01 := value.val0; self.val11 := value.val1; self.val21 := value.val2; end; public property ColPtr0: ^Vec3d read pointer(@val00); public property ColPtr1: ^Vec3d read pointer(@val01); public property ColPtr[x: integer]: ^Vec3d read pointer(IntPtr(pointer(@self)) + x*24); public procedure UseColPtr0(callback: UseVec3dPtrCallbackP); type PVec3d = ^Vec3d; begin callback(PVec3d(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec3dPtrCallbackP); type PVec3d = ^Vec3d; begin callback(PVec3d(pointer(@val01))^); end; public function UseColPtr0<T>(callback: UseVec3dPtrCallbackF<T>): T; type PVec3d = ^Vec3d; begin Result := callback(PVec3d(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec3dPtrCallbackF<T>): T; type PVec3d = ^Vec3d; begin Result := callback(PVec3d(pointer(@val01))^); end; public static function Scale(k: double): Mtr3x2d := new Mtr3x2d(k, 0.0, 0.0, k, 0.0, 0.0); public static function Traslate(X: double): Mtr3x2d := new Mtr3x2d(1.0, X, 0.0, 1.0, 0.0, 0.0); public static function TraslateTransposed(X, Y: double): Mtr3x2d := new Mtr3x2d(1.0, 0.0, 0.0, 1.0, X, Y); public static function RotateXYcw(rot: double): Mtr3x2d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr3x2d( cr, +sr, -sr, cr, 0.0, 0.0 ); end; public static function RotateXYccw(rot: double): Mtr3x2d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr3x2d( cr, -sr, +sr, cr, 0.0, 0.0 ); end; public static function Random(min, max: double): Mtr3x2d; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val20 := min + PABCSystem.Random(r); Result.val21 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr3x2d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01); PABCSystem.Read(Result.val10, Result.val11); PABCSystem.Read(Result.val20, Result.val21); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr3x2d; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11); if row_prompt <> nil then row_prompt(2).Print; PABCSystem.Readln(Result.val20, Result.val21); end; public static function ReadCols(prompt: string := nil): Mtr3x2d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10, Result.val20); PABCSystem.Read(Result.val01, Result.val11, Result.val21); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr3x2d; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10, Result.val20); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11, Result.val21); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[3,2]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[2,0] := (Sign(val20)=-1?'-':'+') + Abs(val20).ToString('f2'); ElStrs[2,1] := (Sign(val21)=-1?'-':'+') + Abs(val21).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*2 + 4; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[2,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,1].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr3x2d; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr3x2d; v: Vec2d): Vec3d := new Vec3d(m.val00*v.val0+m.val01*v.val1, m.val10*v.val0+m.val11*v.val1, m.val20*v.val0+m.val21*v.val1); public static function operator*(v: Vec3d; m: Mtr3x2d): Vec2d := new Vec2d(m.val00*v.val0+m.val10*v.val1+m.val20*v.val2, m.val01*v.val0+m.val11*v.val1+m.val21*v.val2); public static function operator implicit(m: Mtr2x2f): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr3x2d): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr3x2d): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0); public static function operator implicit(m: Mtr4x4f): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr3x2d): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr2x3f): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr3x2d): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0); public static function operator implicit(m: Mtr3x2f): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr3x2d): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr2x4f): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr3x2d): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr4x2f): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr3x2d): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, 0.0, 0.0); public static function operator implicit(m: Mtr3x4f): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr3x2d): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0); public static function operator implicit(m: Mtr4x3f): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr3x2d): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr2x2d): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr3x2d): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3d): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr3x2d): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0); public static function operator implicit(m: Mtr4x4d): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr3x2d): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr2x3d): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr3x2d): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0); end; Mtr2x4d = record public val00, val10: double; public val01, val11: double; public val02, val12: double; public val03, val13: double; public constructor(val00, val01, val02, val03, val10, val11, val12, val13: double); begin self.val00 := val00; self.val01 := val01; self.val02 := val02; self.val03 := val03; self.val10 := val10; self.val11 := val11; self.val12 := val12; self.val13 := val13; end; public static property Identity: Mtr2x4d read new Mtr2x4d(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0); public property Row0: Vec4d read new Vec4d(self.val00, self.val01, self.val02, self.val03) write begin self.val00 := value.val0; self.val01 := value.val1; self.val02 := value.val2; self.val03 := value.val3; end; public property Row1: Vec4d read new Vec4d(self.val10, self.val11, self.val12, self.val13) write begin self.val10 := value.val0; self.val11 := value.val1; self.val12 := value.val2; self.val13 := value.val3; end; public property Col0: Vec2d read new Vec2d(self.val00, self.val10) write begin self.val00 := value.val0; self.val10 := value.val1; end; public property Col1: Vec2d read new Vec2d(self.val01, self.val11) write begin self.val01 := value.val0; self.val11 := value.val1; end; public property Col2: Vec2d read new Vec2d(self.val02, self.val12) write begin self.val02 := value.val0; self.val12 := value.val1; end; public property Col3: Vec2d read new Vec2d(self.val03, self.val13) write begin self.val03 := value.val0; self.val13 := value.val1; end; public property ColPtr0: ^Vec2d read pointer(@val00); public property ColPtr1: ^Vec2d read pointer(@val01); public property ColPtr2: ^Vec2d read pointer(@val02); public property ColPtr3: ^Vec2d read pointer(@val03); public property ColPtr[x: integer]: ^Vec2d read pointer(IntPtr(pointer(@self)) + x*16); public procedure UseColPtr0(callback: UseVec2dPtrCallbackP); type PVec2d = ^Vec2d; begin callback(PVec2d(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec2dPtrCallbackP); type PVec2d = ^Vec2d; begin callback(PVec2d(pointer(@val01))^); end; public procedure UseColPtr2(callback: UseVec2dPtrCallbackP); type PVec2d = ^Vec2d; begin callback(PVec2d(pointer(@val02))^); end; public procedure UseColPtr3(callback: UseVec2dPtrCallbackP); type PVec2d = ^Vec2d; begin callback(PVec2d(pointer(@val03))^); end; public function UseColPtr0<T>(callback: UseVec2dPtrCallbackF<T>): T; type PVec2d = ^Vec2d; begin Result := callback(PVec2d(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec2dPtrCallbackF<T>): T; type PVec2d = ^Vec2d; begin Result := callback(PVec2d(pointer(@val01))^); end; public function UseColPtr2<T>(callback: UseVec2dPtrCallbackF<T>): T; type PVec2d = ^Vec2d; begin Result := callback(PVec2d(pointer(@val02))^); end; public function UseColPtr3<T>(callback: UseVec2dPtrCallbackF<T>): T; type PVec2d = ^Vec2d; begin Result := callback(PVec2d(pointer(@val03))^); end; public static function Scale(k: double): Mtr2x4d := new Mtr2x4d(k, 0.0, 0.0, 0.0, 0.0, k, 0.0, 0.0); public static function Traslate(X, Y: double): Mtr2x4d := new Mtr2x4d(1.0, 0.0, 0.0, X, 0.0, 1.0, 0.0, Y); public static function TraslateTransposed(X: double): Mtr2x4d := new Mtr2x4d(1.0, 0.0, 0.0, 0.0, X, 1.0, 0.0, 0.0); public static function RotateXYcw(rot: double): Mtr2x4d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr2x4d( cr, +sr, 0.0, 0.0, -sr, cr, 0.0, 0.0 ); end; public static function RotateXYccw(rot: double): Mtr2x4d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr2x4d( cr, -sr, 0.0, 0.0, +sr, cr, 0.0, 0.0 ); end; public static function Random(min, max: double): Mtr2x4d; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val02 := min + PABCSystem.Random(r); Result.val03 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val12 := min + PABCSystem.Random(r); Result.val13 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr2x4d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01, Result.val02, Result.val03); PABCSystem.Read(Result.val10, Result.val11, Result.val12, Result.val13); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr2x4d; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01, Result.val02, Result.val03); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11, Result.val12, Result.val13); end; public static function ReadCols(prompt: string := nil): Mtr2x4d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10); PABCSystem.Read(Result.val01, Result.val11); PABCSystem.Read(Result.val02, Result.val12); PABCSystem.Read(Result.val03, Result.val13); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr2x4d; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11); if col_prompt <> nil then col_prompt(2).Print; PABCSystem.Readln(Result.val02, Result.val12); if col_prompt <> nil then col_prompt(3).Print; PABCSystem.Readln(Result.val03, Result.val13); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[2,4]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[0,2] := (Sign(val02)=-1?'-':'+') + Abs(val02).ToString('f2'); ElStrs[0,3] := (Sign(val03)=-1?'-':'+') + Abs(val03).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[1,2] := (Sign(val12)=-1?'-':'+') + Abs(val12).ToString('f2'); ElStrs[1,3] := (Sign(val13)=-1?'-':'+') + Abs(val13).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*4 + 8; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,3].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,3].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr2x4d; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr2x4d; v: Vec4d): Vec2d := new Vec2d(m.val00*v.val0+m.val01*v.val1+m.val02*v.val2+m.val03*v.val3, m.val10*v.val0+m.val11*v.val1+m.val12*v.val2+m.val13*v.val3); public static function operator*(v: Vec2d; m: Mtr2x4d): Vec4d := new Vec4d(m.val00*v.val0+m.val10*v.val1, m.val01*v.val0+m.val11*v.val1, m.val02*v.val0+m.val12*v.val1, m.val03*v.val0+m.val13*v.val1); public static function operator implicit(m: Mtr2x2f): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr2x4d): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0); public static function operator implicit(m: Mtr2x4d): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4f): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13); public static function operator implicit(m: Mtr2x4d): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr2x3f): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0); public static function operator implicit(m: Mtr2x4d): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr3x2f): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr2x4d): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr2x4f): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13); public static function operator implicit(m: Mtr2x4d): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13); public static function operator implicit(m: Mtr4x2f): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr2x4d): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr3x4f): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13); public static function operator implicit(m: Mtr2x4d): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, 0.0, 0.0, 1.0, 0.0); public static function operator implicit(m: Mtr4x3f): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0); public static function operator implicit(m: Mtr2x4d): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr2x2d): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr2x4d): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3d): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0); public static function operator implicit(m: Mtr2x4d): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr4x4d): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13); public static function operator implicit(m: Mtr2x4d): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr2x3d): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0); public static function operator implicit(m: Mtr2x4d): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr3x2d): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr2x4d): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0); end; Mtr4x2d = record public val00, val10, val20, val30: double; public val01, val11, val21, val31: double; public constructor(val00, val01, val10, val11, val20, val21, val30, val31: double); begin self.val00 := val00; self.val01 := val01; self.val10 := val10; self.val11 := val11; self.val20 := val20; self.val21 := val21; self.val30 := val30; self.val31 := val31; end; public static property Identity: Mtr4x2d read new Mtr4x2d(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0); public property Row0: Vec2d read new Vec2d(self.val00, self.val01) write begin self.val00 := value.val0; self.val01 := value.val1; end; public property Row1: Vec2d read new Vec2d(self.val10, self.val11) write begin self.val10 := value.val0; self.val11 := value.val1; end; public property Row2: Vec2d read new Vec2d(self.val20, self.val21) write begin self.val20 := value.val0; self.val21 := value.val1; end; public property Row3: Vec2d read new Vec2d(self.val30, self.val31) write begin self.val30 := value.val0; self.val31 := value.val1; end; public property Col0: Vec4d read new Vec4d(self.val00, self.val10, self.val20, self.val30) write begin self.val00 := value.val0; self.val10 := value.val1; self.val20 := value.val2; self.val30 := value.val3; end; public property Col1: Vec4d read new Vec4d(self.val01, self.val11, self.val21, self.val31) write begin self.val01 := value.val0; self.val11 := value.val1; self.val21 := value.val2; self.val31 := value.val3; end; public property ColPtr0: ^Vec4d read pointer(@val00); public property ColPtr1: ^Vec4d read pointer(@val01); public property ColPtr[x: integer]: ^Vec4d read pointer(IntPtr(pointer(@self)) + x*32); public procedure UseColPtr0(callback: UseVec4dPtrCallbackP); type PVec4d = ^Vec4d; begin callback(PVec4d(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec4dPtrCallbackP); type PVec4d = ^Vec4d; begin callback(PVec4d(pointer(@val01))^); end; public function UseColPtr0<T>(callback: UseVec4dPtrCallbackF<T>): T; type PVec4d = ^Vec4d; begin Result := callback(PVec4d(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec4dPtrCallbackF<T>): T; type PVec4d = ^Vec4d; begin Result := callback(PVec4d(pointer(@val01))^); end; public static function Scale(k: double): Mtr4x2d := new Mtr4x2d(k, 0.0, 0.0, k, 0.0, 0.0, 0.0, 0.0); public static function Traslate(X: double): Mtr4x2d := new Mtr4x2d(1.0, X, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0); public static function TraslateTransposed(X, Y: double): Mtr4x2d := new Mtr4x2d(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, X, Y); public static function RotateXYcw(rot: double): Mtr4x2d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr4x2d( cr, +sr, -sr, cr, 0.0, 0.0, 0.0, 0.0 ); end; public static function RotateXYccw(rot: double): Mtr4x2d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr4x2d( cr, -sr, +sr, cr, 0.0, 0.0, 0.0, 0.0 ); end; public static function Random(min, max: double): Mtr4x2d; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val20 := min + PABCSystem.Random(r); Result.val21 := min + PABCSystem.Random(r); Result.val30 := min + PABCSystem.Random(r); Result.val31 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr4x2d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01); PABCSystem.Read(Result.val10, Result.val11); PABCSystem.Read(Result.val20, Result.val21); PABCSystem.Read(Result.val30, Result.val31); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr4x2d; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11); if row_prompt <> nil then row_prompt(2).Print; PABCSystem.Readln(Result.val20, Result.val21); if row_prompt <> nil then row_prompt(3).Print; PABCSystem.Readln(Result.val30, Result.val31); end; public static function ReadCols(prompt: string := nil): Mtr4x2d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10, Result.val20, Result.val30); PABCSystem.Read(Result.val01, Result.val11, Result.val21, Result.val31); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr4x2d; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10, Result.val20, Result.val30); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11, Result.val21, Result.val31); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[4,2]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[2,0] := (Sign(val20)=-1?'-':'+') + Abs(val20).ToString('f2'); ElStrs[2,1] := (Sign(val21)=-1?'-':'+') + Abs(val21).ToString('f2'); ElStrs[3,0] := (Sign(val30)=-1?'-':'+') + Abs(val30).ToString('f2'); ElStrs[3,1] := (Sign(val31)=-1?'-':'+') + Abs(val31).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*2 + 4; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[2,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,1].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[3,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[3,1].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr4x2d; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr4x2d; v: Vec2d): Vec4d := new Vec4d(m.val00*v.val0+m.val01*v.val1, m.val10*v.val0+m.val11*v.val1, m.val20*v.val0+m.val21*v.val1, m.val30*v.val0+m.val31*v.val1); public static function operator*(v: Vec4d; m: Mtr4x2d): Vec2d := new Vec2d(m.val00*v.val0+m.val10*v.val1+m.val20*v.val2+m.val30*v.val3, m.val01*v.val0+m.val11*v.val1+m.val21*v.val2+m.val31*v.val3); public static function operator implicit(m: Mtr2x2f): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x2d): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, 0.0, 0.0); public static function operator implicit(m: Mtr4x2d): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0); public static function operator implicit(m: Mtr4x4f): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, m.val30, m.val31); public static function operator implicit(m: Mtr4x2d): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0, m.val30, m.val31, 0.0, 1.0); public static function operator implicit(m: Mtr2x3f): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x2d): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0); public static function operator implicit(m: Mtr3x2f): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, 0.0, 0.0); public static function operator implicit(m: Mtr4x2d): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr2x4f): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x2d): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0); public static function operator implicit(m: Mtr4x2f): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, m.val30, m.val31); public static function operator implicit(m: Mtr4x2d): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, m.val30, m.val31); public static function operator implicit(m: Mtr3x4f): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, 0.0, 0.0); public static function operator implicit(m: Mtr4x2d): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0); public static function operator implicit(m: Mtr4x3f): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, m.val30, m.val31); public static function operator implicit(m: Mtr4x2d): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0, m.val30, m.val31, 0.0); public static function operator implicit(m: Mtr2x2d): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x2d): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3d): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, 0.0, 0.0); public static function operator implicit(m: Mtr4x2d): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0); public static function operator implicit(m: Mtr4x4d): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, m.val30, m.val31); public static function operator implicit(m: Mtr4x2d): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0, m.val30, m.val31, 0.0, 1.0); public static function operator implicit(m: Mtr2x3d): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x2d): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0); public static function operator implicit(m: Mtr3x2d): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, 0.0, 0.0); public static function operator implicit(m: Mtr4x2d): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr2x4d): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x2d): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0); end; Mtr3x4d = record public val00, val10, val20: double; public val01, val11, val21: double; public val02, val12, val22: double; public val03, val13, val23: double; public constructor(val00, val01, val02, val03, val10, val11, val12, val13, val20, val21, val22, val23: double); begin self.val00 := val00; self.val01 := val01; self.val02 := val02; self.val03 := val03; self.val10 := val10; self.val11 := val11; self.val12 := val12; self.val13 := val13; self.val20 := val20; self.val21 := val21; self.val22 := val22; self.val23 := val23; end; public static property Identity: Mtr3x4d read new Mtr3x4d(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); public property Row0: Vec4d read new Vec4d(self.val00, self.val01, self.val02, self.val03) write begin self.val00 := value.val0; self.val01 := value.val1; self.val02 := value.val2; self.val03 := value.val3; end; public property Row1: Vec4d read new Vec4d(self.val10, self.val11, self.val12, self.val13) write begin self.val10 := value.val0; self.val11 := value.val1; self.val12 := value.val2; self.val13 := value.val3; end; public property Row2: Vec4d read new Vec4d(self.val20, self.val21, self.val22, self.val23) write begin self.val20 := value.val0; self.val21 := value.val1; self.val22 := value.val2; self.val23 := value.val3; end; public property Col0: Vec3d read new Vec3d(self.val00, self.val10, self.val20) write begin self.val00 := value.val0; self.val10 := value.val1; self.val20 := value.val2; end; public property Col1: Vec3d read new Vec3d(self.val01, self.val11, self.val21) write begin self.val01 := value.val0; self.val11 := value.val1; self.val21 := value.val2; end; public property Col2: Vec3d read new Vec3d(self.val02, self.val12, self.val22) write begin self.val02 := value.val0; self.val12 := value.val1; self.val22 := value.val2; end; public property Col3: Vec3d read new Vec3d(self.val03, self.val13, self.val23) write begin self.val03 := value.val0; self.val13 := value.val1; self.val23 := value.val2; end; public property ColPtr0: ^Vec3d read pointer(@val00); public property ColPtr1: ^Vec3d read pointer(@val01); public property ColPtr2: ^Vec3d read pointer(@val02); public property ColPtr3: ^Vec3d read pointer(@val03); public property ColPtr[x: integer]: ^Vec3d read pointer(IntPtr(pointer(@self)) + x*24); public procedure UseColPtr0(callback: UseVec3dPtrCallbackP); type PVec3d = ^Vec3d; begin callback(PVec3d(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec3dPtrCallbackP); type PVec3d = ^Vec3d; begin callback(PVec3d(pointer(@val01))^); end; public procedure UseColPtr2(callback: UseVec3dPtrCallbackP); type PVec3d = ^Vec3d; begin callback(PVec3d(pointer(@val02))^); end; public procedure UseColPtr3(callback: UseVec3dPtrCallbackP); type PVec3d = ^Vec3d; begin callback(PVec3d(pointer(@val03))^); end; public function UseColPtr0<T>(callback: UseVec3dPtrCallbackF<T>): T; type PVec3d = ^Vec3d; begin Result := callback(PVec3d(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec3dPtrCallbackF<T>): T; type PVec3d = ^Vec3d; begin Result := callback(PVec3d(pointer(@val01))^); end; public function UseColPtr2<T>(callback: UseVec3dPtrCallbackF<T>): T; type PVec3d = ^Vec3d; begin Result := callback(PVec3d(pointer(@val02))^); end; public function UseColPtr3<T>(callback: UseVec3dPtrCallbackF<T>): T; type PVec3d = ^Vec3d; begin Result := callback(PVec3d(pointer(@val03))^); end; public static function Scale(k: double): Mtr3x4d := new Mtr3x4d(k, 0.0, 0.0, 0.0, 0.0, k, 0.0, 0.0, 0.0, 0.0, k, 0.0); public static function Traslate(X, Y, Z: double): Mtr3x4d := new Mtr3x4d(1.0, 0.0, 0.0, X, 0.0, 1.0, 0.0, Y, 0.0, 0.0, 1.0, Z); public static function TraslateTransposed(X, Y: double): Mtr3x4d := new Mtr3x4d(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, X, Y, 1.0, 0.0); public static function RotateXYcw(rot: double): Mtr3x4d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr3x4d( cr, +sr, 0.0, 0.0, -sr, cr, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 ); end; public static function RotateXYccw(rot: double): Mtr3x4d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr3x4d( cr, -sr, 0.0, 0.0, +sr, cr, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 ); end; public static function RotateYZcw(rot: double): Mtr3x4d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr3x4d( 1.0, 0.0, 0.0, 0.0, 0.0, cr, +sr, 0.0, 0.0, -sr, cr, 0.0 ); end; public static function RotateYZccw(rot: double): Mtr3x4d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr3x4d( 1.0, 0.0, 0.0, 0.0, 0.0, cr, -sr, 0.0, 0.0, +sr, cr, 0.0 ); end; public static function RotateZXcw(rot: double): Mtr3x4d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr3x4d( cr, 0.0, -sr, 0.0, 0.0, 1.0, 0.0, 0.0, +sr, 0.0, cr, 0.0 ); end; public static function RotateZXccw(rot: double): Mtr3x4d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr3x4d( cr, 0.0, +sr, 0.0, 0.0, 1.0, 0.0, 0.0, -sr, 0.0, cr, 0.0 ); end; public static function Rotate3Dcw(u: Vec3d; rot: double): Mtr3x4d; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := -k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := -k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := -k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); end; public static function Rotate3Dccw(u: Vec3d; rot: double): Mtr3x4d; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := -k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := -k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := -k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); end; public static function Random(min, max: double): Mtr3x4d; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val02 := min + PABCSystem.Random(r); Result.val03 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val12 := min + PABCSystem.Random(r); Result.val13 := min + PABCSystem.Random(r); Result.val20 := min + PABCSystem.Random(r); Result.val21 := min + PABCSystem.Random(r); Result.val22 := min + PABCSystem.Random(r); Result.val23 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr3x4d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01, Result.val02, Result.val03); PABCSystem.Read(Result.val10, Result.val11, Result.val12, Result.val13); PABCSystem.Read(Result.val20, Result.val21, Result.val22, Result.val23); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr3x4d; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01, Result.val02, Result.val03); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11, Result.val12, Result.val13); if row_prompt <> nil then row_prompt(2).Print; PABCSystem.Readln(Result.val20, Result.val21, Result.val22, Result.val23); end; public static function ReadCols(prompt: string := nil): Mtr3x4d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10, Result.val20); PABCSystem.Read(Result.val01, Result.val11, Result.val21); PABCSystem.Read(Result.val02, Result.val12, Result.val22); PABCSystem.Read(Result.val03, Result.val13, Result.val23); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr3x4d; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10, Result.val20); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11, Result.val21); if col_prompt <> nil then col_prompt(2).Print; PABCSystem.Readln(Result.val02, Result.val12, Result.val22); if col_prompt <> nil then col_prompt(3).Print; PABCSystem.Readln(Result.val03, Result.val13, Result.val23); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[3,4]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[0,2] := (Sign(val02)=-1?'-':'+') + Abs(val02).ToString('f2'); ElStrs[0,3] := (Sign(val03)=-1?'-':'+') + Abs(val03).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[1,2] := (Sign(val12)=-1?'-':'+') + Abs(val12).ToString('f2'); ElStrs[1,3] := (Sign(val13)=-1?'-':'+') + Abs(val13).ToString('f2'); ElStrs[2,0] := (Sign(val20)=-1?'-':'+') + Abs(val20).ToString('f2'); ElStrs[2,1] := (Sign(val21)=-1?'-':'+') + Abs(val21).ToString('f2'); ElStrs[2,2] := (Sign(val22)=-1?'-':'+') + Abs(val22).ToString('f2'); ElStrs[2,3] := (Sign(val23)=-1?'-':'+') + Abs(val23).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*4 + 8; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,3].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,3].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[2,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,2].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,3].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr3x4d; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr3x4d; v: Vec4d): Vec3d := new Vec3d(m.val00*v.val0+m.val01*v.val1+m.val02*v.val2+m.val03*v.val3, m.val10*v.val0+m.val11*v.val1+m.val12*v.val2+m.val13*v.val3, m.val20*v.val0+m.val21*v.val1+m.val22*v.val2+m.val23*v.val3); public static function operator*(v: Vec3d; m: Mtr3x4d): Vec4d := new Vec4d(m.val00*v.val0+m.val10*v.val1+m.val20*v.val2, m.val01*v.val0+m.val11*v.val1+m.val21*v.val2, m.val02*v.val0+m.val12*v.val1+m.val22*v.val2, m.val03*v.val0+m.val13*v.val1+m.val23*v.val2); public static function operator implicit(m: Mtr2x2f): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); public static function operator implicit(m: Mtr3x4d): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0); public static function operator implicit(m: Mtr3x4d): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22); public static function operator implicit(m: Mtr4x4f): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, m.val20, m.val21, m.val22, m.val23); public static function operator implicit(m: Mtr3x4d): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, m.val20, m.val21, m.val22, m.val23, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr2x3f): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, 0.0, 0.0, 1.0, 0.0); public static function operator implicit(m: Mtr3x4d): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr3x2f): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0); public static function operator implicit(m: Mtr3x4d): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr2x4f): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, 0.0, 0.0, 1.0, 0.0); public static function operator implicit(m: Mtr3x4d): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13); public static function operator implicit(m: Mtr4x2f): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0); public static function operator implicit(m: Mtr3x4d): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, 0.0, 0.0); public static function operator implicit(m: Mtr3x4f): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, m.val20, m.val21, m.val22, m.val23); public static function operator implicit(m: Mtr3x4d): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, m.val20, m.val21, m.val22, m.val23); public static function operator implicit(m: Mtr4x3f): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0); public static function operator implicit(m: Mtr3x4d): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr2x2d): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); public static function operator implicit(m: Mtr3x4d): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3d): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0); public static function operator implicit(m: Mtr3x4d): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22); public static function operator implicit(m: Mtr4x4d): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, m.val20, m.val21, m.val22, m.val23); public static function operator implicit(m: Mtr3x4d): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, m.val20, m.val21, m.val22, m.val23, 0.0, 0.0, 0.0, 1.0); public static function operator implicit(m: Mtr2x3d): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, 0.0, 0.0, 1.0, 0.0); public static function operator implicit(m: Mtr3x4d): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr3x2d): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0); public static function operator implicit(m: Mtr3x4d): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr2x4d): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13, 0.0, 0.0, 1.0, 0.0); public static function operator implicit(m: Mtr3x4d): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, m.val02, m.val03, m.val10, m.val11, m.val12, m.val13); public static function operator implicit(m: Mtr4x2d): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, 0.0, 0.0, m.val10, m.val11, 0.0, 0.0, m.val20, m.val21, 1.0, 0.0); public static function operator implicit(m: Mtr3x4d): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, 0.0, 0.0); end; Mtr4x3d = record public val00, val10, val20, val30: double; public val01, val11, val21, val31: double; public val02, val12, val22, val32: double; public constructor(val00, val01, val02, val10, val11, val12, val20, val21, val22, val30, val31, val32: double); begin self.val00 := val00; self.val01 := val01; self.val02 := val02; self.val10 := val10; self.val11 := val11; self.val12 := val12; self.val20 := val20; self.val21 := val21; self.val22 := val22; self.val30 := val30; self.val31 := val31; self.val32 := val32; end; public static property Identity: Mtr4x3d read new Mtr4x3d(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public property Row0: Vec3d read new Vec3d(self.val00, self.val01, self.val02) write begin self.val00 := value.val0; self.val01 := value.val1; self.val02 := value.val2; end; public property Row1: Vec3d read new Vec3d(self.val10, self.val11, self.val12) write begin self.val10 := value.val0; self.val11 := value.val1; self.val12 := value.val2; end; public property Row2: Vec3d read new Vec3d(self.val20, self.val21, self.val22) write begin self.val20 := value.val0; self.val21 := value.val1; self.val22 := value.val2; end; public property Row3: Vec3d read new Vec3d(self.val30, self.val31, self.val32) write begin self.val30 := value.val0; self.val31 := value.val1; self.val32 := value.val2; end; public property Col0: Vec4d read new Vec4d(self.val00, self.val10, self.val20, self.val30) write begin self.val00 := value.val0; self.val10 := value.val1; self.val20 := value.val2; self.val30 := value.val3; end; public property Col1: Vec4d read new Vec4d(self.val01, self.val11, self.val21, self.val31) write begin self.val01 := value.val0; self.val11 := value.val1; self.val21 := value.val2; self.val31 := value.val3; end; public property Col2: Vec4d read new Vec4d(self.val02, self.val12, self.val22, self.val32) write begin self.val02 := value.val0; self.val12 := value.val1; self.val22 := value.val2; self.val32 := value.val3; end; public property ColPtr0: ^Vec4d read pointer(@val00); public property ColPtr1: ^Vec4d read pointer(@val01); public property ColPtr2: ^Vec4d read pointer(@val02); public property ColPtr[x: integer]: ^Vec4d read pointer(IntPtr(pointer(@self)) + x*32); public procedure UseColPtr0(callback: UseVec4dPtrCallbackP); type PVec4d = ^Vec4d; begin callback(PVec4d(pointer(@val00))^); end; public procedure UseColPtr1(callback: UseVec4dPtrCallbackP); type PVec4d = ^Vec4d; begin callback(PVec4d(pointer(@val01))^); end; public procedure UseColPtr2(callback: UseVec4dPtrCallbackP); type PVec4d = ^Vec4d; begin callback(PVec4d(pointer(@val02))^); end; public function UseColPtr0<T>(callback: UseVec4dPtrCallbackF<T>): T; type PVec4d = ^Vec4d; begin Result := callback(PVec4d(pointer(@val00))^); end; public function UseColPtr1<T>(callback: UseVec4dPtrCallbackF<T>): T; type PVec4d = ^Vec4d; begin Result := callback(PVec4d(pointer(@val01))^); end; public function UseColPtr2<T>(callback: UseVec4dPtrCallbackF<T>): T; type PVec4d = ^Vec4d; begin Result := callback(PVec4d(pointer(@val02))^); end; public static function Scale(k: double): Mtr4x3d := new Mtr4x3d(k, 0.0, 0.0, 0.0, k, 0.0, 0.0, 0.0, k, 0.0, 0.0, 0.0); public static function Traslate(X, Y: double): Mtr4x3d := new Mtr4x3d(1.0, 0.0, X, 0.0, 1.0, Y, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public static function TraslateTransposed(X, Y, Z: double): Mtr4x3d := new Mtr4x3d(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, X, Y, Z); public static function RotateXYcw(rot: double): Mtr4x3d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr4x3d( cr, +sr, 0.0, -sr, cr, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0 ); end; public static function RotateXYccw(rot: double): Mtr4x3d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr4x3d( cr, -sr, 0.0, +sr, cr, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0 ); end; public static function RotateYZcw(rot: double): Mtr4x3d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr4x3d( 1.0, 0.0, 0.0, 0.0, cr, +sr, 0.0, -sr, cr, 0.0, 0.0, 0.0 ); end; public static function RotateYZccw(rot: double): Mtr4x3d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr4x3d( 1.0, 0.0, 0.0, 0.0, cr, -sr, 0.0, +sr, cr, 0.0, 0.0, 0.0 ); end; public static function RotateZXcw(rot: double): Mtr4x3d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr4x3d( cr, 0.0, -sr, 0.0, 1.0, 0.0, +sr, 0.0, cr, 0.0, 0.0, 0.0 ); end; public static function RotateZXccw(rot: double): Mtr4x3d; begin var sr: double := Sin(rot); var cr: double := Cos(rot); Result := new Mtr4x3d( cr, 0.0, +sr, 0.0, 1.0, 0.0, -sr, 0.0, cr, 0.0, 0.0, 0.0 ); end; public static function Rotate3Dcw(u: Vec3d; rot: double): Mtr4x3d; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := -k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := -k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := -k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); end; public static function Rotate3Dccw(u: Vec3d; rot: double): Mtr4x3d; begin var k1 := Sin(rot); var k2 := 2*Sqr(Sin(rot/2)); Result.val00 := 1 + k2*( -u.val2*u.val2 - u.val1*u.val1 ); Result.val01 := -k1*u.val2 + k2*( u.val1*u.val0 ); Result.val02 := k1*u.val1 + k2*( u.val2*u.val0 ); Result.val10 := k1*u.val2 + k2*( u.val0*u.val1 ); Result.val11 := 1 + k2*( -u.val2*u.val2 - u.val0*u.val0 ); Result.val12 := -k1*u.val0 + k2*( u.val2*u.val1 ); Result.val20 := -k1*u.val1 + k2*( u.val0*u.val2 ); Result.val21 := k1*u.val0 + k2*( u.val1*u.val2 ); Result.val22 := 1 + k2*( -u.val1*u.val1 - u.val0*u.val0 ); end; public static function Random(min, max: double): Mtr4x3d; begin if min>max then Swap(min,max); var r := max-min; Result.val00 := min + PABCSystem.Random(r); Result.val01 := min + PABCSystem.Random(r); Result.val02 := min + PABCSystem.Random(r); Result.val10 := min + PABCSystem.Random(r); Result.val11 := min + PABCSystem.Random(r); Result.val12 := min + PABCSystem.Random(r); Result.val20 := min + PABCSystem.Random(r); Result.val21 := min + PABCSystem.Random(r); Result.val22 := min + PABCSystem.Random(r); Result.val30 := min + PABCSystem.Random(r); Result.val31 := min + PABCSystem.Random(r); Result.val32 := min + PABCSystem.Random(r); end; public static function ReadRows(prompt: string := nil): Mtr4x3d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val01, Result.val02); PABCSystem.Read(Result.val10, Result.val11, Result.val12); PABCSystem.Read(Result.val20, Result.val21, Result.val22); PABCSystem.Read(Result.val30, Result.val31, Result.val32); end; public static function ReadlnRows(prompt: string := nil; row_prompt: integer->string := nil): Mtr4x3d; begin if prompt <> nil then prompt.Println; if row_prompt <> nil then row_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val01, Result.val02); if row_prompt <> nil then row_prompt(1).Print; PABCSystem.Readln(Result.val10, Result.val11, Result.val12); if row_prompt <> nil then row_prompt(2).Print; PABCSystem.Readln(Result.val20, Result.val21, Result.val22); if row_prompt <> nil then row_prompt(3).Print; PABCSystem.Readln(Result.val30, Result.val31, Result.val32); end; public static function ReadCols(prompt: string := nil): Mtr4x3d; begin if prompt <> nil then prompt.Print; PABCSystem.Read(Result.val00, Result.val10, Result.val20, Result.val30); PABCSystem.Read(Result.val01, Result.val11, Result.val21, Result.val31); PABCSystem.Read(Result.val02, Result.val12, Result.val22, Result.val32); end; public static function ReadlnCols(prompt: string := nil; col_prompt: integer->string := nil): Mtr4x3d; begin if prompt <> nil then prompt.Println; if col_prompt <> nil then col_prompt(0).Print; PABCSystem.Readln(Result.val00, Result.val10, Result.val20, Result.val30); if col_prompt <> nil then col_prompt(1).Print; PABCSystem.Readln(Result.val01, Result.val11, Result.val21, Result.val31); if col_prompt <> nil then col_prompt(2).Print; PABCSystem.Readln(Result.val02, Result.val12, Result.val22, Result.val32); end; public function ToString: string; override; begin var res := new StringBuilder; var ElStrs := new string[4,3]; ElStrs[0,0] := (Sign(val00)=-1?'-':'+') + Abs(val00).ToString('f2'); ElStrs[0,1] := (Sign(val01)=-1?'-':'+') + Abs(val01).ToString('f2'); ElStrs[0,2] := (Sign(val02)=-1?'-':'+') + Abs(val02).ToString('f2'); ElStrs[1,0] := (Sign(val10)=-1?'-':'+') + Abs(val10).ToString('f2'); ElStrs[1,1] := (Sign(val11)=-1?'-':'+') + Abs(val11).ToString('f2'); ElStrs[1,2] := (Sign(val12)=-1?'-':'+') + Abs(val12).ToString('f2'); ElStrs[2,0] := (Sign(val20)=-1?'-':'+') + Abs(val20).ToString('f2'); ElStrs[2,1] := (Sign(val21)=-1?'-':'+') + Abs(val21).ToString('f2'); ElStrs[2,2] := (Sign(val22)=-1?'-':'+') + Abs(val22).ToString('f2'); ElStrs[3,0] := (Sign(val30)=-1?'-':'+') + Abs(val30).ToString('f2'); ElStrs[3,1] := (Sign(val31)=-1?'-':'+') + Abs(val31).ToString('f2'); ElStrs[3,2] := (Sign(val32)=-1?'-':'+') + Abs(val32).ToString('f2'); var MtrElTextW := ElStrs.OfType&<string>.Max(s->s.Length); var PrintlnMtrW := MtrElTextW*3 + 6; // +2*(Width-1) + 2; res += '┌'; res.Append(#32, PrintlnMtrW); res += '┐'#10; res += '│ '; res += ElStrs[0,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[0,2].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[1,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[1,2].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[2,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[2,2].PadLeft(MtrElTextW); res += ' │'#10; res += '│ '; res += ElStrs[3,0].PadLeft(MtrElTextW); res += ', '; res += ElStrs[3,1].PadLeft(MtrElTextW); res += ', '; res += ElStrs[3,2].PadLeft(MtrElTextW); res += ' │'#10; res += '└'; res.Append(#32, PrintlnMtrW); res += '┘'; Result := res.ToString; end; public function Println: Mtr4x3d; begin Writeln(self.ToString); Result := self; end; public static function operator*(m: Mtr4x3d; v: Vec3d): Vec4d := new Vec4d(m.val00*v.val0+m.val01*v.val1+m.val02*v.val2, m.val10*v.val0+m.val11*v.val1+m.val12*v.val2, m.val20*v.val0+m.val21*v.val1+m.val22*v.val2, m.val30*v.val0+m.val31*v.val1+m.val32*v.val2); public static function operator*(v: Vec4d; m: Mtr4x3d): Vec3d := new Vec3d(m.val00*v.val0+m.val10*v.val1+m.val20*v.val2+m.val30*v.val3, m.val01*v.val0+m.val11*v.val1+m.val21*v.val2+m.val31*v.val3, m.val02*v.val0+m.val12*v.val1+m.val22*v.val2+m.val32*v.val3); public static function operator implicit(m: Mtr2x2f): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3d): Mtr2x2f := new Mtr2x2f(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3f): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3d): Mtr3x3f := new Mtr3x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22); public static function operator implicit(m: Mtr4x4f): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22, m.val30, m.val31, m.val32); public static function operator implicit(m: Mtr4x3d): Mtr4x4f := new Mtr4x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0, m.val30, m.val31, m.val32, 1.0); public static function operator implicit(m: Mtr2x3f): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3d): Mtr2x3f := new Mtr2x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr3x2f): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3d): Mtr3x2f := new Mtr3x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr2x4f): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3d): Mtr2x4f := new Mtr2x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0); public static function operator implicit(m: Mtr4x2f): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0, m.val30, m.val31, 0.0); public static function operator implicit(m: Mtr4x3d): Mtr4x2f := new Mtr4x2f(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, m.val30, m.val31); public static function operator implicit(m: Mtr3x4f): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3d): Mtr3x4f := new Mtr3x4f(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0); public static function operator implicit(m: Mtr4x3f): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22, m.val30, m.val31, m.val32); public static function operator implicit(m: Mtr4x3d): Mtr4x3f := new Mtr4x3f(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22, m.val30, m.val31, m.val32); public static function operator implicit(m: Mtr2x2d): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3d): Mtr2x2d := new Mtr2x2d(m.val00, m.val01, m.val10, m.val11); public static function operator implicit(m: Mtr3x3d): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3d): Mtr3x3d := new Mtr3x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22); public static function operator implicit(m: Mtr4x4d): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22, m.val30, m.val31, m.val32); public static function operator implicit(m: Mtr4x3d): Mtr4x4d := new Mtr4x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0, m.val30, m.val31, m.val32, 1.0); public static function operator implicit(m: Mtr2x3d): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3d): Mtr2x3d := new Mtr2x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12); public static function operator implicit(m: Mtr3x2d): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3d): Mtr3x2d := new Mtr3x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21); public static function operator implicit(m: Mtr2x4d): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3d): Mtr2x4d := new Mtr2x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0); public static function operator implicit(m: Mtr4x2d): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, 0.0, m.val10, m.val11, 0.0, m.val20, m.val21, 1.0, m.val30, m.val31, 0.0); public static function operator implicit(m: Mtr4x3d): Mtr4x2d := new Mtr4x2d(m.val00, m.val01, m.val10, m.val11, m.val20, m.val21, m.val30, m.val31); public static function operator implicit(m: Mtr3x4d): Mtr4x3d := new Mtr4x3d(m.val00, m.val01, m.val02, m.val10, m.val11, m.val12, m.val20, m.val21, m.val22, 0.0, 0.0, 0.0); public static function operator implicit(m: Mtr4x3d): Mtr3x4d := new Mtr3x4d(m.val00, m.val01, m.val02, 0.0, m.val10, m.val11, m.val12, 0.0, m.val20, m.val21, m.val22, 0.0); end; {$endregion Mtr} {$region Misc} Fixed = record public val: UInt32; public constructor(val: UInt32); begin self.val := val; end; end; gdi_colorref = record private a: byte := 0; public r: byte; public g: byte; public b: byte; public constructor(r: byte; g: byte; b: byte); begin self.r := r; self.g := g; self.b := b; end; end; gdi_glyphmetrics_float = record public gmfBlackBoxX: single; public gmfBlackBoxY: single; public gmfptGlyphOriginX: single; public gmfptGlyphOriginY: single; public gmfCellIncX: single; public gmfCellIncY: single; public constructor(gmfBlackBoxX: single; gmfBlackBoxY: single; gmfptGlyphOriginX: single; gmfptGlyphOriginY: single; gmfCellIncX: single; gmfCellIncY: single); begin self.gmfBlackBoxX := gmfBlackBoxX; self.gmfBlackBoxY := gmfBlackBoxY; self.gmfptGlyphOriginX := gmfptGlyphOriginX; self.gmfptGlyphOriginY := gmfptGlyphOriginY; self.gmfCellIncX := gmfCellIncX; self.gmfCellIncY := gmfCellIncY; end; end; gdi_layer_plane_descriptor = record public nSize: UInt16 := sizeof(gdi_layer_plane_descriptor); public nVersion: UInt16 := 1; public dwFlags: GDI_LayerPlaneFlags; public iPixelType: GDI_PixelDataType; public cColorBits: Byte; // Кол-во бит для R+G+B public cRedBits: Byte; // Если оставить эти 6 нулями - их заполнит автоматически public cRedShift: Byte; public cGreenBits: Byte; public cGreenShift: Byte; public cBlueBits: Byte; public cBlueShift: Byte; public cAlphaBits: Byte; // Последние 2 не работают на Windows public cAlphaShift: Byte; public cAccumBits: Byte; public cAccumRedBits: Byte; public cAccumGreenBits: Byte; public cAccumBlueBits: Byte; public cAccumAlphaBits: Byte; public cDepthBits: Byte; public cStencilBits: Byte; public cAuxBuffers: Byte; // Устарело public iLayerPlane: Byte; public bReserved: Byte; public crTransparent: gdi_colorref; // Прозрачный цвет работает только если в dwFlags добавить LayerPlaneFlagsGDI.TRANSPARENT public constructor(dwFlags: GDI_LayerPlaneFlags; iPixelType: GDI_PixelDataType; cColorBits: Byte; cRedBits: Byte; cRedShift: Byte; cGreenBits: Byte; cGreenShift: Byte; cBlueBits: Byte; cBlueShift: Byte; cAlphaBits: Byte; cAlphaShift: Byte; cAccumBits: Byte; cAccumRedBits: Byte; cAccumGreenBits: Byte; cAccumBlueBits: Byte; cAccumAlphaBits: Byte; cDepthBits: Byte; cStencilBits: Byte; cAuxBuffers: Byte; iLayerPlane: Byte; bReserved: Byte; crTransparent: gdi_colorref); begin self.dwFlags := dwFlags; self.iPixelType := iPixelType; self.cColorBits := cColorBits; self.cRedBits := cRedBits; self.cRedShift := cRedShift; self.cGreenBits := cGreenBits; self.cGreenShift := cGreenShift; self.cBlueBits := cBlueBits; self.cBlueShift := cBlueShift; self.cAlphaBits := cAlphaBits; self.cAlphaShift := cAlphaShift; self.cAccumBits := cAccumBits; self.cAccumRedBits := cAccumRedBits; self.cAccumGreenBits := cAccumGreenBits; self.cAccumBlueBits := cAccumBlueBits; self.cAccumAlphaBits := cAccumAlphaBits; self.cDepthBits := cDepthBits; self.cStencilBits := cStencilBits; self.cAuxBuffers := cAuxBuffers; self.iLayerPlane := iLayerPlane; self.bReserved := bReserved; self.crTransparent := crTransparent; end; end; gdi_pixel_format_descriptor = record public nSize: UInt16 := sizeof(gdi_pixel_format_descriptor); public nVersion: UInt16 := 1; public dwFlags: GDI_PixelFormatFlags; public iPixelType: GDI_PixelDataType; public cColorBits: Byte; // Кол-во бит для R+G+B public cRedBits: Byte; // Если оставить эти 6 нулями - их заполнит автоматически public cRedShift: Byte; public cGreenBits: Byte; public cGreenShift: Byte; public cBlueBits: Byte; public cBlueShift: Byte; public cAlphaBits: Byte; // Последние 2 не работают на Windows public cAlphaShift: Byte; public cAccumBits: Byte; public cAccumRedBits: Byte; public cAccumGreenBits: Byte; public cAccumBlueBits: Byte; public cAccumAlphaBits: Byte; public cDepthBits: Byte; public cStencilBits: Byte; public cAuxBuffers: Byte; // Устарело public iLayerType: Byte; // Устарело public bLayersSize: Byte; // Устарело public dwLayerMask: UInt32; // Не могу найти нормальное описание последних 3, но все оставляют их нулями public dwVisibleMask: UInt32; public dwDamageMask: UInt32; public constructor(dwFlags: GDI_PixelFormatFlags; iPixelType: GDI_PixelDataType; cColorBits: Byte; cRedBits: Byte; cRedShift: Byte; cGreenBits: Byte; cGreenShift: Byte; cBlueBits: Byte; cBlueShift: Byte; cAlphaBits: Byte; cAlphaShift: Byte; cAccumBits: Byte; cAccumRedBits: Byte; cAccumGreenBits: Byte; cAccumBlueBits: Byte; cAccumAlphaBits: Byte; cDepthBits: Byte; cStencilBits: Byte; cAuxBuffers: Byte; iLayerType: Byte; bLayersSize: Byte; dwLayerMask: UInt32; dwVisibleMask: UInt32; dwDamageMask: UInt32); begin self.dwFlags := dwFlags; self.iPixelType := iPixelType; self.cColorBits := cColorBits; self.cRedBits := cRedBits; self.cRedShift := cRedShift; self.cGreenBits := cGreenBits; self.cGreenShift := cGreenShift; self.cBlueBits := cBlueBits; self.cBlueShift := cBlueShift; self.cAlphaBits := cAlphaBits; self.cAlphaShift := cAlphaShift; self.cAccumBits := cAccumBits; self.cAccumRedBits := cAccumRedBits; self.cAccumGreenBits := cAccumGreenBits; self.cAccumBlueBits := cAccumBlueBits; self.cAccumAlphaBits := cAccumAlphaBits; self.cDepthBits := cDepthBits; self.cStencilBits := cStencilBits; self.cAuxBuffers := cAuxBuffers; self.iLayerType := iLayerType; self.bLayersSize := bLayersSize; self.dwLayerMask := dwLayerMask; self.dwVisibleMask := dwVisibleMask; self.dwDamageMask := dwDamageMask; end; end; [StructLayout(LayoutKind.Explicit, Size = 80)] ///-- _ValueString_80 = record public property NtvChars[i: integer]: Byte read Marshal.ReadByte(new IntPtr(@self), i) write Marshal.WriteByte(new IntPtr(@self), i, value); public property Chars[i: integer]: char read ChrAnsi(NtvChars[i]) write NtvChars[i] := OrdAnsi(value); default; public constructor(s: string); begin if s.Length >= 80 then raise new System.OverflowException; for var i := 0 to s.Length-1 do self[i] := s[i+1]; self.NtvChars[s.Length] := 0; end; public function ToString: string; override := Marshal.PtrToStringAnsi(new IntPtr(@self)); end; glx_hyperpipe_config_SGIX = record public pipeName: _ValueString_80; public channel: Int32; public participationType: PipeParticipationTypeFlags; public timeSlice: Int32; public constructor(pipeName: _ValueString_80; channel: Int32; participationType: PipeParticipationTypeFlags; timeSlice: Int32); begin self.pipeName := pipeName; self.channel := channel; self.participationType := participationType; self.timeSlice := timeSlice; end; end; glx_hyperpipe_network_SGIX = record public pipeName: _ValueString_80; public networkId: Int32; public constructor(pipeName: _ValueString_80; networkId: Int32); begin self.pipeName := pipeName; self.networkId := networkId; end; end; glx_pipe_rect_limits_SGIX = record public pipeName: _ValueString_80; public XOrigin: Int32; public YOrigin: Int32; public maxHeight: Int32; public maxWidth: Int32; public constructor(pipeName: _ValueString_80; XOrigin: Int32; YOrigin: Int32; maxHeight: Int32; maxWidth: Int32); begin self.pipeName := pipeName; self.XOrigin := XOrigin; self.YOrigin := YOrigin; self.maxHeight := maxHeight; self.maxWidth := maxWidth; end; end; glx_pipe_rect_SGIX = record public pipeName: _ValueString_80; public srcXOrigin: Int32; public srcYOrigin: Int32; public srcWidth: Int32; public srcHeight: Int32; public destXOrigin: Int32; public destYOrigin: Int32; public destWidth: Int32; public destHeight: Int32; public constructor(pipeName: _ValueString_80; srcXOrigin: Int32; srcYOrigin: Int32; srcWidth: Int32; srcHeight: Int32; destXOrigin: Int32; destYOrigin: Int32; destWidth: Int32; destHeight: Int32); begin self.pipeName := pipeName; self.srcXOrigin := srcXOrigin; self.srcYOrigin := srcYOrigin; self.srcWidth := srcWidth; self.srcHeight := srcHeight; self.destXOrigin := destXOrigin; self.destYOrigin := destYOrigin; self.destWidth := destWidth; self.destHeight := destHeight; end; end; Half = record public val: UInt16; public constructor(val: UInt16); begin self.val := val; end; end; [StructLayout(LayoutKind.Explicit, Size = 32)] ///-- _ValueString_32 = record public property NtvChars[i: integer]: Byte read Marshal.ReadByte(new IntPtr(@self), i) write Marshal.WriteByte(new IntPtr(@self), i, value); public property Chars[i: integer]: char read ChrAnsi(NtvChars[i]) write NtvChars[i] := OrdAnsi(value); default; public constructor(s: string); begin if s.Length >= 32 then raise new System.OverflowException; for var i := 0 to s.Length-1 do self[i] := s[i+1]; self.NtvChars[s.Length] := 0; end; public function ToString: string; override := Marshal.PtrToStringAnsi(new IntPtr(@self)); end; [StructLayout(LayoutKind.Explicit, Size = 128)] ///-- _ValueString_128 = record public property NtvChars[i: integer]: Byte read Marshal.ReadByte(new IntPtr(@self), i) write Marshal.WriteByte(new IntPtr(@self), i, value); public property Chars[i: integer]: char read ChrAnsi(NtvChars[i]) write NtvChars[i] := OrdAnsi(value); default; public constructor(s: string); begin if s.Length >= 128 then raise new System.OverflowException; for var i := 0 to s.Length-1 do self[i] := s[i+1]; self.NtvChars[s.Length] := 0; end; public function ToString: string; override := Marshal.PtrToStringAnsi(new IntPtr(@self)); end; wgl_GPU_device_NV = record public cb: UInt32 := sizeof(wgl_GPU_device_NV); public DeviceName: _ValueString_32; public DeviceString: _ValueString_128; public Flags: GPUDisplayDeviceFlagsNV; public rcVirtualScreen: record left, top, right, bottom: Int64; end := (left: 0; top: 0; right: 0; bottom: 0); public constructor(DeviceName: _ValueString_32; DeviceString: _ValueString_128; Flags: GPUDisplayDeviceFlagsNV); begin self.DeviceName := DeviceName; self.DeviceString := DeviceString; self.Flags := Flags; end; end; {$endregion Misc} {$endregion Записи} {$region Другие типы} DummyEnum = UInt32; DummyFlags = UInt32; OpenGLException = sealed class(Exception) private ec: ErrorCode; public property Code: ErrorCode read ec; public constructor(ec: ErrorCode); begin inherited Create($'Ошибка OpenGL: "{ec}"'); self.ec := ec; end; end; PlatformLoader = abstract class protected static function LoadLibrary(name: string): IntPtr; external 'kernel32.dll'; protected static function GetProcAddress(lib: IntPtr; name: string): IntPtr; external 'kernel32.dll'; public function GetProcAddress(name: string): IntPtr; abstract; end; {$endregion Другие типы} {$region Функции} [PCUNotRestore] [System.Security.SuppressUnmanagedCodeSecurity] gl = sealed partial class public constructor(loader: PlatformLoader); private constructor := raise new System.NotSupportedException; private function GetProcAddress(name: string): IntPtr; private static function GetProcOrNil<T>(fadr: IntPtr) := fadr=IntPtr.Zero ? default(T) : Marshal.GetDelegateForFunctionPointer&<T>(fadr); // added in gl4.1 private z_ActiveShaderProgram_adr := GetProcAddress('glActiveShaderProgram'); private z_ActiveShaderProgram_ovr_0 := GetProcOrNil&<procedure(pipeline: gl_program_pipeline; &program: gl_program)>(z_ActiveShaderProgram_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ActiveShaderProgram(pipeline: gl_program_pipeline; &program: gl_program) := z_ActiveShaderProgram_ovr_0(pipeline, &program); // added in gl1.3 private z_ActiveTexture_adr := GetProcAddress('glActiveTexture'); private z_ActiveTexture_ovr_0 := GetProcOrNil&<procedure(texture: TextureUnit)>(z_ActiveTexture_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ActiveTexture(texture: TextureUnit) := z_ActiveTexture_ovr_0(texture); // added in gl2.0 private z_AttachShader_adr := GetProcAddress('glAttachShader'); private z_AttachShader_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; shader: gl_shader)>(z_AttachShader_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure AttachShader(&program: gl_program; shader: gl_shader) := z_AttachShader_ovr_0(&program, shader); // added in gl3.0 private z_BeginConditionalRender_adr := GetProcAddress('glBeginConditionalRender'); private z_BeginConditionalRender_ovr_0 := GetProcOrNil&<procedure(id: UInt32; mode: ConditionalRenderMode)>(z_BeginConditionalRender_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BeginConditionalRender(id: UInt32; mode: ConditionalRenderMode) := z_BeginConditionalRender_ovr_0(id, mode); // added in gl1.5 private z_BeginQuery_adr := GetProcAddress('glBeginQuery'); private z_BeginQuery_ovr_0 := GetProcOrNil&<procedure(target: QueryTarget; id: gl_query)>(z_BeginQuery_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BeginQuery(target: QueryTarget; id: gl_query) := z_BeginQuery_ovr_0(target, id); // added in gl4.0 private z_BeginQueryIndexed_adr := GetProcAddress('glBeginQueryIndexed'); private z_BeginQueryIndexed_ovr_0 := GetProcOrNil&<procedure(target: QueryTarget; index: UInt32; id: gl_query)>(z_BeginQueryIndexed_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BeginQueryIndexed(target: QueryTarget; index: UInt32; id: gl_query) := z_BeginQueryIndexed_ovr_0(target, index, id); // added in gl3.0 private z_BeginTransformFeedback_adr := GetProcAddress('glBeginTransformFeedback'); private z_BeginTransformFeedback_ovr_0 := GetProcOrNil&<procedure(primitiveMode: PrimitiveType)>(z_BeginTransformFeedback_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BeginTransformFeedback(primitiveMode: PrimitiveType) := z_BeginTransformFeedback_ovr_0(primitiveMode); // added in gl2.0 private z_BindAttribLocation_adr := GetProcAddress('glBindAttribLocation'); private z_BindAttribLocation_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; name: IntPtr)>(z_BindAttribLocation_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindAttribLocation(&program: gl_program; index: UInt32; name: string); begin var par_3_str_ptr: IntPtr; try par_3_str_ptr := Marshal.StringToHGlobalAnsi(name); z_BindAttribLocation_ovr_0(&program, index, par_3_str_ptr); finally Marshal.FreeHGlobal(par_3_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindAttribLocation(&program: gl_program; index: UInt32; name: IntPtr) := z_BindAttribLocation_ovr_0(&program, index, name); // added in gl1.5 private z_BindBuffer_adr := GetProcAddress('glBindBuffer'); private z_BindBuffer_ovr_0 := GetProcOrNil&<procedure(target: BufferTarget; buffer: gl_buffer)>(z_BindBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffer(target: BufferTarget; buffer: gl_buffer) := z_BindBuffer_ovr_0(target, buffer); // added in gl3.0 private z_BindBufferBase_adr := GetProcAddress('glBindBufferBase'); private z_BindBufferBase_ovr_0 := GetProcOrNil&<procedure(target: BufferTarget; index: UInt32; buffer: gl_buffer)>(z_BindBufferBase_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBufferBase(target: BufferTarget; index: UInt32; buffer: gl_buffer) := z_BindBufferBase_ovr_0(target, index, buffer); // added in gl3.0 private z_BindBufferRange_adr := GetProcAddress('glBindBufferRange'); private z_BindBufferRange_ovr_0 := GetProcOrNil&<procedure(target: BufferTarget; index: UInt32; buffer: gl_buffer; offset: IntPtr; size: IntPtr)>(z_BindBufferRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBufferRange(target: BufferTarget; index: UInt32; buffer: gl_buffer; offset: IntPtr; size: IntPtr) := z_BindBufferRange_ovr_0(target, index, buffer, offset, size); // added in gl4.4 private z_BindBuffersBase_adr := GetProcAddress('glBindBuffersBase'); private z_BindBuffersBase_ovr_0 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer)>(z_BindBuffersBase_adr); private z_BindBuffersBase_ovr_0_anh00001 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr)>(z_BindBuffersBase_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersBase(target: BufferTarget; first: UInt32; count: Int32; buffers: array of gl_buffer) := if (buffers<>nil) and (buffers.Length<>0) then z_BindBuffersBase_ovr_0(target, first, count, buffers[0]) else z_BindBuffersBase_ovr_0_anh00001(target, first, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersBase(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer) := z_BindBuffersBase_ovr_0(target, first, count, buffers); private z_BindBuffersBase_ovr_2 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr)>(z_BindBuffersBase_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersBase(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr) := z_BindBuffersBase_ovr_2(target, first, count, buffers); // added in gl4.4 private z_BindBuffersRange_adr := GetProcAddress('glBindBuffersRange'); private z_BindBuffersRange_ovr_0 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; var sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_0_anh0000100 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; var sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_0_anh0000010 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; var sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_0_anh0000110 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; var sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_0_anh0000001 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_0_anh0000101 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_0_anh0000011 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_0_anh0000111 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; sizes: IntPtr)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: array of gl_buffer; offsets: array of IntPtr; sizes: array of IntPtr) := if (buffers<>nil) and (buffers.Length<>0) then if (offsets<>nil) and (offsets.Length<>0) then if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_0(target, first, count, buffers[0], offsets[0], sizes[0]) else z_BindBuffersRange_ovr_0_anh0000001(target, first, count, buffers[0], offsets[0], IntPtr.Zero) else if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_0_anh0000010(target, first, count, buffers[0], IntPtr.Zero, sizes[0]) else z_BindBuffersRange_ovr_0_anh0000011(target, first, count, buffers[0], IntPtr.Zero, IntPtr.Zero) else if (offsets<>nil) and (offsets.Length<>0) then if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_0_anh0000100(target, first, count, IntPtr.Zero, offsets[0], sizes[0]) else z_BindBuffersRange_ovr_0_anh0000101(target, first, count, IntPtr.Zero, offsets[0], IntPtr.Zero) else if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_0_anh0000110(target, first, count, IntPtr.Zero, IntPtr.Zero, sizes[0]) else z_BindBuffersRange_ovr_0_anh0000111(target, first, count, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); private z_BindBuffersRange_ovr_1_anh0000100 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; var sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_1_anh0000010 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; var sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_1_anh0000110 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; var sizes: IntPtr)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: array of gl_buffer; offsets: array of IntPtr; var sizes: IntPtr) := if (buffers<>nil) and (buffers.Length<>0) then if (offsets<>nil) and (offsets.Length<>0) then z_BindBuffersRange_ovr_0(target, first, count, buffers[0], offsets[0], sizes) else z_BindBuffersRange_ovr_0_anh0000010(target, first, count, buffers[0], IntPtr.Zero, sizes) else if (offsets<>nil) and (offsets.Length<>0) then z_BindBuffersRange_ovr_0_anh0000100(target, first, count, IntPtr.Zero, offsets[0], sizes) else z_BindBuffersRange_ovr_0_anh0000110(target, first, count, IntPtr.Zero, IntPtr.Zero, sizes); private z_BindBuffersRange_ovr_2 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; sizes: pointer)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_2_anh0000100 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; sizes: pointer)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_2_anh0000010 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; sizes: pointer)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_2_anh0000110 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; sizes: pointer)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: array of gl_buffer; offsets: array of IntPtr; sizes: pointer) := if (buffers<>nil) and (buffers.Length<>0) then if (offsets<>nil) and (offsets.Length<>0) then z_BindBuffersRange_ovr_2(target, first, count, buffers[0], offsets[0], sizes) else z_BindBuffersRange_ovr_2_anh0000010(target, first, count, buffers[0], IntPtr.Zero, sizes) else if (offsets<>nil) and (offsets.Length<>0) then z_BindBuffersRange_ovr_2_anh0000100(target, first, count, IntPtr.Zero, offsets[0], sizes) else z_BindBuffersRange_ovr_2_anh0000110(target, first, count, IntPtr.Zero, IntPtr.Zero, sizes); private z_BindBuffersRange_ovr_3_anh0000100 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; var sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_3_anh0000001 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_3_anh0000101 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; sizes: IntPtr)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: array of gl_buffer; var offsets: IntPtr; sizes: array of IntPtr) := if (buffers<>nil) and (buffers.Length<>0) then if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_0(target, first, count, buffers[0], offsets, sizes[0]) else z_BindBuffersRange_ovr_0_anh0000001(target, first, count, buffers[0], offsets, IntPtr.Zero) else if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_0_anh0000100(target, first, count, IntPtr.Zero, offsets, sizes[0]) else z_BindBuffersRange_ovr_0_anh0000101(target, first, count, IntPtr.Zero, offsets, IntPtr.Zero); private z_BindBuffersRange_ovr_4_anh0000100 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; var sizes: IntPtr)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: array of gl_buffer; var offsets: IntPtr; var sizes: IntPtr) := if (buffers<>nil) and (buffers.Length<>0) then z_BindBuffersRange_ovr_0(target, first, count, buffers[0], offsets, sizes) else z_BindBuffersRange_ovr_0_anh0000100(target, first, count, IntPtr.Zero, offsets, sizes); private z_BindBuffersRange_ovr_5_anh0000100 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; sizes: pointer)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: array of gl_buffer; var offsets: IntPtr; sizes: pointer) := if (buffers<>nil) and (buffers.Length<>0) then z_BindBuffersRange_ovr_2(target, first, count, buffers[0], offsets, sizes) else z_BindBuffersRange_ovr_2_anh0000100(target, first, count, IntPtr.Zero, offsets, sizes); private z_BindBuffersRange_ovr_6 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: pointer; var sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_6_anh0000100 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; var sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_6_anh0000001 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: pointer; sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_6_anh0000101 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; sizes: IntPtr)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: array of gl_buffer; offsets: pointer; sizes: array of IntPtr) := if (buffers<>nil) and (buffers.Length<>0) then if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_6(target, first, count, buffers[0], offsets, sizes[0]) else z_BindBuffersRange_ovr_6_anh0000001(target, first, count, buffers[0], offsets, IntPtr.Zero) else if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_6_anh0000100(target, first, count, IntPtr.Zero, offsets, sizes[0]) else z_BindBuffersRange_ovr_6_anh0000101(target, first, count, IntPtr.Zero, offsets, IntPtr.Zero); private z_BindBuffersRange_ovr_7_anh0000100 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; var sizes: IntPtr)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: array of gl_buffer; offsets: pointer; var sizes: IntPtr) := if (buffers<>nil) and (buffers.Length<>0) then z_BindBuffersRange_ovr_6(target, first, count, buffers[0], offsets, sizes) else z_BindBuffersRange_ovr_6_anh0000100(target, first, count, IntPtr.Zero, offsets, sizes); private z_BindBuffersRange_ovr_8 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: pointer; sizes: pointer)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_8_anh0000100 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; sizes: pointer)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: array of gl_buffer; offsets: pointer; sizes: pointer) := if (buffers<>nil) and (buffers.Length<>0) then z_BindBuffersRange_ovr_8(target, first, count, buffers[0], offsets, sizes) else z_BindBuffersRange_ovr_8_anh0000100(target, first, count, IntPtr.Zero, offsets, sizes); private z_BindBuffersRange_ovr_9_anh0000010 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; var sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_9_anh0000001 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_9_anh0000011 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; sizes: IntPtr)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: array of IntPtr; sizes: array of IntPtr) := if (offsets<>nil) and (offsets.Length<>0) then if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_0(target, first, count, buffers, offsets[0], sizes[0]) else z_BindBuffersRange_ovr_0_anh0000001(target, first, count, buffers, offsets[0], IntPtr.Zero) else if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_0_anh0000010(target, first, count, buffers, IntPtr.Zero, sizes[0]) else z_BindBuffersRange_ovr_0_anh0000011(target, first, count, buffers, IntPtr.Zero, IntPtr.Zero); private z_BindBuffersRange_ovr_10_anh0000010 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; var sizes: IntPtr)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: array of IntPtr; var sizes: IntPtr) := if (offsets<>nil) and (offsets.Length<>0) then z_BindBuffersRange_ovr_0(target, first, count, buffers, offsets[0], sizes) else z_BindBuffersRange_ovr_0_anh0000010(target, first, count, buffers, IntPtr.Zero, sizes); private z_BindBuffersRange_ovr_11_anh0000010 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; sizes: pointer)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: array of IntPtr; sizes: pointer) := if (offsets<>nil) and (offsets.Length<>0) then z_BindBuffersRange_ovr_2(target, first, count, buffers, offsets[0], sizes) else z_BindBuffersRange_ovr_2_anh0000010(target, first, count, buffers, IntPtr.Zero, sizes); private z_BindBuffersRange_ovr_12_anh0000001 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; sizes: IntPtr)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; sizes: array of IntPtr) := if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_0(target, first, count, buffers, offsets, sizes[0]) else z_BindBuffersRange_ovr_0_anh0000001(target, first, count, buffers, offsets, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; var sizes: IntPtr) := z_BindBuffersRange_ovr_0(target, first, count, buffers, offsets, sizes); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; sizes: pointer) := z_BindBuffersRange_ovr_2(target, first, count, buffers, offsets, sizes); private z_BindBuffersRange_ovr_15_anh0000001 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: pointer; sizes: IntPtr)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: pointer; sizes: array of IntPtr) := if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_6(target, first, count, buffers, offsets, sizes[0]) else z_BindBuffersRange_ovr_6_anh0000001(target, first, count, buffers, offsets, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: pointer; var sizes: IntPtr) := z_BindBuffersRange_ovr_6(target, first, count, buffers, offsets, sizes); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: pointer; sizes: pointer) := z_BindBuffersRange_ovr_8(target, first, count, buffers, offsets, sizes); private z_BindBuffersRange_ovr_18 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; var sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_18_anh0000010 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; var sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_18_anh0000001 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_18_anh0000011 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; sizes: IntPtr)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: array of IntPtr; sizes: array of IntPtr) := if (offsets<>nil) and (offsets.Length<>0) then if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_18(target, first, count, buffers, offsets[0], sizes[0]) else z_BindBuffersRange_ovr_18_anh0000001(target, first, count, buffers, offsets[0], IntPtr.Zero) else if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_18_anh0000010(target, first, count, buffers, IntPtr.Zero, sizes[0]) else z_BindBuffersRange_ovr_18_anh0000011(target, first, count, buffers, IntPtr.Zero, IntPtr.Zero); private z_BindBuffersRange_ovr_19_anh0000010 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; var sizes: IntPtr)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: array of IntPtr; var sizes: IntPtr) := if (offsets<>nil) and (offsets.Length<>0) then z_BindBuffersRange_ovr_18(target, first, count, buffers, offsets[0], sizes) else z_BindBuffersRange_ovr_18_anh0000010(target, first, count, buffers, IntPtr.Zero, sizes); private z_BindBuffersRange_ovr_20 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; sizes: pointer)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_20_anh0000010 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; sizes: pointer)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: array of IntPtr; sizes: pointer) := if (offsets<>nil) and (offsets.Length<>0) then z_BindBuffersRange_ovr_20(target, first, count, buffers, offsets[0], sizes) else z_BindBuffersRange_ovr_20_anh0000010(target, first, count, buffers, IntPtr.Zero, sizes); private z_BindBuffersRange_ovr_21_anh0000001 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; sizes: IntPtr)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; sizes: array of IntPtr) := if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_18(target, first, count, buffers, offsets, sizes[0]) else z_BindBuffersRange_ovr_18_anh0000001(target, first, count, buffers, offsets, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; var sizes: IntPtr) := z_BindBuffersRange_ovr_18(target, first, count, buffers, offsets, sizes); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; sizes: pointer) := z_BindBuffersRange_ovr_20(target, first, count, buffers, offsets, sizes); private z_BindBuffersRange_ovr_24 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; var sizes: IntPtr)>(z_BindBuffersRange_adr); private z_BindBuffersRange_ovr_24_anh0000001 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; sizes: IntPtr)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; sizes: array of IntPtr) := if (sizes<>nil) and (sizes.Length<>0) then z_BindBuffersRange_ovr_24(target, first, count, buffers, offsets, sizes[0]) else z_BindBuffersRange_ovr_24_anh0000001(target, first, count, buffers, offsets, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; var sizes: IntPtr) := z_BindBuffersRange_ovr_24(target, first, count, buffers, offsets, sizes); private z_BindBuffersRange_ovr_26 := GetProcOrNil&<procedure(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; sizes: pointer)>(z_BindBuffersRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindBuffersRange(target: BufferTarget; first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; sizes: pointer) := z_BindBuffersRange_ovr_26(target, first, count, buffers, offsets, sizes); // added in gl3.0 private z_BindFragDataLocation_adr := GetProcAddress('glBindFragDataLocation'); private z_BindFragDataLocation_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; color: UInt32; name: IntPtr)>(z_BindFragDataLocation_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindFragDataLocation(&program: gl_program; color: UInt32; name: string); begin var par_3_str_ptr: IntPtr; try par_3_str_ptr := Marshal.StringToHGlobalAnsi(name); z_BindFragDataLocation_ovr_0(&program, color, par_3_str_ptr); finally Marshal.FreeHGlobal(par_3_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindFragDataLocation(&program: gl_program; color: UInt32; name: IntPtr) := z_BindFragDataLocation_ovr_0(&program, color, name); // added in gl3.3 private z_BindFragDataLocationIndexed_adr := GetProcAddress('glBindFragDataLocationIndexed'); private z_BindFragDataLocationIndexed_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; colorNumber: UInt32; index: UInt32; name: IntPtr)>(z_BindFragDataLocationIndexed_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindFragDataLocationIndexed(&program: gl_program; colorNumber: UInt32; index: UInt32; name: string); begin var par_4_str_ptr: IntPtr; try par_4_str_ptr := Marshal.StringToHGlobalAnsi(name); z_BindFragDataLocationIndexed_ovr_0(&program, colorNumber, index, par_4_str_ptr); finally Marshal.FreeHGlobal(par_4_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindFragDataLocationIndexed(&program: gl_program; colorNumber: UInt32; index: UInt32; name: IntPtr) := z_BindFragDataLocationIndexed_ovr_0(&program, colorNumber, index, name); // added in gl3.0 private z_BindFramebuffer_adr := GetProcAddress('glBindFramebuffer'); private z_BindFramebuffer_ovr_0 := GetProcOrNil&<procedure(target: FramebufferTarget; framebuffer: gl_framebuffer)>(z_BindFramebuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindFramebuffer(target: FramebufferTarget; framebuffer: gl_framebuffer) := z_BindFramebuffer_ovr_0(target, framebuffer); // added in gl4.2 private z_BindImageTexture_adr := GetProcAddress('glBindImageTexture'); private z_BindImageTexture_ovr_0 := GetProcOrNil&<procedure(&unit: UInt32; texture: gl_texture; level: Int32; layered: boolean; layer: Int32; access: BufferAccessARB; format: InternalFormat)>(z_BindImageTexture_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindImageTexture(&unit: UInt32; texture: gl_texture; level: Int32; layered: boolean; layer: Int32; access: BufferAccessARB; format: InternalFormat) := z_BindImageTexture_ovr_0(&unit, texture, level, layered, layer, access, format); // added in gl4.4 private z_BindImageTextures_adr := GetProcAddress('glBindImageTextures'); private z_BindImageTextures_ovr_0 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var textures: gl_texture)>(z_BindImageTextures_adr); private z_BindImageTextures_ovr_0_anh0001 := GetProcOrNil&<procedure(first: UInt32; count: Int32; textures: IntPtr)>(z_BindImageTextures_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindImageTextures(first: UInt32; count: Int32; textures: array of gl_texture) := if (textures<>nil) and (textures.Length<>0) then z_BindImageTextures_ovr_0(first, count, textures[0]) else z_BindImageTextures_ovr_0_anh0001(first, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindImageTextures(first: UInt32; count: Int32; var textures: gl_texture) := z_BindImageTextures_ovr_0(first, count, textures); private z_BindImageTextures_ovr_2 := GetProcOrNil&<procedure(first: UInt32; count: Int32; textures: IntPtr)>(z_BindImageTextures_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindImageTextures(first: UInt32; count: Int32; textures: IntPtr) := z_BindImageTextures_ovr_2(first, count, textures); // added in gl4.1 private z_BindProgramPipeline_adr := GetProcAddress('glBindProgramPipeline'); private z_BindProgramPipeline_ovr_0 := GetProcOrNil&<procedure(pipeline: gl_program_pipeline)>(z_BindProgramPipeline_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindProgramPipeline(pipeline: gl_program_pipeline) := z_BindProgramPipeline_ovr_0(pipeline); // added in gl3.0 private z_BindRenderbuffer_adr := GetProcAddress('glBindRenderbuffer'); private z_BindRenderbuffer_ovr_0 := GetProcOrNil&<procedure(target: RenderbufferTarget; renderbuffer: gl_renderbuffer)>(z_BindRenderbuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindRenderbuffer(target: RenderbufferTarget; renderbuffer: gl_renderbuffer) := z_BindRenderbuffer_ovr_0(target, renderbuffer); // added in gl3.3 private z_BindSampler_adr := GetProcAddress('glBindSampler'); private z_BindSampler_ovr_0 := GetProcOrNil&<procedure(&unit: UInt32; sampler: gl_sampler)>(z_BindSampler_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindSampler(&unit: UInt32; sampler: gl_sampler) := z_BindSampler_ovr_0(&unit, sampler); // added in gl4.4 private z_BindSamplers_adr := GetProcAddress('glBindSamplers'); private z_BindSamplers_ovr_0 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var samplers: gl_sampler)>(z_BindSamplers_adr); private z_BindSamplers_ovr_0_anh0001 := GetProcOrNil&<procedure(first: UInt32; count: Int32; samplers: IntPtr)>(z_BindSamplers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindSamplers(first: UInt32; count: Int32; samplers: array of gl_sampler) := if (samplers<>nil) and (samplers.Length<>0) then z_BindSamplers_ovr_0(first, count, samplers[0]) else z_BindSamplers_ovr_0_anh0001(first, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindSamplers(first: UInt32; count: Int32; var samplers: gl_sampler) := z_BindSamplers_ovr_0(first, count, samplers); private z_BindSamplers_ovr_2 := GetProcOrNil&<procedure(first: UInt32; count: Int32; samplers: IntPtr)>(z_BindSamplers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindSamplers(first: UInt32; count: Int32; samplers: IntPtr) := z_BindSamplers_ovr_2(first, count, samplers); // added in gl1.1 private z_BindTexture_adr := GetProcAddress('glBindTexture'); private z_BindTexture_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; texture: gl_texture)>(z_BindTexture_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindTexture(target: TextureTarget; texture: gl_texture) := z_BindTexture_ovr_0(target, texture); // added in gl4.4 private z_BindTextures_adr := GetProcAddress('glBindTextures'); private z_BindTextures_ovr_0 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var textures: gl_texture)>(z_BindTextures_adr); private z_BindTextures_ovr_0_anh0001 := GetProcOrNil&<procedure(first: UInt32; count: Int32; textures: IntPtr)>(z_BindTextures_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindTextures(first: UInt32; count: Int32; textures: array of gl_texture) := if (textures<>nil) and (textures.Length<>0) then z_BindTextures_ovr_0(first, count, textures[0]) else z_BindTextures_ovr_0_anh0001(first, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindTextures(first: UInt32; count: Int32; var textures: gl_texture) := z_BindTextures_ovr_0(first, count, textures); private z_BindTextures_ovr_2 := GetProcOrNil&<procedure(first: UInt32; count: Int32; textures: IntPtr)>(z_BindTextures_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindTextures(first: UInt32; count: Int32; textures: IntPtr) := z_BindTextures_ovr_2(first, count, textures); // added in gl4.5 private z_BindTextureUnit_adr := GetProcAddress('glBindTextureUnit'); private z_BindTextureUnit_ovr_0 := GetProcOrNil&<procedure(&unit: UInt32; texture: gl_texture)>(z_BindTextureUnit_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindTextureUnit(&unit: UInt32; texture: gl_texture) := z_BindTextureUnit_ovr_0(&unit, texture); // added in gl4.0 private z_BindTransformFeedback_adr := GetProcAddress('glBindTransformFeedback'); private z_BindTransformFeedback_ovr_0 := GetProcOrNil&<procedure(target: BindTransformFeedbackTarget; id: gl_transform_feedback)>(z_BindTransformFeedback_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindTransformFeedback(target: BindTransformFeedbackTarget; id: gl_transform_feedback) := z_BindTransformFeedback_ovr_0(target, id); // added in gl3.0 private z_BindVertexArray_adr := GetProcAddress('glBindVertexArray'); private z_BindVertexArray_ovr_0 := GetProcOrNil&<procedure(&array: gl_vertex_array)>(z_BindVertexArray_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexArray(&array: gl_vertex_array) := z_BindVertexArray_ovr_0(&array); // added in gl4.3 private z_BindVertexBuffer_adr := GetProcAddress('glBindVertexBuffer'); private z_BindVertexBuffer_ovr_0 := GetProcOrNil&<procedure(bindingindex: UInt32; buffer: gl_buffer; offset: IntPtr; stride: Int32)>(z_BindVertexBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffer(bindingindex: UInt32; buffer: gl_buffer; offset: IntPtr; stride: Int32) := z_BindVertexBuffer_ovr_0(bindingindex, buffer, offset, stride); // added in gl4.4 private z_BindVertexBuffers_adr := GetProcAddress('glBindVertexBuffers'); private z_BindVertexBuffers_ovr_0 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; var strides: Int32)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_0_anh000100 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; var strides: Int32)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_0_anh000010 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; var strides: Int32)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_0_anh000110 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; var strides: Int32)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_0_anh000001 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_0_anh000101 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_0_anh000011 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_0_anh000111 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: array of gl_buffer; offsets: array of IntPtr; strides: array of Int32) := if (buffers<>nil) and (buffers.Length<>0) then if (offsets<>nil) and (offsets.Length<>0) then if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_0(first, count, buffers[0], offsets[0], strides[0]) else z_BindVertexBuffers_ovr_0_anh000001(first, count, buffers[0], offsets[0], IntPtr.Zero) else if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_0_anh000010(first, count, buffers[0], IntPtr.Zero, strides[0]) else z_BindVertexBuffers_ovr_0_anh000011(first, count, buffers[0], IntPtr.Zero, IntPtr.Zero) else if (offsets<>nil) and (offsets.Length<>0) then if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_0_anh000100(first, count, IntPtr.Zero, offsets[0], strides[0]) else z_BindVertexBuffers_ovr_0_anh000101(first, count, IntPtr.Zero, offsets[0], IntPtr.Zero) else if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_0_anh000110(first, count, IntPtr.Zero, IntPtr.Zero, strides[0]) else z_BindVertexBuffers_ovr_0_anh000111(first, count, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); private z_BindVertexBuffers_ovr_1_anh000100 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; var strides: Int32)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_1_anh000010 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; var strides: Int32)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_1_anh000110 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; var strides: Int32)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: array of gl_buffer; offsets: array of IntPtr; var strides: Int32) := if (buffers<>nil) and (buffers.Length<>0) then if (offsets<>nil) and (offsets.Length<>0) then z_BindVertexBuffers_ovr_0(first, count, buffers[0], offsets[0], strides) else z_BindVertexBuffers_ovr_0_anh000010(first, count, buffers[0], IntPtr.Zero, strides) else if (offsets<>nil) and (offsets.Length<>0) then z_BindVertexBuffers_ovr_0_anh000100(first, count, IntPtr.Zero, offsets[0], strides) else z_BindVertexBuffers_ovr_0_anh000110(first, count, IntPtr.Zero, IntPtr.Zero, strides); private z_BindVertexBuffers_ovr_2 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_2_anh000100 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_2_anh000010 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_2_anh000110 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: array of gl_buffer; offsets: array of IntPtr; strides: IntPtr) := if (buffers<>nil) and (buffers.Length<>0) then if (offsets<>nil) and (offsets.Length<>0) then z_BindVertexBuffers_ovr_2(first, count, buffers[0], offsets[0], strides) else z_BindVertexBuffers_ovr_2_anh000010(first, count, buffers[0], IntPtr.Zero, strides) else if (offsets<>nil) and (offsets.Length<>0) then z_BindVertexBuffers_ovr_2_anh000100(first, count, IntPtr.Zero, offsets[0], strides) else z_BindVertexBuffers_ovr_2_anh000110(first, count, IntPtr.Zero, IntPtr.Zero, strides); private z_BindVertexBuffers_ovr_3_anh000100 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; var strides: Int32)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_3_anh000101 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: array of gl_buffer; var offsets: IntPtr; strides: array of Int32) := if (buffers<>nil) and (buffers.Length<>0) then if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_0(first, count, buffers[0], offsets, strides[0]) else z_BindVertexBuffers_ovr_0_anh000001(first, count, buffers[0], offsets, IntPtr.Zero) else if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_0_anh000100(first, count, IntPtr.Zero, offsets, strides[0]) else z_BindVertexBuffers_ovr_0_anh000101(first, count, IntPtr.Zero, offsets, IntPtr.Zero); private z_BindVertexBuffers_ovr_4_anh000100 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; var strides: Int32)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: array of gl_buffer; var offsets: IntPtr; var strides: Int32) := if (buffers<>nil) and (buffers.Length<>0) then z_BindVertexBuffers_ovr_0(first, count, buffers[0], offsets, strides) else z_BindVertexBuffers_ovr_0_anh000100(first, count, IntPtr.Zero, offsets, strides); private z_BindVertexBuffers_ovr_5_anh000100 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: array of gl_buffer; var offsets: IntPtr; strides: IntPtr) := if (buffers<>nil) and (buffers.Length<>0) then z_BindVertexBuffers_ovr_2(first, count, buffers[0], offsets, strides) else z_BindVertexBuffers_ovr_2_anh000100(first, count, IntPtr.Zero, offsets, strides); private z_BindVertexBuffers_ovr_6 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: pointer; var strides: Int32)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_6_anh000100 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; var strides: Int32)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_6_anh000001 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: pointer; strides: IntPtr)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_6_anh000101 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; strides: IntPtr)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: array of gl_buffer; offsets: pointer; strides: array of Int32) := if (buffers<>nil) and (buffers.Length<>0) then if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_6(first, count, buffers[0], offsets, strides[0]) else z_BindVertexBuffers_ovr_6_anh000001(first, count, buffers[0], offsets, IntPtr.Zero) else if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_6_anh000100(first, count, IntPtr.Zero, offsets, strides[0]) else z_BindVertexBuffers_ovr_6_anh000101(first, count, IntPtr.Zero, offsets, IntPtr.Zero); private z_BindVertexBuffers_ovr_7_anh000100 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; var strides: Int32)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: array of gl_buffer; offsets: pointer; var strides: Int32) := if (buffers<>nil) and (buffers.Length<>0) then z_BindVertexBuffers_ovr_6(first, count, buffers[0], offsets, strides) else z_BindVertexBuffers_ovr_6_anh000100(first, count, IntPtr.Zero, offsets, strides); private z_BindVertexBuffers_ovr_8 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: pointer; strides: IntPtr)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_8_anh000100 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; strides: IntPtr)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: array of gl_buffer; offsets: pointer; strides: IntPtr) := if (buffers<>nil) and (buffers.Length<>0) then z_BindVertexBuffers_ovr_8(first, count, buffers[0], offsets, strides) else z_BindVertexBuffers_ovr_8_anh000100(first, count, IntPtr.Zero, offsets, strides); private z_BindVertexBuffers_ovr_9_anh000010 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; var strides: Int32)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_9_anh000011 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: array of IntPtr; strides: array of Int32) := if (offsets<>nil) and (offsets.Length<>0) then if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_0(first, count, buffers, offsets[0], strides[0]) else z_BindVertexBuffers_ovr_0_anh000001(first, count, buffers, offsets[0], IntPtr.Zero) else if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_0_anh000010(first, count, buffers, IntPtr.Zero, strides[0]) else z_BindVertexBuffers_ovr_0_anh000011(first, count, buffers, IntPtr.Zero, IntPtr.Zero); private z_BindVertexBuffers_ovr_10_anh000010 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; var strides: Int32)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: array of IntPtr; var strides: Int32) := if (offsets<>nil) and (offsets.Length<>0) then z_BindVertexBuffers_ovr_0(first, count, buffers, offsets[0], strides) else z_BindVertexBuffers_ovr_0_anh000010(first, count, buffers, IntPtr.Zero, strides); private z_BindVertexBuffers_ovr_11_anh000010 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: array of IntPtr; strides: IntPtr) := if (offsets<>nil) and (offsets.Length<>0) then z_BindVertexBuffers_ovr_2(first, count, buffers, offsets[0], strides) else z_BindVertexBuffers_ovr_2_anh000010(first, count, buffers, IntPtr.Zero, strides); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; strides: array of Int32) := if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_0(first, count, buffers, offsets, strides[0]) else z_BindVertexBuffers_ovr_0_anh000001(first, count, buffers, offsets, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; var strides: Int32) := z_BindVertexBuffers_ovr_0(first, count, buffers, offsets, strides); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; strides: IntPtr) := z_BindVertexBuffers_ovr_2(first, count, buffers, offsets, strides); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: pointer; strides: array of Int32) := if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_6(first, count, buffers, offsets, strides[0]) else z_BindVertexBuffers_ovr_6_anh000001(first, count, buffers, offsets, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: pointer; var strides: Int32) := z_BindVertexBuffers_ovr_6(first, count, buffers, offsets, strides); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; var buffers: gl_buffer; offsets: pointer; strides: IntPtr) := z_BindVertexBuffers_ovr_8(first, count, buffers, offsets, strides); private z_BindVertexBuffers_ovr_18 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; var strides: Int32)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_18_anh000010 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; var strides: Int32)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_18_anh000001 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_18_anh000011 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: IntPtr; offsets: array of IntPtr; strides: array of Int32) := if (offsets<>nil) and (offsets.Length<>0) then if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_18(first, count, buffers, offsets[0], strides[0]) else z_BindVertexBuffers_ovr_18_anh000001(first, count, buffers, offsets[0], IntPtr.Zero) else if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_18_anh000010(first, count, buffers, IntPtr.Zero, strides[0]) else z_BindVertexBuffers_ovr_18_anh000011(first, count, buffers, IntPtr.Zero, IntPtr.Zero); private z_BindVertexBuffers_ovr_19_anh000010 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; var strides: Int32)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: IntPtr; offsets: array of IntPtr; var strides: Int32) := if (offsets<>nil) and (offsets.Length<>0) then z_BindVertexBuffers_ovr_18(first, count, buffers, offsets[0], strides) else z_BindVertexBuffers_ovr_18_anh000010(first, count, buffers, IntPtr.Zero, strides); private z_BindVertexBuffers_ovr_20 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_20_anh000010 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; strides: IntPtr)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: IntPtr; offsets: array of IntPtr; strides: IntPtr) := if (offsets<>nil) and (offsets.Length<>0) then z_BindVertexBuffers_ovr_20(first, count, buffers, offsets[0], strides) else z_BindVertexBuffers_ovr_20_anh000010(first, count, buffers, IntPtr.Zero, strides); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; strides: array of Int32) := if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_18(first, count, buffers, offsets, strides[0]) else z_BindVertexBuffers_ovr_18_anh000001(first, count, buffers, offsets, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; var strides: Int32) := z_BindVertexBuffers_ovr_18(first, count, buffers, offsets, strides); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; strides: IntPtr) := z_BindVertexBuffers_ovr_20(first, count, buffers, offsets, strides); private z_BindVertexBuffers_ovr_24 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; var strides: Int32)>(z_BindVertexBuffers_adr); private z_BindVertexBuffers_ovr_24_anh000001 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; strides: IntPtr)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; strides: array of Int32) := if (strides<>nil) and (strides.Length<>0) then z_BindVertexBuffers_ovr_24(first, count, buffers, offsets, strides[0]) else z_BindVertexBuffers_ovr_24_anh000001(first, count, buffers, offsets, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; var strides: Int32) := z_BindVertexBuffers_ovr_24(first, count, buffers, offsets, strides); private z_BindVertexBuffers_ovr_26 := GetProcOrNil&<procedure(first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; strides: IntPtr)>(z_BindVertexBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BindVertexBuffers(first: UInt32; count: Int32; buffers: IntPtr; offsets: pointer; strides: IntPtr) := z_BindVertexBuffers_ovr_26(first, count, buffers, offsets, strides); // added in gl1.4 private z_BlendColor_adr := GetProcAddress('glBlendColor'); private z_BlendColor_ovr_0 := GetProcOrNil&<procedure(red: single; green: single; blue: single; alpha: single)>(z_BlendColor_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BlendColor(red: single; green: single; blue: single; alpha: single) := z_BlendColor_ovr_0(red, green, blue, alpha); // added in gl1.4 private z_BlendEquation_adr := GetProcAddress('glBlendEquation'); private z_BlendEquation_ovr_0 := GetProcOrNil&<procedure(mode: BlendEquationModeEXT)>(z_BlendEquation_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BlendEquation(mode: BlendEquationModeEXT) := z_BlendEquation_ovr_0(mode); // added in gl4.0 private z_BlendEquationi_adr := GetProcAddress('glBlendEquationi'); private z_BlendEquationi_ovr_0 := GetProcOrNil&<procedure(buf: UInt32; mode: BlendEquationModeEXT)>(z_BlendEquationi_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BlendEquationi(buf: UInt32; mode: BlendEquationModeEXT) := z_BlendEquationi_ovr_0(buf, mode); // added in gl2.0 private z_BlendEquationSeparate_adr := GetProcAddress('glBlendEquationSeparate'); private z_BlendEquationSeparate_ovr_0 := GetProcOrNil&<procedure(modeRGB: BlendEquationModeEXT; modeAlpha: BlendEquationModeEXT)>(z_BlendEquationSeparate_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BlendEquationSeparate(modeRGB: BlendEquationModeEXT; modeAlpha: BlendEquationModeEXT) := z_BlendEquationSeparate_ovr_0(modeRGB, modeAlpha); // added in gl4.0 private z_BlendEquationSeparatei_adr := GetProcAddress('glBlendEquationSeparatei'); private z_BlendEquationSeparatei_ovr_0 := GetProcOrNil&<procedure(buf: UInt32; modeRGB: BlendEquationModeEXT; modeAlpha: BlendEquationModeEXT)>(z_BlendEquationSeparatei_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BlendEquationSeparatei(buf: UInt32; modeRGB: BlendEquationModeEXT; modeAlpha: BlendEquationModeEXT) := z_BlendEquationSeparatei_ovr_0(buf, modeRGB, modeAlpha); // added in gl1.0 private z_BlendFunc_adr := GetProcAddress('glBlendFunc'); private z_BlendFunc_ovr_0 := GetProcOrNil&<procedure(sfactor: BlendingFactor; dfactor: BlendingFactor)>(z_BlendFunc_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BlendFunc(sfactor: BlendingFactor; dfactor: BlendingFactor) := z_BlendFunc_ovr_0(sfactor, dfactor); // added in gl4.0 private z_BlendFunci_adr := GetProcAddress('glBlendFunci'); private z_BlendFunci_ovr_0 := GetProcOrNil&<procedure(buf: UInt32; src: BlendingFactor; dst: BlendingFactor)>(z_BlendFunci_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BlendFunci(buf: UInt32; src: BlendingFactor; dst: BlendingFactor) := z_BlendFunci_ovr_0(buf, src, dst); // added in gl1.4 private z_BlendFuncSeparate_adr := GetProcAddress('glBlendFuncSeparate'); private z_BlendFuncSeparate_ovr_0 := GetProcOrNil&<procedure(sfactorRGB: BlendingFactor; dfactorRGB: BlendingFactor; sfactorAlpha: BlendingFactor; dfactorAlpha: BlendingFactor)>(z_BlendFuncSeparate_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BlendFuncSeparate(sfactorRGB: BlendingFactor; dfactorRGB: BlendingFactor; sfactorAlpha: BlendingFactor; dfactorAlpha: BlendingFactor) := z_BlendFuncSeparate_ovr_0(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); // added in gl4.0 private z_BlendFuncSeparatei_adr := GetProcAddress('glBlendFuncSeparatei'); private z_BlendFuncSeparatei_ovr_0 := GetProcOrNil&<procedure(buf: UInt32; srcRGB: BlendingFactor; dstRGB: BlendingFactor; srcAlpha: BlendingFactor; dstAlpha: BlendingFactor)>(z_BlendFuncSeparatei_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BlendFuncSeparatei(buf: UInt32; srcRGB: BlendingFactor; dstRGB: BlendingFactor; srcAlpha: BlendingFactor; dstAlpha: BlendingFactor) := z_BlendFuncSeparatei_ovr_0(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); // added in gl3.0 private z_BlitFramebuffer_adr := GetProcAddress('glBlitFramebuffer'); private z_BlitFramebuffer_ovr_0 := GetProcOrNil&<procedure(srcX0: Int32; srcY0: Int32; srcX1: Int32; srcY1: Int32; dstX0: Int32; dstY0: Int32; dstX1: Int32; dstY1: Int32; mask: ClearBufferMask; filter: BlitFramebufferFilter)>(z_BlitFramebuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BlitFramebuffer(srcX0: Int32; srcY0: Int32; srcX1: Int32; srcY1: Int32; dstX0: Int32; dstY0: Int32; dstX1: Int32; dstY1: Int32; mask: ClearBufferMask; filter: BlitFramebufferFilter) := z_BlitFramebuffer_ovr_0(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); // added in gl4.5 private z_BlitNamedFramebuffer_adr := GetProcAddress('glBlitNamedFramebuffer'); private z_BlitNamedFramebuffer_ovr_0 := GetProcOrNil&<procedure(readFramebuffer: gl_framebuffer; drawFramebuffer: gl_framebuffer; srcX0: Int32; srcY0: Int32; srcX1: Int32; srcY1: Int32; dstX0: Int32; dstY0: Int32; dstX1: Int32; dstY1: Int32; mask: ClearBufferMask; filter: BlitFramebufferFilter)>(z_BlitNamedFramebuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BlitNamedFramebuffer(readFramebuffer: gl_framebuffer; drawFramebuffer: gl_framebuffer; srcX0: Int32; srcY0: Int32; srcX1: Int32; srcY1: Int32; dstX0: Int32; dstY0: Int32; dstX1: Int32; dstY1: Int32; mask: ClearBufferMask; filter: BlitFramebufferFilter) := z_BlitNamedFramebuffer_ovr_0(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); // added in gl1.5 private z_BufferData_adr := GetProcAddress('glBufferData'); private z_BufferData_ovr_0 := GetProcOrNil&<procedure(target: BufferTarget; size: IntPtr; data: IntPtr; usage: BufferUsageARB)>(z_BufferData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BufferData(target: BufferTarget; size: IntPtr; data: IntPtr; usage: BufferUsageARB) := z_BufferData_ovr_0(target, size, data, usage); // added in gl4.4 private z_BufferStorage_adr := GetProcAddress('glBufferStorage'); private z_BufferStorage_ovr_0 := GetProcOrNil&<procedure(target: BufferStorageTarget; size: IntPtr; data: IntPtr; flags: BufferStorageMask)>(z_BufferStorage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BufferStorage(target: BufferStorageTarget; size: IntPtr; data: IntPtr; flags: BufferStorageMask) := z_BufferStorage_ovr_0(target, size, data, flags); // added in gl1.5 private z_BufferSubData_adr := GetProcAddress('glBufferSubData'); private z_BufferSubData_ovr_0 := GetProcOrNil&<procedure(target: BufferTarget; offset: IntPtr; size: IntPtr; data: IntPtr)>(z_BufferSubData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure BufferSubData(target: BufferTarget; offset: IntPtr; size: IntPtr; data: IntPtr) := z_BufferSubData_ovr_0(target, offset, size, data); // added in gl3.0 private z_CheckFramebufferStatus_adr := GetProcAddress('glCheckFramebufferStatus'); private z_CheckFramebufferStatus_ovr_0 := GetProcOrNil&<function(target: FramebufferTarget): FramebufferStatus>(z_CheckFramebufferStatus_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function CheckFramebufferStatus(target: FramebufferTarget): FramebufferStatus := z_CheckFramebufferStatus_ovr_0(target); // added in gl4.5 private z_CheckNamedFramebufferStatus_adr := GetProcAddress('glCheckNamedFramebufferStatus'); private z_CheckNamedFramebufferStatus_ovr_0 := GetProcOrNil&<function(framebuffer: gl_framebuffer; target: FramebufferTarget): FramebufferStatus>(z_CheckNamedFramebufferStatus_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function CheckNamedFramebufferStatus(framebuffer: gl_framebuffer; target: FramebufferTarget): FramebufferStatus := z_CheckNamedFramebufferStatus_ovr_0(framebuffer, target); // added in gl3.0 private z_ClampColor_adr := GetProcAddress('glClampColor'); private z_ClampColor_ovr_0 := GetProcOrNil&<procedure(target: ClampColorTargetARB; clamp: ClampColorModeARB)>(z_ClampColor_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClampColor(target: ClampColorTargetARB; clamp: ClampColorModeARB) := z_ClampColor_ovr_0(target, clamp); // added in gl1.0 private z_Clear_adr := GetProcAddress('glClear'); private z_Clear_ovr_0 := GetProcOrNil&<procedure(mask: ClearBufferMask)>(z_Clear_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Clear(mask: ClearBufferMask) := z_Clear_ovr_0(mask); // added in gl4.3 private z_ClearBufferData_adr := GetProcAddress('glClearBufferData'); private z_ClearBufferData_ovr_0 := GetProcOrNil&<procedure(target: BufferStorageTarget; internalformat: SizedInternalFormat; format: PixelFormat; &type: PixelType; data: IntPtr)>(z_ClearBufferData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearBufferData(target: BufferStorageTarget; internalformat: SizedInternalFormat; format: PixelFormat; &type: PixelType; data: IntPtr) := z_ClearBufferData_ovr_0(target, internalformat, format, &type, data); // added in gl3.0 private z_ClearBufferfi_adr := GetProcAddress('glClearBufferfi'); private z_ClearBufferfi_ovr_0 := GetProcOrNil&<procedure(_buffer: Buffer; drawbuffer: Int32; depth: single; stencil: Int32)>(z_ClearBufferfi_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearBufferfi(_buffer: Buffer; drawbuffer: Int32; depth: single; stencil: Int32) := z_ClearBufferfi_ovr_0(_buffer, drawbuffer, depth, stencil); // added in gl3.0 private z_ClearBufferfv_adr := GetProcAddress('glClearBufferfv'); private z_ClearBufferfv_ovr_0 := GetProcOrNil&<procedure(_buffer: Buffer; drawbuffer: Int32; var value: single)>(z_ClearBufferfv_adr); private z_ClearBufferfv_ovr_0_anh0001 := GetProcOrNil&<procedure(_buffer: Buffer; drawbuffer: Int32; value: IntPtr)>(z_ClearBufferfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearBufferfv(_buffer: Buffer; drawbuffer: Int32; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ClearBufferfv_ovr_0(_buffer, drawbuffer, value[0]) else z_ClearBufferfv_ovr_0_anh0001(_buffer, drawbuffer, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearBufferfv(_buffer: Buffer; drawbuffer: Int32; var value: single) := z_ClearBufferfv_ovr_0(_buffer, drawbuffer, value); private z_ClearBufferfv_ovr_2 := GetProcOrNil&<procedure(_buffer: Buffer; drawbuffer: Int32; value: IntPtr)>(z_ClearBufferfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearBufferfv(_buffer: Buffer; drawbuffer: Int32; value: IntPtr) := z_ClearBufferfv_ovr_2(_buffer, drawbuffer, value); // added in gl3.0 private z_ClearBufferiv_adr := GetProcAddress('glClearBufferiv'); private z_ClearBufferiv_ovr_0 := GetProcOrNil&<procedure(_buffer: Buffer; drawbuffer: Int32; var value: Int32)>(z_ClearBufferiv_adr); private z_ClearBufferiv_ovr_0_anh0001 := GetProcOrNil&<procedure(_buffer: Buffer; drawbuffer: Int32; value: IntPtr)>(z_ClearBufferiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearBufferiv(_buffer: Buffer; drawbuffer: Int32; value: array of Int32) := if (value<>nil) and (value.Length<>0) then z_ClearBufferiv_ovr_0(_buffer, drawbuffer, value[0]) else z_ClearBufferiv_ovr_0_anh0001(_buffer, drawbuffer, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearBufferiv(_buffer: Buffer; drawbuffer: Int32; var value: Int32) := z_ClearBufferiv_ovr_0(_buffer, drawbuffer, value); private z_ClearBufferiv_ovr_2 := GetProcOrNil&<procedure(_buffer: Buffer; drawbuffer: Int32; value: IntPtr)>(z_ClearBufferiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearBufferiv(_buffer: Buffer; drawbuffer: Int32; value: IntPtr) := z_ClearBufferiv_ovr_2(_buffer, drawbuffer, value); // added in gl4.3 private z_ClearBufferSubData_adr := GetProcAddress('glClearBufferSubData'); private z_ClearBufferSubData_ovr_0 := GetProcOrNil&<procedure(target: BufferTarget; internalformat: SizedInternalFormat; offset: IntPtr; size: IntPtr; format: PixelFormat; &type: PixelType; data: IntPtr)>(z_ClearBufferSubData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearBufferSubData(target: BufferTarget; internalformat: SizedInternalFormat; offset: IntPtr; size: IntPtr; format: PixelFormat; &type: PixelType; data: IntPtr) := z_ClearBufferSubData_ovr_0(target, internalformat, offset, size, format, &type, data); // added in gl3.0 private z_ClearBufferuiv_adr := GetProcAddress('glClearBufferuiv'); private z_ClearBufferuiv_ovr_0 := GetProcOrNil&<procedure(_buffer: Buffer; drawbuffer: Int32; var value: UInt32)>(z_ClearBufferuiv_adr); private z_ClearBufferuiv_ovr_0_anh0001 := GetProcOrNil&<procedure(_buffer: Buffer; drawbuffer: Int32; value: IntPtr)>(z_ClearBufferuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearBufferuiv(_buffer: Buffer; drawbuffer: Int32; value: array of UInt32) := if (value<>nil) and (value.Length<>0) then z_ClearBufferuiv_ovr_0(_buffer, drawbuffer, value[0]) else z_ClearBufferuiv_ovr_0_anh0001(_buffer, drawbuffer, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearBufferuiv(_buffer: Buffer; drawbuffer: Int32; var value: UInt32) := z_ClearBufferuiv_ovr_0(_buffer, drawbuffer, value); private z_ClearBufferuiv_ovr_2 := GetProcOrNil&<procedure(_buffer: Buffer; drawbuffer: Int32; value: IntPtr)>(z_ClearBufferuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearBufferuiv(_buffer: Buffer; drawbuffer: Int32; value: IntPtr) := z_ClearBufferuiv_ovr_2(_buffer, drawbuffer, value); // added in gl1.0 private z_ClearColor_adr := GetProcAddress('glClearColor'); private z_ClearColor_ovr_0 := GetProcOrNil&<procedure(red: single; green: single; blue: single; alpha: single)>(z_ClearColor_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearColor(red: single; green: single; blue: single; alpha: single) := z_ClearColor_ovr_0(red, green, blue, alpha); // added in gl1.0 private z_ClearDepth_adr := GetProcAddress('glClearDepth'); private z_ClearDepth_ovr_0 := GetProcOrNil&<procedure(depth: real)>(z_ClearDepth_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearDepth(depth: real) := z_ClearDepth_ovr_0(depth); // added in gl4.1 private z_ClearDepthf_adr := GetProcAddress('glClearDepthf'); private z_ClearDepthf_ovr_0 := GetProcOrNil&<procedure(d: single)>(z_ClearDepthf_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearDepthf(d: single) := z_ClearDepthf_ovr_0(d); // added in gl4.5 private z_ClearNamedBufferData_adr := GetProcAddress('glClearNamedBufferData'); private z_ClearNamedBufferData_ovr_0 := GetProcOrNil&<procedure(buffer: gl_buffer; internalformat: SizedInternalFormat; format: PixelFormat; &type: PixelType; data: IntPtr)>(z_ClearNamedBufferData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearNamedBufferData(buffer: gl_buffer; internalformat: SizedInternalFormat; format: PixelFormat; &type: PixelType; data: IntPtr) := z_ClearNamedBufferData_ovr_0(buffer, internalformat, format, &type, data); // added in gl4.5 private z_ClearNamedBufferSubData_adr := GetProcAddress('glClearNamedBufferSubData'); private z_ClearNamedBufferSubData_ovr_0 := GetProcOrNil&<procedure(buffer: gl_buffer; internalformat: SizedInternalFormat; offset: IntPtr; size: IntPtr; format: PixelFormat; &type: PixelType; data: IntPtr)>(z_ClearNamedBufferSubData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearNamedBufferSubData(buffer: gl_buffer; internalformat: SizedInternalFormat; offset: IntPtr; size: IntPtr; format: PixelFormat; &type: PixelType; data: IntPtr) := z_ClearNamedBufferSubData_ovr_0(buffer, internalformat, offset, size, format, &type, data); // added in gl4.5 private z_ClearNamedFramebufferfi_adr := GetProcAddress('glClearNamedFramebufferfi'); private z_ClearNamedFramebufferfi_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; depth: single; stencil: Int32)>(z_ClearNamedFramebufferfi_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearNamedFramebufferfi(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; depth: single; stencil: Int32) := z_ClearNamedFramebufferfi_ovr_0(framebuffer, _buffer, drawbuffer, depth, stencil); // added in gl4.5 private z_ClearNamedFramebufferfv_adr := GetProcAddress('glClearNamedFramebufferfv'); private z_ClearNamedFramebufferfv_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; var value: single)>(z_ClearNamedFramebufferfv_adr); private z_ClearNamedFramebufferfv_ovr_0_anh00001 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; value: IntPtr)>(z_ClearNamedFramebufferfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearNamedFramebufferfv(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ClearNamedFramebufferfv_ovr_0(framebuffer, _buffer, drawbuffer, value[0]) else z_ClearNamedFramebufferfv_ovr_0_anh00001(framebuffer, _buffer, drawbuffer, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearNamedFramebufferfv(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; var value: single) := z_ClearNamedFramebufferfv_ovr_0(framebuffer, _buffer, drawbuffer, value); private z_ClearNamedFramebufferfv_ovr_2 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; value: IntPtr)>(z_ClearNamedFramebufferfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearNamedFramebufferfv(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; value: IntPtr) := z_ClearNamedFramebufferfv_ovr_2(framebuffer, _buffer, drawbuffer, value); // added in gl4.5 private z_ClearNamedFramebufferiv_adr := GetProcAddress('glClearNamedFramebufferiv'); private z_ClearNamedFramebufferiv_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; var value: Int32)>(z_ClearNamedFramebufferiv_adr); private z_ClearNamedFramebufferiv_ovr_0_anh00001 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; value: IntPtr)>(z_ClearNamedFramebufferiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearNamedFramebufferiv(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; value: array of Int32) := if (value<>nil) and (value.Length<>0) then z_ClearNamedFramebufferiv_ovr_0(framebuffer, _buffer, drawbuffer, value[0]) else z_ClearNamedFramebufferiv_ovr_0_anh00001(framebuffer, _buffer, drawbuffer, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearNamedFramebufferiv(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; var value: Int32) := z_ClearNamedFramebufferiv_ovr_0(framebuffer, _buffer, drawbuffer, value); private z_ClearNamedFramebufferiv_ovr_2 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; value: IntPtr)>(z_ClearNamedFramebufferiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearNamedFramebufferiv(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; value: IntPtr) := z_ClearNamedFramebufferiv_ovr_2(framebuffer, _buffer, drawbuffer, value); // added in gl4.5 private z_ClearNamedFramebufferuiv_adr := GetProcAddress('glClearNamedFramebufferuiv'); private z_ClearNamedFramebufferuiv_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; var value: UInt32)>(z_ClearNamedFramebufferuiv_adr); private z_ClearNamedFramebufferuiv_ovr_0_anh00001 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; value: IntPtr)>(z_ClearNamedFramebufferuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearNamedFramebufferuiv(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; value: array of UInt32) := if (value<>nil) and (value.Length<>0) then z_ClearNamedFramebufferuiv_ovr_0(framebuffer, _buffer, drawbuffer, value[0]) else z_ClearNamedFramebufferuiv_ovr_0_anh00001(framebuffer, _buffer, drawbuffer, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearNamedFramebufferuiv(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; var value: UInt32) := z_ClearNamedFramebufferuiv_ovr_0(framebuffer, _buffer, drawbuffer, value); private z_ClearNamedFramebufferuiv_ovr_2 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; value: IntPtr)>(z_ClearNamedFramebufferuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearNamedFramebufferuiv(framebuffer: gl_framebuffer; _buffer: Buffer; drawbuffer: Int32; value: IntPtr) := z_ClearNamedFramebufferuiv_ovr_2(framebuffer, _buffer, drawbuffer, value); // added in gl1.0 private z_ClearStencil_adr := GetProcAddress('glClearStencil'); private z_ClearStencil_ovr_0 := GetProcOrNil&<procedure(s: Int32)>(z_ClearStencil_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearStencil(s: Int32) := z_ClearStencil_ovr_0(s); // added in gl4.4 private z_ClearTexImage_adr := GetProcAddress('glClearTexImage'); private z_ClearTexImage_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; format: PixelFormat; &type: PixelType; data: IntPtr)>(z_ClearTexImage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearTexImage(texture: gl_texture; level: Int32; format: PixelFormat; &type: PixelType; data: IntPtr) := z_ClearTexImage_ovr_0(texture, level, format, &type, data); // added in gl4.4 private z_ClearTexSubImage_adr := GetProcAddress('glClearTexSubImage'); private z_ClearTexSubImage_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32; format: PixelFormat; &type: PixelType; data: IntPtr)>(z_ClearTexSubImage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClearTexSubImage(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32; format: PixelFormat; &type: PixelType; data: IntPtr) := z_ClearTexSubImage_ovr_0(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, &type, data); // added in gl3.2 private z_ClientWaitSync_adr := GetProcAddress('glClientWaitSync'); private z_ClientWaitSync_ovr_0 := GetProcOrNil&<function(sync: gl_sync; flags: SyncObjectMask; timeout: UInt64): SyncStatus>(z_ClientWaitSync_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function ClientWaitSync(sync: gl_sync; flags: SyncObjectMask; timeout: UInt64): SyncStatus := z_ClientWaitSync_ovr_0(sync, flags, timeout); // added in gl4.5 private z_ClipControl_adr := GetProcAddress('glClipControl'); private z_ClipControl_ovr_0 := GetProcOrNil&<procedure(origin: ClipControlOrigin; depth: ClipControlDepth)>(z_ClipControl_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ClipControl(origin: ClipControlOrigin; depth: ClipControlDepth) := z_ClipControl_ovr_0(origin, depth); // added in gl1.0 private z_ColorMask_adr := GetProcAddress('glColorMask'); private z_ColorMask_ovr_0 := GetProcOrNil&<procedure(red: boolean; green: boolean; blue: boolean; alpha: boolean)>(z_ColorMask_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ColorMask(red: boolean; green: boolean; blue: boolean; alpha: boolean) := z_ColorMask_ovr_0(red, green, blue, alpha); // added in gl3.0 private z_ColorMaski_adr := GetProcAddress('glColorMaski'); private z_ColorMaski_ovr_0 := GetProcOrNil&<procedure(index: UInt32; r: boolean; g: boolean; b: boolean; a: boolean)>(z_ColorMaski_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ColorMaski(index: UInt32; r: boolean; g: boolean; b: boolean; a: boolean) := z_ColorMaski_ovr_0(index, r, g, b, a); // added in gl3.3 private z_ColorP3ui_adr := GetProcAddress('glColorP3ui'); private z_ColorP3ui_ovr_0 := GetProcOrNil&<procedure(&type: ColorPointerType; color: UInt32)>(z_ColorP3ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ColorP3ui(&type: ColorPointerType; color: UInt32) := z_ColorP3ui_ovr_0(&type, color); // added in gl3.3 private z_ColorP3uiv_adr := GetProcAddress('glColorP3uiv'); private z_ColorP3uiv_ovr_0 := GetProcOrNil&<procedure(&type: ColorPointerType; var color: UInt32)>(z_ColorP3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ColorP3uiv(&type: ColorPointerType; var color: UInt32) := z_ColorP3uiv_ovr_0(&type, color); private z_ColorP3uiv_ovr_1 := GetProcOrNil&<procedure(&type: ColorPointerType; color: IntPtr)>(z_ColorP3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ColorP3uiv(&type: ColorPointerType; color: IntPtr) := z_ColorP3uiv_ovr_1(&type, color); // added in gl3.3 private z_ColorP4ui_adr := GetProcAddress('glColorP4ui'); private z_ColorP4ui_ovr_0 := GetProcOrNil&<procedure(&type: ColorPointerType; color: UInt32)>(z_ColorP4ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ColorP4ui(&type: ColorPointerType; color: UInt32) := z_ColorP4ui_ovr_0(&type, color); // added in gl3.3 private z_ColorP4uiv_adr := GetProcAddress('glColorP4uiv'); private z_ColorP4uiv_ovr_0 := GetProcOrNil&<procedure(&type: ColorPointerType; var color: UInt32)>(z_ColorP4uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ColorP4uiv(&type: ColorPointerType; var color: UInt32) := z_ColorP4uiv_ovr_0(&type, color); private z_ColorP4uiv_ovr_1 := GetProcOrNil&<procedure(&type: ColorPointerType; color: IntPtr)>(z_ColorP4uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ColorP4uiv(&type: ColorPointerType; color: IntPtr) := z_ColorP4uiv_ovr_1(&type, color); // added in gl2.0 private z_CompileShader_adr := GetProcAddress('glCompileShader'); private z_CompileShader_ovr_0 := GetProcOrNil&<procedure(shader: gl_shader)>(z_CompileShader_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CompileShader(shader: gl_shader) := z_CompileShader_ovr_0(shader); // added in gl1.3 private z_CompressedTexImage1D_adr := GetProcAddress('glCompressedTexImage1D'); private z_CompressedTexImage1D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; _internalformat: InternalFormat; width: Int32; border: Int32; imageSize: Int32; data: IntPtr)>(z_CompressedTexImage1D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CompressedTexImage1D(target: TextureTarget; level: Int32; _internalformat: InternalFormat; width: Int32; border: Int32; imageSize: Int32; data: IntPtr) := z_CompressedTexImage1D_ovr_0(target, level, _internalformat, width, border, imageSize, data); // added in gl1.3 private z_CompressedTexImage2D_adr := GetProcAddress('glCompressedTexImage2D'); private z_CompressedTexImage2D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; _internalformat: InternalFormat; width: Int32; height: Int32; border: Int32; imageSize: Int32; data: IntPtr)>(z_CompressedTexImage2D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CompressedTexImage2D(target: TextureTarget; level: Int32; _internalformat: InternalFormat; width: Int32; height: Int32; border: Int32; imageSize: Int32; data: IntPtr) := z_CompressedTexImage2D_ovr_0(target, level, _internalformat, width, height, border, imageSize, data); // added in gl1.3 private z_CompressedTexImage3D_adr := GetProcAddress('glCompressedTexImage3D'); private z_CompressedTexImage3D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; _internalformat: InternalFormat; width: Int32; height: Int32; depth: Int32; border: Int32; imageSize: Int32; data: IntPtr)>(z_CompressedTexImage3D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CompressedTexImage3D(target: TextureTarget; level: Int32; _internalformat: InternalFormat; width: Int32; height: Int32; depth: Int32; border: Int32; imageSize: Int32; data: IntPtr) := z_CompressedTexImage3D_ovr_0(target, level, _internalformat, width, height, depth, border, imageSize, data); // added in gl1.3 private z_CompressedTexSubImage1D_adr := GetProcAddress('glCompressedTexSubImage1D'); private z_CompressedTexSubImage1D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; xoffset: Int32; width: Int32; format: InternalFormat; imageSize: Int32; data: IntPtr)>(z_CompressedTexSubImage1D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CompressedTexSubImage1D(target: TextureTarget; level: Int32; xoffset: Int32; width: Int32; format: InternalFormat; imageSize: Int32; data: IntPtr) := z_CompressedTexSubImage1D_ovr_0(target, level, xoffset, width, format, imageSize, data); // added in gl1.3 private z_CompressedTexSubImage2D_adr := GetProcAddress('glCompressedTexSubImage2D'); private z_CompressedTexSubImage2D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; xoffset: Int32; yoffset: Int32; width: Int32; height: Int32; format: InternalFormat; imageSize: Int32; data: IntPtr)>(z_CompressedTexSubImage2D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CompressedTexSubImage2D(target: TextureTarget; level: Int32; xoffset: Int32; yoffset: Int32; width: Int32; height: Int32; format: InternalFormat; imageSize: Int32; data: IntPtr) := z_CompressedTexSubImage2D_ovr_0(target, level, xoffset, yoffset, width, height, format, imageSize, data); // added in gl1.3 private z_CompressedTexSubImage3D_adr := GetProcAddress('glCompressedTexSubImage3D'); private z_CompressedTexSubImage3D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32; format: InternalFormat; imageSize: Int32; data: IntPtr)>(z_CompressedTexSubImage3D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CompressedTexSubImage3D(target: TextureTarget; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32; format: InternalFormat; imageSize: Int32; data: IntPtr) := z_CompressedTexSubImage3D_ovr_0(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); // added in gl4.5 private z_CompressedTextureSubImage1D_adr := GetProcAddress('glCompressedTextureSubImage1D'); private z_CompressedTextureSubImage1D_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; xoffset: Int32; width: Int32; format: InternalFormat; imageSize: Int32; data: IntPtr)>(z_CompressedTextureSubImage1D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CompressedTextureSubImage1D(texture: gl_texture; level: Int32; xoffset: Int32; width: Int32; format: InternalFormat; imageSize: Int32; data: IntPtr) := z_CompressedTextureSubImage1D_ovr_0(texture, level, xoffset, width, format, imageSize, data); // added in gl4.5 private z_CompressedTextureSubImage2D_adr := GetProcAddress('glCompressedTextureSubImage2D'); private z_CompressedTextureSubImage2D_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; width: Int32; height: Int32; format: InternalFormat; imageSize: Int32; data: IntPtr)>(z_CompressedTextureSubImage2D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CompressedTextureSubImage2D(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; width: Int32; height: Int32; format: InternalFormat; imageSize: Int32; data: IntPtr) := z_CompressedTextureSubImage2D_ovr_0(texture, level, xoffset, yoffset, width, height, format, imageSize, data); // added in gl4.5 private z_CompressedTextureSubImage3D_adr := GetProcAddress('glCompressedTextureSubImage3D'); private z_CompressedTextureSubImage3D_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32; format: InternalFormat; imageSize: Int32; data: IntPtr)>(z_CompressedTextureSubImage3D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CompressedTextureSubImage3D(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32; format: InternalFormat; imageSize: Int32; data: IntPtr) := z_CompressedTextureSubImage3D_ovr_0(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); // added in gl3.1 private z_CopyBufferSubData_adr := GetProcAddress('glCopyBufferSubData'); private z_CopyBufferSubData_ovr_0 := GetProcOrNil&<procedure(readTarget: CopyBufferSubDataTarget; writeTarget: CopyBufferSubDataTarget; readOffset: IntPtr; writeOffset: IntPtr; size: IntPtr)>(z_CopyBufferSubData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CopyBufferSubData(readTarget: CopyBufferSubDataTarget; writeTarget: CopyBufferSubDataTarget; readOffset: IntPtr; writeOffset: IntPtr; size: IntPtr) := z_CopyBufferSubData_ovr_0(readTarget, writeTarget, readOffset, writeOffset, size); // added in gl4.3 private z_CopyImageSubData_adr := GetProcAddress('glCopyImageSubData'); private z_CopyImageSubData_ovr_0 := GetProcOrNil&<procedure(srcName: UInt32; srcTarget: CopyImageSubDataTarget; srcLevel: Int32; srcX: Int32; srcY: Int32; srcZ: Int32; dstName: UInt32; dstTarget: CopyImageSubDataTarget; dstLevel: Int32; dstX: Int32; dstY: Int32; dstZ: Int32; srcWidth: Int32; srcHeight: Int32; srcDepth: Int32)>(z_CopyImageSubData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CopyImageSubData(srcName: UInt32; srcTarget: CopyImageSubDataTarget; srcLevel: Int32; srcX: Int32; srcY: Int32; srcZ: Int32; dstName: UInt32; dstTarget: CopyImageSubDataTarget; dstLevel: Int32; dstX: Int32; dstY: Int32; dstZ: Int32; srcWidth: Int32; srcHeight: Int32; srcDepth: Int32) := z_CopyImageSubData_ovr_0(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); // added in gl4.5 private z_CopyNamedBufferSubData_adr := GetProcAddress('glCopyNamedBufferSubData'); private z_CopyNamedBufferSubData_ovr_0 := GetProcOrNil&<procedure(readBuffer: gl_buffer; writeBuffer: gl_buffer; readOffset: IntPtr; writeOffset: IntPtr; size: IntPtr)>(z_CopyNamedBufferSubData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CopyNamedBufferSubData(readBuffer: gl_buffer; writeBuffer: gl_buffer; readOffset: IntPtr; writeOffset: IntPtr; size: IntPtr) := z_CopyNamedBufferSubData_ovr_0(readBuffer, writeBuffer, readOffset, writeOffset, size); // added in gl1.1 private z_CopyTexImage1D_adr := GetProcAddress('glCopyTexImage1D'); private z_CopyTexImage1D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; _internalformat: InternalFormat; x: Int32; y: Int32; width: Int32; border: Int32)>(z_CopyTexImage1D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CopyTexImage1D(target: TextureTarget; level: Int32; _internalformat: InternalFormat; x: Int32; y: Int32; width: Int32; border: Int32) := z_CopyTexImage1D_ovr_0(target, level, _internalformat, x, y, width, border); // added in gl1.1 private z_CopyTexImage2D_adr := GetProcAddress('glCopyTexImage2D'); private z_CopyTexImage2D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; _internalformat: InternalFormat; x: Int32; y: Int32; width: Int32; height: Int32; border: Int32)>(z_CopyTexImage2D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CopyTexImage2D(target: TextureTarget; level: Int32; _internalformat: InternalFormat; x: Int32; y: Int32; width: Int32; height: Int32; border: Int32) := z_CopyTexImage2D_ovr_0(target, level, _internalformat, x, y, width, height, border); // added in gl1.1 private z_CopyTexSubImage1D_adr := GetProcAddress('glCopyTexSubImage1D'); private z_CopyTexSubImage1D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; xoffset: Int32; x: Int32; y: Int32; width: Int32)>(z_CopyTexSubImage1D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CopyTexSubImage1D(target: TextureTarget; level: Int32; xoffset: Int32; x: Int32; y: Int32; width: Int32) := z_CopyTexSubImage1D_ovr_0(target, level, xoffset, x, y, width); // added in gl1.1 private z_CopyTexSubImage2D_adr := GetProcAddress('glCopyTexSubImage2D'); private z_CopyTexSubImage2D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; xoffset: Int32; yoffset: Int32; x: Int32; y: Int32; width: Int32; height: Int32)>(z_CopyTexSubImage2D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CopyTexSubImage2D(target: TextureTarget; level: Int32; xoffset: Int32; yoffset: Int32; x: Int32; y: Int32; width: Int32; height: Int32) := z_CopyTexSubImage2D_ovr_0(target, level, xoffset, yoffset, x, y, width, height); // added in gl1.2 private z_CopyTexSubImage3D_adr := GetProcAddress('glCopyTexSubImage3D'); private z_CopyTexSubImage3D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; x: Int32; y: Int32; width: Int32; height: Int32)>(z_CopyTexSubImage3D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CopyTexSubImage3D(target: TextureTarget; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; x: Int32; y: Int32; width: Int32; height: Int32) := z_CopyTexSubImage3D_ovr_0(target, level, xoffset, yoffset, zoffset, x, y, width, height); // added in gl4.5 private z_CopyTextureSubImage1D_adr := GetProcAddress('glCopyTextureSubImage1D'); private z_CopyTextureSubImage1D_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; xoffset: Int32; x: Int32; y: Int32; width: Int32)>(z_CopyTextureSubImage1D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CopyTextureSubImage1D(texture: gl_texture; level: Int32; xoffset: Int32; x: Int32; y: Int32; width: Int32) := z_CopyTextureSubImage1D_ovr_0(texture, level, xoffset, x, y, width); // added in gl4.5 private z_CopyTextureSubImage2D_adr := GetProcAddress('glCopyTextureSubImage2D'); private z_CopyTextureSubImage2D_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; x: Int32; y: Int32; width: Int32; height: Int32)>(z_CopyTextureSubImage2D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CopyTextureSubImage2D(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; x: Int32; y: Int32; width: Int32; height: Int32) := z_CopyTextureSubImage2D_ovr_0(texture, level, xoffset, yoffset, x, y, width, height); // added in gl4.5 private z_CopyTextureSubImage3D_adr := GetProcAddress('glCopyTextureSubImage3D'); private z_CopyTextureSubImage3D_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; x: Int32; y: Int32; width: Int32; height: Int32)>(z_CopyTextureSubImage3D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CopyTextureSubImage3D(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; x: Int32; y: Int32; width: Int32; height: Int32) := z_CopyTextureSubImage3D_ovr_0(texture, level, xoffset, yoffset, zoffset, x, y, width, height); // added in gl4.5 private z_CreateBuffers_adr := GetProcAddress('glCreateBuffers'); private z_CreateBuffers_ovr_0 := GetProcOrNil&<procedure(n: Int32; var buffers: gl_buffer)>(z_CreateBuffers_adr); private z_CreateBuffers_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; buffers: IntPtr)>(z_CreateBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateBuffers(n: Int32; buffers: array of gl_buffer) := if (buffers<>nil) and (buffers.Length<>0) then z_CreateBuffers_ovr_0(n, buffers[0]) else z_CreateBuffers_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateBuffers(n: Int32; var buffers: gl_buffer) := z_CreateBuffers_ovr_0(n, buffers); private z_CreateBuffers_ovr_2 := GetProcOrNil&<procedure(n: Int32; buffers: IntPtr)>(z_CreateBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateBuffers(n: Int32; buffers: IntPtr) := z_CreateBuffers_ovr_2(n, buffers); // added in gl4.5 private z_CreateFramebuffers_adr := GetProcAddress('glCreateFramebuffers'); private z_CreateFramebuffers_ovr_0 := GetProcOrNil&<procedure(n: Int32; var framebuffers: gl_framebuffer)>(z_CreateFramebuffers_adr); private z_CreateFramebuffers_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; framebuffers: IntPtr)>(z_CreateFramebuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateFramebuffers(n: Int32; framebuffers: array of gl_framebuffer) := if (framebuffers<>nil) and (framebuffers.Length<>0) then z_CreateFramebuffers_ovr_0(n, framebuffers[0]) else z_CreateFramebuffers_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateFramebuffers(n: Int32; var framebuffers: gl_framebuffer) := z_CreateFramebuffers_ovr_0(n, framebuffers); private z_CreateFramebuffers_ovr_2 := GetProcOrNil&<procedure(n: Int32; framebuffers: IntPtr)>(z_CreateFramebuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateFramebuffers(n: Int32; framebuffers: IntPtr) := z_CreateFramebuffers_ovr_2(n, framebuffers); // added in gl2.0 private z_CreateProgram_adr := GetProcAddress('glCreateProgram'); private z_CreateProgram_ovr_0 := GetProcOrNil&<function: gl_program>(z_CreateProgram_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function CreateProgram: gl_program := z_CreateProgram_ovr_0; // added in gl4.5 private z_CreateProgramPipelines_adr := GetProcAddress('glCreateProgramPipelines'); private z_CreateProgramPipelines_ovr_0 := GetProcOrNil&<procedure(n: Int32; var pipelines: gl_program_pipeline)>(z_CreateProgramPipelines_adr); private z_CreateProgramPipelines_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; pipelines: IntPtr)>(z_CreateProgramPipelines_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateProgramPipelines(n: Int32; pipelines: array of gl_program_pipeline) := if (pipelines<>nil) and (pipelines.Length<>0) then z_CreateProgramPipelines_ovr_0(n, pipelines[0]) else z_CreateProgramPipelines_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateProgramPipelines(n: Int32; var pipelines: gl_program_pipeline) := z_CreateProgramPipelines_ovr_0(n, pipelines); private z_CreateProgramPipelines_ovr_2 := GetProcOrNil&<procedure(n: Int32; pipelines: IntPtr)>(z_CreateProgramPipelines_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateProgramPipelines(n: Int32; pipelines: IntPtr) := z_CreateProgramPipelines_ovr_2(n, pipelines); // added in gl4.5 private z_CreateQueries_adr := GetProcAddress('glCreateQueries'); private z_CreateQueries_ovr_0 := GetProcOrNil&<procedure(target: QueryTarget; n: Int32; var ids: gl_query)>(z_CreateQueries_adr); private z_CreateQueries_ovr_0_anh0001 := GetProcOrNil&<procedure(target: QueryTarget; n: Int32; ids: IntPtr)>(z_CreateQueries_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateQueries(target: QueryTarget; n: Int32; ids: array of gl_query) := if (ids<>nil) and (ids.Length<>0) then z_CreateQueries_ovr_0(target, n, ids[0]) else z_CreateQueries_ovr_0_anh0001(target, n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateQueries(target: QueryTarget; n: Int32; var ids: gl_query) := z_CreateQueries_ovr_0(target, n, ids); private z_CreateQueries_ovr_2 := GetProcOrNil&<procedure(target: QueryTarget; n: Int32; ids: IntPtr)>(z_CreateQueries_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateQueries(target: QueryTarget; n: Int32; ids: IntPtr) := z_CreateQueries_ovr_2(target, n, ids); // added in gl4.5 private z_CreateRenderbuffers_adr := GetProcAddress('glCreateRenderbuffers'); private z_CreateRenderbuffers_ovr_0 := GetProcOrNil&<procedure(n: Int32; var renderbuffers: gl_renderbuffer)>(z_CreateRenderbuffers_adr); private z_CreateRenderbuffers_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; renderbuffers: IntPtr)>(z_CreateRenderbuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateRenderbuffers(n: Int32; renderbuffers: array of gl_renderbuffer) := if (renderbuffers<>nil) and (renderbuffers.Length<>0) then z_CreateRenderbuffers_ovr_0(n, renderbuffers[0]) else z_CreateRenderbuffers_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateRenderbuffers(n: Int32; var renderbuffers: gl_renderbuffer) := z_CreateRenderbuffers_ovr_0(n, renderbuffers); private z_CreateRenderbuffers_ovr_2 := GetProcOrNil&<procedure(n: Int32; renderbuffers: IntPtr)>(z_CreateRenderbuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateRenderbuffers(n: Int32; renderbuffers: IntPtr) := z_CreateRenderbuffers_ovr_2(n, renderbuffers); // added in gl4.5 private z_CreateSamplers_adr := GetProcAddress('glCreateSamplers'); private z_CreateSamplers_ovr_0 := GetProcOrNil&<procedure(n: Int32; var samplers: gl_sampler)>(z_CreateSamplers_adr); private z_CreateSamplers_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; samplers: IntPtr)>(z_CreateSamplers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateSamplers(n: Int32; samplers: array of gl_sampler) := if (samplers<>nil) and (samplers.Length<>0) then z_CreateSamplers_ovr_0(n, samplers[0]) else z_CreateSamplers_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateSamplers(n: Int32; var samplers: gl_sampler) := z_CreateSamplers_ovr_0(n, samplers); private z_CreateSamplers_ovr_2 := GetProcOrNil&<procedure(n: Int32; samplers: IntPtr)>(z_CreateSamplers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateSamplers(n: Int32; samplers: IntPtr) := z_CreateSamplers_ovr_2(n, samplers); // added in gl2.0 private z_CreateShader_adr := GetProcAddress('glCreateShader'); private z_CreateShader_ovr_0 := GetProcOrNil&<function(&type: ShaderType): gl_shader>(z_CreateShader_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function CreateShader(&type: ShaderType): gl_shader := z_CreateShader_ovr_0(&type); // added in gl4.1 private z_CreateShaderProgramv_adr := GetProcAddress('glCreateShaderProgramv'); private z_CreateShaderProgramv_ovr_0 := GetProcOrNil&<function(&type: ShaderType; count: Int32; var strings: IntPtr): gl_program>(z_CreateShaderProgramv_adr); private z_CreateShaderProgramv_ovr_0_anh0001 := GetProcOrNil&<function(&type: ShaderType; count: Int32; strings: IntPtr): gl_program>(z_CreateShaderProgramv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function CreateShaderProgramv(&type: ShaderType; count: Int32; strings: array of string): gl_program; begin var par_3_str_ptr: array of IntPtr; try par_3_str_ptr := strings?.ConvertAll(arr_el1->Marshal.StringToHGlobalAnsi(arr_el1)); if (par_3_str_ptr<>nil) and (par_3_str_ptr.Length<>0) then Result := z_CreateShaderProgramv_ovr_0(&type, count, par_3_str_ptr[0]) else Result := z_CreateShaderProgramv_ovr_0_anh0001(&type, count, IntPtr.Zero); finally foreach var arr_el1 in par_3_str_ptr do Marshal.FreeHGlobal(arr_el1); end; end; private z_CreateShaderProgramv_ovr_1_anh0001 := GetProcOrNil&<function(&type: ShaderType; count: Int32; strings: IntPtr): gl_program>(z_CreateShaderProgramv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function CreateShaderProgramv(&type: ShaderType; count: Int32; strings: array of IntPtr): gl_program := if (strings<>nil) and (strings.Length<>0) then z_CreateShaderProgramv_ovr_0(&type, count, strings[0]) else z_CreateShaderProgramv_ovr_0_anh0001(&type, count, IntPtr.Zero); private z_CreateShaderProgramv_ovr_2 := GetProcOrNil&<function(&type: ShaderType; count: Int32; strings: IntPtr): gl_program>(z_CreateShaderProgramv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function CreateShaderProgramv(&type: ShaderType; count: Int32; strings: IntPtr): gl_program := z_CreateShaderProgramv_ovr_2(&type, count, strings); // added in gl4.5 private z_CreateTextures_adr := GetProcAddress('glCreateTextures'); private z_CreateTextures_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; n: Int32; var textures: gl_texture)>(z_CreateTextures_adr); private z_CreateTextures_ovr_0_anh0001 := GetProcOrNil&<procedure(target: TextureTarget; n: Int32; textures: IntPtr)>(z_CreateTextures_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateTextures(target: TextureTarget; n: Int32; textures: array of gl_texture) := if (textures<>nil) and (textures.Length<>0) then z_CreateTextures_ovr_0(target, n, textures[0]) else z_CreateTextures_ovr_0_anh0001(target, n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateTextures(target: TextureTarget; n: Int32; var textures: gl_texture) := z_CreateTextures_ovr_0(target, n, textures); private z_CreateTextures_ovr_2 := GetProcOrNil&<procedure(target: TextureTarget; n: Int32; textures: IntPtr)>(z_CreateTextures_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateTextures(target: TextureTarget; n: Int32; textures: IntPtr) := z_CreateTextures_ovr_2(target, n, textures); // added in gl4.5 private z_CreateTransformFeedbacks_adr := GetProcAddress('glCreateTransformFeedbacks'); private z_CreateTransformFeedbacks_ovr_0 := GetProcOrNil&<procedure(n: Int32; var ids: gl_transform_feedback)>(z_CreateTransformFeedbacks_adr); private z_CreateTransformFeedbacks_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; ids: IntPtr)>(z_CreateTransformFeedbacks_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateTransformFeedbacks(n: Int32; ids: array of gl_transform_feedback) := if (ids<>nil) and (ids.Length<>0) then z_CreateTransformFeedbacks_ovr_0(n, ids[0]) else z_CreateTransformFeedbacks_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateTransformFeedbacks(n: Int32; var ids: gl_transform_feedback) := z_CreateTransformFeedbacks_ovr_0(n, ids); private z_CreateTransformFeedbacks_ovr_2 := GetProcOrNil&<procedure(n: Int32; ids: IntPtr)>(z_CreateTransformFeedbacks_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateTransformFeedbacks(n: Int32; ids: IntPtr) := z_CreateTransformFeedbacks_ovr_2(n, ids); // added in gl4.5 private z_CreateVertexArrays_adr := GetProcAddress('glCreateVertexArrays'); private z_CreateVertexArrays_ovr_0 := GetProcOrNil&<procedure(n: Int32; var arrays: gl_vertex_array)>(z_CreateVertexArrays_adr); private z_CreateVertexArrays_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; arrays: IntPtr)>(z_CreateVertexArrays_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateVertexArrays(n: Int32; arrays: array of gl_vertex_array) := if (arrays<>nil) and (arrays.Length<>0) then z_CreateVertexArrays_ovr_0(n, arrays[0]) else z_CreateVertexArrays_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateVertexArrays(n: Int32; var arrays: gl_vertex_array) := z_CreateVertexArrays_ovr_0(n, arrays); private z_CreateVertexArrays_ovr_2 := GetProcOrNil&<procedure(n: Int32; arrays: IntPtr)>(z_CreateVertexArrays_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CreateVertexArrays(n: Int32; arrays: IntPtr) := z_CreateVertexArrays_ovr_2(n, arrays); // added in gl1.0 private z_CullFace_adr := GetProcAddress('glCullFace'); private z_CullFace_ovr_0 := GetProcOrNil&<procedure(mode: CullFaceMode)>(z_CullFace_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure CullFace(mode: CullFaceMode) := z_CullFace_ovr_0(mode); // added in gl4.3 private z_DebugMessageCallback_adr := GetProcAddress('glDebugMessageCallback'); private z_DebugMessageCallback_ovr_0 := GetProcOrNil&<procedure(callback: GL_DEBUG_PROC; userParam: IntPtr)>(z_DebugMessageCallback_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DebugMessageCallback(callback: GL_DEBUG_PROC; userParam: IntPtr) := z_DebugMessageCallback_ovr_0(callback, userParam); // added in gl4.3 private z_DebugMessageControl_adr := GetProcAddress('glDebugMessageControl'); private z_DebugMessageControl_ovr_0 := GetProcOrNil&<procedure(source: DebugSource; &type: DebugType; severity: DebugSeverity; count: Int32; var ids: UInt32; enabled: boolean)>(z_DebugMessageControl_adr); private z_DebugMessageControl_ovr_0_anh0000010 := GetProcOrNil&<procedure(source: DebugSource; &type: DebugType; severity: DebugSeverity; count: Int32; ids: IntPtr; enabled: boolean)>(z_DebugMessageControl_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DebugMessageControl(source: DebugSource; &type: DebugType; severity: DebugSeverity; count: Int32; ids: array of UInt32; enabled: boolean) := if (ids<>nil) and (ids.Length<>0) then z_DebugMessageControl_ovr_0(source, &type, severity, count, ids[0], enabled) else z_DebugMessageControl_ovr_0_anh0000010(source, &type, severity, count, IntPtr.Zero, enabled); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DebugMessageControl(source: DebugSource; &type: DebugType; severity: DebugSeverity; count: Int32; var ids: UInt32; enabled: boolean) := z_DebugMessageControl_ovr_0(source, &type, severity, count, ids, enabled); private z_DebugMessageControl_ovr_2 := GetProcOrNil&<procedure(source: DebugSource; &type: DebugType; severity: DebugSeverity; count: Int32; ids: IntPtr; enabled: boolean)>(z_DebugMessageControl_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DebugMessageControl(source: DebugSource; &type: DebugType; severity: DebugSeverity; count: Int32; ids: IntPtr; enabled: boolean) := z_DebugMessageControl_ovr_2(source, &type, severity, count, ids, enabled); // added in gl4.3 private z_DebugMessageInsert_adr := GetProcAddress('glDebugMessageInsert'); private z_DebugMessageInsert_ovr_0 := GetProcOrNil&<procedure(source: DebugSource; &type: DebugType; id: UInt32; severity: DebugSeverity; length: Int32; buf: IntPtr)>(z_DebugMessageInsert_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DebugMessageInsert(source: DebugSource; &type: DebugType; id: UInt32; severity: DebugSeverity; length: Int32; buf: string); begin var par_6_str_ptr: IntPtr; try par_6_str_ptr := Marshal.StringToHGlobalAnsi(buf); z_DebugMessageInsert_ovr_0(source, &type, id, severity, length, par_6_str_ptr); finally Marshal.FreeHGlobal(par_6_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DebugMessageInsert(source: DebugSource; &type: DebugType; id: UInt32; severity: DebugSeverity; length: Int32; buf: IntPtr) := z_DebugMessageInsert_ovr_0(source, &type, id, severity, length, buf); // added in gl1.5 private z_DeleteBuffers_adr := GetProcAddress('glDeleteBuffers'); private z_DeleteBuffers_ovr_0 := GetProcOrNil&<procedure(n: Int32; var buffers: gl_buffer)>(z_DeleteBuffers_adr); private z_DeleteBuffers_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; buffers: IntPtr)>(z_DeleteBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteBuffers(n: Int32; buffers: array of gl_buffer) := if (buffers<>nil) and (buffers.Length<>0) then z_DeleteBuffers_ovr_0(n, buffers[0]) else z_DeleteBuffers_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteBuffers(n: Int32; var buffers: gl_buffer) := z_DeleteBuffers_ovr_0(n, buffers); private z_DeleteBuffers_ovr_2 := GetProcOrNil&<procedure(n: Int32; buffers: IntPtr)>(z_DeleteBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteBuffers(n: Int32; buffers: IntPtr) := z_DeleteBuffers_ovr_2(n, buffers); // added in gl3.0 private z_DeleteFramebuffers_adr := GetProcAddress('glDeleteFramebuffers'); private z_DeleteFramebuffers_ovr_0 := GetProcOrNil&<procedure(n: Int32; var framebuffers: gl_framebuffer)>(z_DeleteFramebuffers_adr); private z_DeleteFramebuffers_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; framebuffers: IntPtr)>(z_DeleteFramebuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteFramebuffers(n: Int32; framebuffers: array of gl_framebuffer) := if (framebuffers<>nil) and (framebuffers.Length<>0) then z_DeleteFramebuffers_ovr_0(n, framebuffers[0]) else z_DeleteFramebuffers_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteFramebuffers(n: Int32; var framebuffers: gl_framebuffer) := z_DeleteFramebuffers_ovr_0(n, framebuffers); private z_DeleteFramebuffers_ovr_2 := GetProcOrNil&<procedure(n: Int32; framebuffers: IntPtr)>(z_DeleteFramebuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteFramebuffers(n: Int32; framebuffers: IntPtr) := z_DeleteFramebuffers_ovr_2(n, framebuffers); // added in gl2.0 private z_DeleteProgram_adr := GetProcAddress('glDeleteProgram'); private z_DeleteProgram_ovr_0 := GetProcOrNil&<procedure(&program: gl_program)>(z_DeleteProgram_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteProgram(&program: gl_program) := z_DeleteProgram_ovr_0(&program); // added in gl4.1 private z_DeleteProgramPipelines_adr := GetProcAddress('glDeleteProgramPipelines'); private z_DeleteProgramPipelines_ovr_0 := GetProcOrNil&<procedure(n: Int32; var pipelines: gl_program_pipeline)>(z_DeleteProgramPipelines_adr); private z_DeleteProgramPipelines_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; pipelines: IntPtr)>(z_DeleteProgramPipelines_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteProgramPipelines(n: Int32; pipelines: array of gl_program_pipeline) := if (pipelines<>nil) and (pipelines.Length<>0) then z_DeleteProgramPipelines_ovr_0(n, pipelines[0]) else z_DeleteProgramPipelines_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteProgramPipelines(n: Int32; var pipelines: gl_program_pipeline) := z_DeleteProgramPipelines_ovr_0(n, pipelines); private z_DeleteProgramPipelines_ovr_2 := GetProcOrNil&<procedure(n: Int32; pipelines: IntPtr)>(z_DeleteProgramPipelines_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteProgramPipelines(n: Int32; pipelines: IntPtr) := z_DeleteProgramPipelines_ovr_2(n, pipelines); // added in gl1.5 private z_DeleteQueries_adr := GetProcAddress('glDeleteQueries'); private z_DeleteQueries_ovr_0 := GetProcOrNil&<procedure(n: Int32; var ids: gl_query)>(z_DeleteQueries_adr); private z_DeleteQueries_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; ids: IntPtr)>(z_DeleteQueries_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteQueries(n: Int32; ids: array of gl_query) := if (ids<>nil) and (ids.Length<>0) then z_DeleteQueries_ovr_0(n, ids[0]) else z_DeleteQueries_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteQueries(n: Int32; var ids: gl_query) := z_DeleteQueries_ovr_0(n, ids); private z_DeleteQueries_ovr_2 := GetProcOrNil&<procedure(n: Int32; ids: IntPtr)>(z_DeleteQueries_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteQueries(n: Int32; ids: IntPtr) := z_DeleteQueries_ovr_2(n, ids); // added in gl3.0 private z_DeleteRenderbuffers_adr := GetProcAddress('glDeleteRenderbuffers'); private z_DeleteRenderbuffers_ovr_0 := GetProcOrNil&<procedure(n: Int32; var renderbuffers: gl_renderbuffer)>(z_DeleteRenderbuffers_adr); private z_DeleteRenderbuffers_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; renderbuffers: IntPtr)>(z_DeleteRenderbuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteRenderbuffers(n: Int32; renderbuffers: array of gl_renderbuffer) := if (renderbuffers<>nil) and (renderbuffers.Length<>0) then z_DeleteRenderbuffers_ovr_0(n, renderbuffers[0]) else z_DeleteRenderbuffers_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteRenderbuffers(n: Int32; var renderbuffers: gl_renderbuffer) := z_DeleteRenderbuffers_ovr_0(n, renderbuffers); private z_DeleteRenderbuffers_ovr_2 := GetProcOrNil&<procedure(n: Int32; renderbuffers: IntPtr)>(z_DeleteRenderbuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteRenderbuffers(n: Int32; renderbuffers: IntPtr) := z_DeleteRenderbuffers_ovr_2(n, renderbuffers); // added in gl3.3 private z_DeleteSamplers_adr := GetProcAddress('glDeleteSamplers'); private z_DeleteSamplers_ovr_0 := GetProcOrNil&<procedure(count: Int32; var samplers: gl_sampler)>(z_DeleteSamplers_adr); private z_DeleteSamplers_ovr_0_anh001 := GetProcOrNil&<procedure(count: Int32; samplers: IntPtr)>(z_DeleteSamplers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteSamplers(count: Int32; samplers: array of gl_sampler) := if (samplers<>nil) and (samplers.Length<>0) then z_DeleteSamplers_ovr_0(count, samplers[0]) else z_DeleteSamplers_ovr_0_anh001(count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteSamplers(count: Int32; var samplers: gl_sampler) := z_DeleteSamplers_ovr_0(count, samplers); private z_DeleteSamplers_ovr_2 := GetProcOrNil&<procedure(count: Int32; samplers: IntPtr)>(z_DeleteSamplers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteSamplers(count: Int32; samplers: IntPtr) := z_DeleteSamplers_ovr_2(count, samplers); // added in gl2.0 private z_DeleteShader_adr := GetProcAddress('glDeleteShader'); private z_DeleteShader_ovr_0 := GetProcOrNil&<procedure(shader: gl_shader)>(z_DeleteShader_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteShader(shader: gl_shader) := z_DeleteShader_ovr_0(shader); // added in gl3.2 private z_DeleteSync_adr := GetProcAddress('glDeleteSync'); private z_DeleteSync_ovr_0 := GetProcOrNil&<procedure(sync: gl_sync)>(z_DeleteSync_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteSync(sync: gl_sync) := z_DeleteSync_ovr_0(sync); // added in gl1.1 private z_DeleteTextures_adr := GetProcAddress('glDeleteTextures'); private z_DeleteTextures_ovr_0 := GetProcOrNil&<procedure(n: Int32; var textures: gl_texture)>(z_DeleteTextures_adr); private z_DeleteTextures_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; textures: IntPtr)>(z_DeleteTextures_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteTextures(n: Int32; textures: array of gl_texture) := if (textures<>nil) and (textures.Length<>0) then z_DeleteTextures_ovr_0(n, textures[0]) else z_DeleteTextures_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteTextures(n: Int32; var textures: gl_texture) := z_DeleteTextures_ovr_0(n, textures); private z_DeleteTextures_ovr_2 := GetProcOrNil&<procedure(n: Int32; textures: IntPtr)>(z_DeleteTextures_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteTextures(n: Int32; textures: IntPtr) := z_DeleteTextures_ovr_2(n, textures); // added in gl4.0 private z_DeleteTransformFeedbacks_adr := GetProcAddress('glDeleteTransformFeedbacks'); private z_DeleteTransformFeedbacks_ovr_0 := GetProcOrNil&<procedure(n: Int32; var ids: gl_transform_feedback)>(z_DeleteTransformFeedbacks_adr); private z_DeleteTransformFeedbacks_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; ids: IntPtr)>(z_DeleteTransformFeedbacks_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteTransformFeedbacks(n: Int32; ids: array of gl_transform_feedback) := if (ids<>nil) and (ids.Length<>0) then z_DeleteTransformFeedbacks_ovr_0(n, ids[0]) else z_DeleteTransformFeedbacks_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteTransformFeedbacks(n: Int32; var ids: gl_transform_feedback) := z_DeleteTransformFeedbacks_ovr_0(n, ids); private z_DeleteTransformFeedbacks_ovr_2 := GetProcOrNil&<procedure(n: Int32; ids: IntPtr)>(z_DeleteTransformFeedbacks_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteTransformFeedbacks(n: Int32; ids: IntPtr) := z_DeleteTransformFeedbacks_ovr_2(n, ids); // added in gl3.0 private z_DeleteVertexArrays_adr := GetProcAddress('glDeleteVertexArrays'); private z_DeleteVertexArrays_ovr_0 := GetProcOrNil&<procedure(n: Int32; var arrays: gl_vertex_array)>(z_DeleteVertexArrays_adr); private z_DeleteVertexArrays_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; arrays: IntPtr)>(z_DeleteVertexArrays_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteVertexArrays(n: Int32; arrays: array of gl_vertex_array) := if (arrays<>nil) and (arrays.Length<>0) then z_DeleteVertexArrays_ovr_0(n, arrays[0]) else z_DeleteVertexArrays_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteVertexArrays(n: Int32; var arrays: gl_vertex_array) := z_DeleteVertexArrays_ovr_0(n, arrays); private z_DeleteVertexArrays_ovr_2 := GetProcOrNil&<procedure(n: Int32; arrays: IntPtr)>(z_DeleteVertexArrays_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DeleteVertexArrays(n: Int32; arrays: IntPtr) := z_DeleteVertexArrays_ovr_2(n, arrays); // added in gl1.0 private z_DepthFunc_adr := GetProcAddress('glDepthFunc'); private z_DepthFunc_ovr_0 := GetProcOrNil&<procedure(func: DepthFunction)>(z_DepthFunc_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DepthFunc(func: DepthFunction) := z_DepthFunc_ovr_0(func); // added in gl1.0 private z_DepthMask_adr := GetProcAddress('glDepthMask'); private z_DepthMask_ovr_0 := GetProcOrNil&<procedure(flag: boolean)>(z_DepthMask_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DepthMask(flag: boolean) := z_DepthMask_ovr_0(flag); // added in gl1.0 private z_DepthRange_adr := GetProcAddress('glDepthRange'); private z_DepthRange_ovr_0 := GetProcOrNil&<procedure(n: real; f: real)>(z_DepthRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DepthRange(n: real; f: real) := z_DepthRange_ovr_0(n, f); // added in gl4.1 private z_DepthRangeArrayv_adr := GetProcAddress('glDepthRangeArrayv'); private z_DepthRangeArrayv_ovr_0 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var v: real)>(z_DepthRangeArrayv_adr); private z_DepthRangeArrayv_ovr_0_anh0001 := GetProcOrNil&<procedure(first: UInt32; count: Int32; v: IntPtr)>(z_DepthRangeArrayv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DepthRangeArrayv(first: UInt32; count: Int32; v: array of real) := if (v<>nil) and (v.Length<>0) then z_DepthRangeArrayv_ovr_0(first, count, v[0]) else z_DepthRangeArrayv_ovr_0_anh0001(first, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DepthRangeArrayv(first: UInt32; count: Int32; var v: real) := z_DepthRangeArrayv_ovr_0(first, count, v); private z_DepthRangeArrayv_ovr_2 := GetProcOrNil&<procedure(first: UInt32; count: Int32; v: IntPtr)>(z_DepthRangeArrayv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DepthRangeArrayv(first: UInt32; count: Int32; v: IntPtr) := z_DepthRangeArrayv_ovr_2(first, count, v); // added in gl4.1 private z_DepthRangef_adr := GetProcAddress('glDepthRangef'); private z_DepthRangef_ovr_0 := GetProcOrNil&<procedure(n: single; f: single)>(z_DepthRangef_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DepthRangef(n: single; f: single) := z_DepthRangef_ovr_0(n, f); // added in gl4.1 private z_DepthRangeIndexed_adr := GetProcAddress('glDepthRangeIndexed'); private z_DepthRangeIndexed_ovr_0 := GetProcOrNil&<procedure(index: UInt32; n: real; f: real)>(z_DepthRangeIndexed_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DepthRangeIndexed(index: UInt32; n: real; f: real) := z_DepthRangeIndexed_ovr_0(index, n, f); // added in gl2.0 private z_DetachShader_adr := GetProcAddress('glDetachShader'); private z_DetachShader_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; shader: gl_shader)>(z_DetachShader_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DetachShader(&program: gl_program; shader: gl_shader) := z_DetachShader_ovr_0(&program, shader); // added in gl1.0 private z_Disable_adr := GetProcAddress('glDisable'); private z_Disable_ovr_0 := GetProcOrNil&<procedure(cap: EnableCap)>(z_Disable_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Disable(cap: EnableCap) := z_Disable_ovr_0(cap); // added in gl3.0 private z_Disablei_adr := GetProcAddress('glDisablei'); private z_Disablei_ovr_0 := GetProcOrNil&<procedure(target: EnableCap; index: UInt32)>(z_Disablei_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Disablei(target: EnableCap; index: UInt32) := z_Disablei_ovr_0(target, index); // added in gl4.5 private z_DisableVertexArrayAttrib_adr := GetProcAddress('glDisableVertexArrayAttrib'); private z_DisableVertexArrayAttrib_ovr_0 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; index: UInt32)>(z_DisableVertexArrayAttrib_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DisableVertexArrayAttrib(vaobj: gl_vertex_array; index: UInt32) := z_DisableVertexArrayAttrib_ovr_0(vaobj, index); // added in gl2.0 private z_DisableVertexAttribArray_adr := GetProcAddress('glDisableVertexAttribArray'); private z_DisableVertexAttribArray_ovr_0 := GetProcOrNil&<procedure(index: UInt32)>(z_DisableVertexAttribArray_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DisableVertexAttribArray(index: UInt32) := z_DisableVertexAttribArray_ovr_0(index); // added in gl4.3 private z_DispatchCompute_adr := GetProcAddress('glDispatchCompute'); private z_DispatchCompute_ovr_0 := GetProcOrNil&<procedure(num_groups_x: UInt32; num_groups_y: UInt32; num_groups_z: UInt32)>(z_DispatchCompute_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DispatchCompute(num_groups_x: UInt32; num_groups_y: UInt32; num_groups_z: UInt32) := z_DispatchCompute_ovr_0(num_groups_x, num_groups_y, num_groups_z); // added in gl4.3 private z_DispatchComputeIndirect_adr := GetProcAddress('glDispatchComputeIndirect'); private z_DispatchComputeIndirect_ovr_0 := GetProcOrNil&<procedure(indirect: IntPtr)>(z_DispatchComputeIndirect_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DispatchComputeIndirect(indirect: IntPtr) := z_DispatchComputeIndirect_ovr_0(indirect); // added in gl1.1 private z_DrawArrays_adr := GetProcAddress('glDrawArrays'); private z_DrawArrays_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; first: Int32; count: Int32)>(z_DrawArrays_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawArrays(mode: PrimitiveType; first: Int32; count: Int32) := z_DrawArrays_ovr_0(mode, first, count); // added in gl4.0 private z_DrawArraysIndirect_adr := GetProcAddress('glDrawArraysIndirect'); private z_DrawArraysIndirect_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; indirect: IntPtr)>(z_DrawArraysIndirect_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawArraysIndirect(mode: PrimitiveType; indirect: IntPtr) := z_DrawArraysIndirect_ovr_0(mode, indirect); // added in gl3.1 private z_DrawArraysInstanced_adr := GetProcAddress('glDrawArraysInstanced'); private z_DrawArraysInstanced_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; first: Int32; count: Int32; instancecount: Int32)>(z_DrawArraysInstanced_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawArraysInstanced(mode: PrimitiveType; first: Int32; count: Int32; instancecount: Int32) := z_DrawArraysInstanced_ovr_0(mode, first, count, instancecount); // added in gl4.2 private z_DrawArraysInstancedBaseInstance_adr := GetProcAddress('glDrawArraysInstancedBaseInstance'); private z_DrawArraysInstancedBaseInstance_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; first: Int32; count: Int32; instancecount: Int32; baseinstance: UInt32)>(z_DrawArraysInstancedBaseInstance_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawArraysInstancedBaseInstance(mode: PrimitiveType; first: Int32; count: Int32; instancecount: Int32; baseinstance: UInt32) := z_DrawArraysInstancedBaseInstance_ovr_0(mode, first, count, instancecount, baseinstance); // added in gl1.0 private z_DrawBuffer_adr := GetProcAddress('glDrawBuffer'); private z_DrawBuffer_ovr_0 := GetProcOrNil&<procedure(buf: DrawBufferMode)>(z_DrawBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawBuffer(buf: DrawBufferMode) := z_DrawBuffer_ovr_0(buf); // added in gl2.0 private z_DrawBuffers_adr := GetProcAddress('glDrawBuffers'); private z_DrawBuffers_ovr_0 := GetProcOrNil&<procedure(n: Int32; var bufs: DrawBufferMode)>(z_DrawBuffers_adr); private z_DrawBuffers_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; bufs: IntPtr)>(z_DrawBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawBuffers(n: Int32; bufs: array of DrawBufferMode) := if (bufs<>nil) and (bufs.Length<>0) then z_DrawBuffers_ovr_0(n, bufs[0]) else z_DrawBuffers_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawBuffers(n: Int32; var bufs: DrawBufferMode) := z_DrawBuffers_ovr_0(n, bufs); private z_DrawBuffers_ovr_2 := GetProcOrNil&<procedure(n: Int32; bufs: IntPtr)>(z_DrawBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawBuffers(n: Int32; bufs: IntPtr) := z_DrawBuffers_ovr_2(n, bufs); // added in gl1.1 private z_DrawElements_adr := GetProcAddress('glDrawElements'); private z_DrawElements_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; count: Int32; &type: DrawElementsType; indices: IntPtr)>(z_DrawElements_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawElements(mode: PrimitiveType; count: Int32; &type: DrawElementsType; indices: IntPtr) := z_DrawElements_ovr_0(mode, count, &type, indices); // added in gl3.2 private z_DrawElementsBaseVertex_adr := GetProcAddress('glDrawElementsBaseVertex'); private z_DrawElementsBaseVertex_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; count: Int32; &type: DrawElementsType; indices: IntPtr; basevertex: Int32)>(z_DrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawElementsBaseVertex(mode: PrimitiveType; count: Int32; &type: DrawElementsType; indices: IntPtr; basevertex: Int32) := z_DrawElementsBaseVertex_ovr_0(mode, count, &type, indices, basevertex); // added in gl4.0 private z_DrawElementsIndirect_adr := GetProcAddress('glDrawElementsIndirect'); private z_DrawElementsIndirect_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; &type: DrawElementsType; indirect: IntPtr)>(z_DrawElementsIndirect_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawElementsIndirect(mode: PrimitiveType; &type: DrawElementsType; indirect: IntPtr) := z_DrawElementsIndirect_ovr_0(mode, &type, indirect); // added in gl3.1 private z_DrawElementsInstanced_adr := GetProcAddress('glDrawElementsInstanced'); private z_DrawElementsInstanced_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; count: Int32; &type: DrawElementsType; indices: IntPtr; instancecount: Int32)>(z_DrawElementsInstanced_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawElementsInstanced(mode: PrimitiveType; count: Int32; &type: DrawElementsType; indices: IntPtr; instancecount: Int32) := z_DrawElementsInstanced_ovr_0(mode, count, &type, indices, instancecount); // added in gl4.2 private z_DrawElementsInstancedBaseInstance_adr := GetProcAddress('glDrawElementsInstancedBaseInstance'); private z_DrawElementsInstancedBaseInstance_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; count: Int32; &type: PrimitiveType; indices: IntPtr; instancecount: Int32; baseinstance: UInt32)>(z_DrawElementsInstancedBaseInstance_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawElementsInstancedBaseInstance(mode: PrimitiveType; count: Int32; &type: PrimitiveType; indices: IntPtr; instancecount: Int32; baseinstance: UInt32) := z_DrawElementsInstancedBaseInstance_ovr_0(mode, count, &type, indices, instancecount, baseinstance); // added in gl3.2 private z_DrawElementsInstancedBaseVertex_adr := GetProcAddress('glDrawElementsInstancedBaseVertex'); private z_DrawElementsInstancedBaseVertex_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; count: Int32; &type: DrawElementsType; indices: IntPtr; instancecount: Int32; basevertex: Int32)>(z_DrawElementsInstancedBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawElementsInstancedBaseVertex(mode: PrimitiveType; count: Int32; &type: DrawElementsType; indices: IntPtr; instancecount: Int32; basevertex: Int32) := z_DrawElementsInstancedBaseVertex_ovr_0(mode, count, &type, indices, instancecount, basevertex); // added in gl4.2 private z_DrawElementsInstancedBaseVertexBaseInstance_adr := GetProcAddress('glDrawElementsInstancedBaseVertexBaseInstance'); private z_DrawElementsInstancedBaseVertexBaseInstance_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; count: Int32; &type: DrawElementsType; indices: IntPtr; instancecount: Int32; basevertex: Int32; baseinstance: UInt32)>(z_DrawElementsInstancedBaseVertexBaseInstance_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawElementsInstancedBaseVertexBaseInstance(mode: PrimitiveType; count: Int32; &type: DrawElementsType; indices: IntPtr; instancecount: Int32; basevertex: Int32; baseinstance: UInt32) := z_DrawElementsInstancedBaseVertexBaseInstance_ovr_0(mode, count, &type, indices, instancecount, basevertex, baseinstance); // added in gl1.2 private z_DrawRangeElements_adr := GetProcAddress('glDrawRangeElements'); private z_DrawRangeElements_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; start: UInt32; &end: UInt32; count: Int32; &type: DrawElementsType; indices: IntPtr)>(z_DrawRangeElements_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawRangeElements(mode: PrimitiveType; start: UInt32; &end: UInt32; count: Int32; &type: DrawElementsType; indices: IntPtr) := z_DrawRangeElements_ovr_0(mode, start, &end, count, &type, indices); // added in gl3.2 private z_DrawRangeElementsBaseVertex_adr := GetProcAddress('glDrawRangeElementsBaseVertex'); private z_DrawRangeElementsBaseVertex_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; start: UInt32; &end: UInt32; count: Int32; &type: DrawElementsType; indices: IntPtr; basevertex: Int32)>(z_DrawRangeElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawRangeElementsBaseVertex(mode: PrimitiveType; start: UInt32; &end: UInt32; count: Int32; &type: DrawElementsType; indices: IntPtr; basevertex: Int32) := z_DrawRangeElementsBaseVertex_ovr_0(mode, start, &end, count, &type, indices, basevertex); // added in gl4.0 private z_DrawTransformFeedback_adr := GetProcAddress('glDrawTransformFeedback'); private z_DrawTransformFeedback_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; id: gl_transform_feedback)>(z_DrawTransformFeedback_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawTransformFeedback(mode: PrimitiveType; id: gl_transform_feedback) := z_DrawTransformFeedback_ovr_0(mode, id); // added in gl4.2 private z_DrawTransformFeedbackInstanced_adr := GetProcAddress('glDrawTransformFeedbackInstanced'); private z_DrawTransformFeedbackInstanced_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; id: gl_transform_feedback; instancecount: Int32)>(z_DrawTransformFeedbackInstanced_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawTransformFeedbackInstanced(mode: PrimitiveType; id: gl_transform_feedback; instancecount: Int32) := z_DrawTransformFeedbackInstanced_ovr_0(mode, id, instancecount); // added in gl4.0 private z_DrawTransformFeedbackStream_adr := GetProcAddress('glDrawTransformFeedbackStream'); private z_DrawTransformFeedbackStream_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; id: gl_transform_feedback; stream: UInt32)>(z_DrawTransformFeedbackStream_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawTransformFeedbackStream(mode: PrimitiveType; id: gl_transform_feedback; stream: UInt32) := z_DrawTransformFeedbackStream_ovr_0(mode, id, stream); // added in gl4.2 private z_DrawTransformFeedbackStreamInstanced_adr := GetProcAddress('glDrawTransformFeedbackStreamInstanced'); private z_DrawTransformFeedbackStreamInstanced_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; id: gl_transform_feedback; stream: UInt32; instancecount: Int32)>(z_DrawTransformFeedbackStreamInstanced_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure DrawTransformFeedbackStreamInstanced(mode: PrimitiveType; id: gl_transform_feedback; stream: UInt32; instancecount: Int32) := z_DrawTransformFeedbackStreamInstanced_ovr_0(mode, id, stream, instancecount); // added in gl1.0 private z_Enable_adr := GetProcAddress('glEnable'); private z_Enable_ovr_0 := GetProcOrNil&<procedure(cap: EnableCap)>(z_Enable_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Enable(cap: EnableCap) := z_Enable_ovr_0(cap); // added in gl3.0 private z_Enablei_adr := GetProcAddress('glEnablei'); private z_Enablei_ovr_0 := GetProcOrNil&<procedure(target: EnableCap; index: UInt32)>(z_Enablei_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Enablei(target: EnableCap; index: UInt32) := z_Enablei_ovr_0(target, index); // added in gl4.5 private z_EnableVertexArrayAttrib_adr := GetProcAddress('glEnableVertexArrayAttrib'); private z_EnableVertexArrayAttrib_ovr_0 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; index: UInt32)>(z_EnableVertexArrayAttrib_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure EnableVertexArrayAttrib(vaobj: gl_vertex_array; index: UInt32) := z_EnableVertexArrayAttrib_ovr_0(vaobj, index); // added in gl2.0 private z_EnableVertexAttribArray_adr := GetProcAddress('glEnableVertexAttribArray'); private z_EnableVertexAttribArray_ovr_0 := GetProcOrNil&<procedure(index: UInt32)>(z_EnableVertexAttribArray_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure EnableVertexAttribArray(index: UInt32) := z_EnableVertexAttribArray_ovr_0(index); // added in gl3.0 private z_EndConditionalRender_adr := GetProcAddress('glEndConditionalRender'); private z_EndConditionalRender_ovr_0 := GetProcOrNil&<procedure>(z_EndConditionalRender_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure EndConditionalRender := z_EndConditionalRender_ovr_0; // added in gl1.5 private z_EndQuery_adr := GetProcAddress('glEndQuery'); private z_EndQuery_ovr_0 := GetProcOrNil&<procedure(target: QueryTarget)>(z_EndQuery_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure EndQuery(target: QueryTarget) := z_EndQuery_ovr_0(target); // added in gl4.0 private z_EndQueryIndexed_adr := GetProcAddress('glEndQueryIndexed'); private z_EndQueryIndexed_ovr_0 := GetProcOrNil&<procedure(target: QueryTarget; index: UInt32)>(z_EndQueryIndexed_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure EndQueryIndexed(target: QueryTarget; index: UInt32) := z_EndQueryIndexed_ovr_0(target, index); // added in gl3.0 private z_EndTransformFeedback_adr := GetProcAddress('glEndTransformFeedback'); private z_EndTransformFeedback_ovr_0 := GetProcOrNil&<procedure>(z_EndTransformFeedback_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure EndTransformFeedback := z_EndTransformFeedback_ovr_0; // added in gl3.2 private z_FenceSync_adr := GetProcAddress('glFenceSync'); private z_FenceSync_ovr_0 := GetProcOrNil&<function(condition: SyncCondition; flags: DummyFlags): gl_sync>(z_FenceSync_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function FenceSync(condition: SyncCondition; flags: DummyFlags): gl_sync := z_FenceSync_ovr_0(condition, flags); // added in gl1.0 private z_Finish_adr := GetProcAddress('glFinish'); private z_Finish_ovr_0 := GetProcOrNil&<procedure>(z_Finish_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Finish := z_Finish_ovr_0; // added in gl1.0 private z_Flush_adr := GetProcAddress('glFlush'); private z_Flush_ovr_0 := GetProcOrNil&<procedure>(z_Flush_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Flush := z_Flush_ovr_0; // added in gl3.0 private z_FlushMappedBufferRange_adr := GetProcAddress('glFlushMappedBufferRange'); private z_FlushMappedBufferRange_ovr_0 := GetProcOrNil&<procedure(target: BufferTarget; offset: IntPtr; length: IntPtr)>(z_FlushMappedBufferRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure FlushMappedBufferRange(target: BufferTarget; offset: IntPtr; length: IntPtr) := z_FlushMappedBufferRange_ovr_0(target, offset, length); // added in gl4.5 private z_FlushMappedNamedBufferRange_adr := GetProcAddress('glFlushMappedNamedBufferRange'); private z_FlushMappedNamedBufferRange_ovr_0 := GetProcOrNil&<procedure(buffer: gl_buffer; offset: IntPtr; length: IntPtr)>(z_FlushMappedNamedBufferRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure FlushMappedNamedBufferRange(buffer: gl_buffer; offset: IntPtr; length: IntPtr) := z_FlushMappedNamedBufferRange_ovr_0(buffer, offset, length); // added in gl4.3 private z_FramebufferParameteri_adr := GetProcAddress('glFramebufferParameteri'); private z_FramebufferParameteri_ovr_0 := GetProcOrNil&<procedure(target: FramebufferTarget; pname: FramebufferParameterName; param: Int32)>(z_FramebufferParameteri_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure FramebufferParameteri(target: FramebufferTarget; pname: FramebufferParameterName; param: Int32) := z_FramebufferParameteri_ovr_0(target, pname, param); // added in gl3.0 private z_FramebufferRenderbuffer_adr := GetProcAddress('glFramebufferRenderbuffer'); private z_FramebufferRenderbuffer_ovr_0 := GetProcOrNil&<procedure(target: FramebufferTarget; attachment: FramebufferAttachment; _renderbuffertarget: RenderbufferTarget; renderbuffer: gl_renderbuffer)>(z_FramebufferRenderbuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure FramebufferRenderbuffer(target: FramebufferTarget; attachment: FramebufferAttachment; _renderbuffertarget: RenderbufferTarget; renderbuffer: gl_renderbuffer) := z_FramebufferRenderbuffer_ovr_0(target, attachment, _renderbuffertarget, renderbuffer); // added in gl3.2 private z_FramebufferTexture_adr := GetProcAddress('glFramebufferTexture'); private z_FramebufferTexture_ovr_0 := GetProcOrNil&<procedure(target: FramebufferTarget; attachment: FramebufferAttachment; texture: gl_texture; level: Int32)>(z_FramebufferTexture_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure FramebufferTexture(target: FramebufferTarget; attachment: FramebufferAttachment; texture: gl_texture; level: Int32) := z_FramebufferTexture_ovr_0(target, attachment, texture, level); // added in gl3.0 private z_FramebufferTexture1D_adr := GetProcAddress('glFramebufferTexture1D'); private z_FramebufferTexture1D_ovr_0 := GetProcOrNil&<procedure(target: FramebufferTarget; attachment: FramebufferAttachment; textarget: TextureTarget; texture: gl_texture; level: Int32)>(z_FramebufferTexture1D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure FramebufferTexture1D(target: FramebufferTarget; attachment: FramebufferAttachment; textarget: TextureTarget; texture: gl_texture; level: Int32) := z_FramebufferTexture1D_ovr_0(target, attachment, textarget, texture, level); // added in gl3.0 private z_FramebufferTexture2D_adr := GetProcAddress('glFramebufferTexture2D'); private z_FramebufferTexture2D_ovr_0 := GetProcOrNil&<procedure(target: FramebufferTarget; attachment: FramebufferAttachment; textarget: TextureTarget; texture: gl_texture; level: Int32)>(z_FramebufferTexture2D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure FramebufferTexture2D(target: FramebufferTarget; attachment: FramebufferAttachment; textarget: TextureTarget; texture: gl_texture; level: Int32) := z_FramebufferTexture2D_ovr_0(target, attachment, textarget, texture, level); // added in gl3.0 private z_FramebufferTexture3D_adr := GetProcAddress('glFramebufferTexture3D'); private z_FramebufferTexture3D_ovr_0 := GetProcOrNil&<procedure(target: FramebufferTarget; attachment: FramebufferAttachment; textarget: TextureTarget; texture: gl_texture; level: Int32; zoffset: Int32)>(z_FramebufferTexture3D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure FramebufferTexture3D(target: FramebufferTarget; attachment: FramebufferAttachment; textarget: TextureTarget; texture: gl_texture; level: Int32; zoffset: Int32) := z_FramebufferTexture3D_ovr_0(target, attachment, textarget, texture, level, zoffset); // added in gl3.0 private z_FramebufferTextureLayer_adr := GetProcAddress('glFramebufferTextureLayer'); private z_FramebufferTextureLayer_ovr_0 := GetProcOrNil&<procedure(target: FramebufferTarget; attachment: FramebufferAttachment; texture: gl_texture; level: Int32; layer: Int32)>(z_FramebufferTextureLayer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure FramebufferTextureLayer(target: FramebufferTarget; attachment: FramebufferAttachment; texture: gl_texture; level: Int32; layer: Int32) := z_FramebufferTextureLayer_ovr_0(target, attachment, texture, level, layer); // added in gl1.0 private z_FrontFace_adr := GetProcAddress('glFrontFace'); private z_FrontFace_ovr_0 := GetProcOrNil&<procedure(mode: FrontFaceDirection)>(z_FrontFace_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure FrontFace(mode: FrontFaceDirection) := z_FrontFace_ovr_0(mode); // added in gl1.5 private z_GenBuffers_adr := GetProcAddress('glGenBuffers'); private z_GenBuffers_ovr_0 := GetProcOrNil&<procedure(n: Int32; var buffers: gl_buffer)>(z_GenBuffers_adr); private z_GenBuffers_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; buffers: IntPtr)>(z_GenBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenBuffers(n: Int32; buffers: array of gl_buffer) := if (buffers<>nil) and (buffers.Length<>0) then z_GenBuffers_ovr_0(n, buffers[0]) else z_GenBuffers_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenBuffers(n: Int32; var buffers: gl_buffer) := z_GenBuffers_ovr_0(n, buffers); private z_GenBuffers_ovr_2 := GetProcOrNil&<procedure(n: Int32; buffers: IntPtr)>(z_GenBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenBuffers(n: Int32; buffers: IntPtr) := z_GenBuffers_ovr_2(n, buffers); // added in gl3.0 private z_GenerateMipmap_adr := GetProcAddress('glGenerateMipmap'); private z_GenerateMipmap_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget)>(z_GenerateMipmap_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenerateMipmap(target: TextureTarget) := z_GenerateMipmap_ovr_0(target); // added in gl4.5 private z_GenerateTextureMipmap_adr := GetProcAddress('glGenerateTextureMipmap'); private z_GenerateTextureMipmap_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture)>(z_GenerateTextureMipmap_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenerateTextureMipmap(texture: gl_texture) := z_GenerateTextureMipmap_ovr_0(texture); // added in gl3.0 private z_GenFramebuffers_adr := GetProcAddress('glGenFramebuffers'); private z_GenFramebuffers_ovr_0 := GetProcOrNil&<procedure(n: Int32; var framebuffers: gl_framebuffer)>(z_GenFramebuffers_adr); private z_GenFramebuffers_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; framebuffers: IntPtr)>(z_GenFramebuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenFramebuffers(n: Int32; framebuffers: array of gl_framebuffer) := if (framebuffers<>nil) and (framebuffers.Length<>0) then z_GenFramebuffers_ovr_0(n, framebuffers[0]) else z_GenFramebuffers_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenFramebuffers(n: Int32; var framebuffers: gl_framebuffer) := z_GenFramebuffers_ovr_0(n, framebuffers); private z_GenFramebuffers_ovr_2 := GetProcOrNil&<procedure(n: Int32; framebuffers: IntPtr)>(z_GenFramebuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenFramebuffers(n: Int32; framebuffers: IntPtr) := z_GenFramebuffers_ovr_2(n, framebuffers); // added in gl4.1 private z_GenProgramPipelines_adr := GetProcAddress('glGenProgramPipelines'); private z_GenProgramPipelines_ovr_0 := GetProcOrNil&<procedure(n: Int32; var pipelines: gl_program_pipeline)>(z_GenProgramPipelines_adr); private z_GenProgramPipelines_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; pipelines: IntPtr)>(z_GenProgramPipelines_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenProgramPipelines(n: Int32; pipelines: array of gl_program_pipeline) := if (pipelines<>nil) and (pipelines.Length<>0) then z_GenProgramPipelines_ovr_0(n, pipelines[0]) else z_GenProgramPipelines_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenProgramPipelines(n: Int32; var pipelines: gl_program_pipeline) := z_GenProgramPipelines_ovr_0(n, pipelines); private z_GenProgramPipelines_ovr_2 := GetProcOrNil&<procedure(n: Int32; pipelines: IntPtr)>(z_GenProgramPipelines_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenProgramPipelines(n: Int32; pipelines: IntPtr) := z_GenProgramPipelines_ovr_2(n, pipelines); // added in gl1.5 private z_GenQueries_adr := GetProcAddress('glGenQueries'); private z_GenQueries_ovr_0 := GetProcOrNil&<procedure(n: Int32; var ids: gl_query)>(z_GenQueries_adr); private z_GenQueries_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; ids: IntPtr)>(z_GenQueries_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenQueries(n: Int32; ids: array of gl_query) := if (ids<>nil) and (ids.Length<>0) then z_GenQueries_ovr_0(n, ids[0]) else z_GenQueries_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenQueries(n: Int32; var ids: gl_query) := z_GenQueries_ovr_0(n, ids); private z_GenQueries_ovr_2 := GetProcOrNil&<procedure(n: Int32; ids: IntPtr)>(z_GenQueries_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenQueries(n: Int32; ids: IntPtr) := z_GenQueries_ovr_2(n, ids); // added in gl3.0 private z_GenRenderbuffers_adr := GetProcAddress('glGenRenderbuffers'); private z_GenRenderbuffers_ovr_0 := GetProcOrNil&<procedure(n: Int32; var renderbuffers: gl_renderbuffer)>(z_GenRenderbuffers_adr); private z_GenRenderbuffers_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; renderbuffers: IntPtr)>(z_GenRenderbuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenRenderbuffers(n: Int32; renderbuffers: array of gl_renderbuffer) := if (renderbuffers<>nil) and (renderbuffers.Length<>0) then z_GenRenderbuffers_ovr_0(n, renderbuffers[0]) else z_GenRenderbuffers_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenRenderbuffers(n: Int32; var renderbuffers: gl_renderbuffer) := z_GenRenderbuffers_ovr_0(n, renderbuffers); private z_GenRenderbuffers_ovr_2 := GetProcOrNil&<procedure(n: Int32; renderbuffers: IntPtr)>(z_GenRenderbuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenRenderbuffers(n: Int32; renderbuffers: IntPtr) := z_GenRenderbuffers_ovr_2(n, renderbuffers); // added in gl3.3 private z_GenSamplers_adr := GetProcAddress('glGenSamplers'); private z_GenSamplers_ovr_0 := GetProcOrNil&<procedure(count: Int32; var samplers: gl_sampler)>(z_GenSamplers_adr); private z_GenSamplers_ovr_0_anh001 := GetProcOrNil&<procedure(count: Int32; samplers: IntPtr)>(z_GenSamplers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenSamplers(count: Int32; samplers: array of gl_sampler) := if (samplers<>nil) and (samplers.Length<>0) then z_GenSamplers_ovr_0(count, samplers[0]) else z_GenSamplers_ovr_0_anh001(count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenSamplers(count: Int32; var samplers: gl_sampler) := z_GenSamplers_ovr_0(count, samplers); private z_GenSamplers_ovr_2 := GetProcOrNil&<procedure(count: Int32; samplers: IntPtr)>(z_GenSamplers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenSamplers(count: Int32; samplers: IntPtr) := z_GenSamplers_ovr_2(count, samplers); // added in gl1.1 private z_GenTextures_adr := GetProcAddress('glGenTextures'); private z_GenTextures_ovr_0 := GetProcOrNil&<procedure(n: Int32; var textures: gl_texture)>(z_GenTextures_adr); private z_GenTextures_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; textures: IntPtr)>(z_GenTextures_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenTextures(n: Int32; textures: array of gl_texture) := if (textures<>nil) and (textures.Length<>0) then z_GenTextures_ovr_0(n, textures[0]) else z_GenTextures_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenTextures(n: Int32; var textures: gl_texture) := z_GenTextures_ovr_0(n, textures); private z_GenTextures_ovr_2 := GetProcOrNil&<procedure(n: Int32; textures: IntPtr)>(z_GenTextures_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenTextures(n: Int32; textures: IntPtr) := z_GenTextures_ovr_2(n, textures); // added in gl4.0 private z_GenTransformFeedbacks_adr := GetProcAddress('glGenTransformFeedbacks'); private z_GenTransformFeedbacks_ovr_0 := GetProcOrNil&<procedure(n: Int32; var ids: gl_transform_feedback)>(z_GenTransformFeedbacks_adr); private z_GenTransformFeedbacks_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; ids: IntPtr)>(z_GenTransformFeedbacks_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenTransformFeedbacks(n: Int32; ids: array of gl_transform_feedback) := if (ids<>nil) and (ids.Length<>0) then z_GenTransformFeedbacks_ovr_0(n, ids[0]) else z_GenTransformFeedbacks_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenTransformFeedbacks(n: Int32; var ids: gl_transform_feedback) := z_GenTransformFeedbacks_ovr_0(n, ids); private z_GenTransformFeedbacks_ovr_2 := GetProcOrNil&<procedure(n: Int32; ids: IntPtr)>(z_GenTransformFeedbacks_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenTransformFeedbacks(n: Int32; ids: IntPtr) := z_GenTransformFeedbacks_ovr_2(n, ids); // added in gl3.0 private z_GenVertexArrays_adr := GetProcAddress('glGenVertexArrays'); private z_GenVertexArrays_ovr_0 := GetProcOrNil&<procedure(n: Int32; var arrays: gl_vertex_array)>(z_GenVertexArrays_adr); private z_GenVertexArrays_ovr_0_anh001 := GetProcOrNil&<procedure(n: Int32; arrays: IntPtr)>(z_GenVertexArrays_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenVertexArrays(n: Int32; arrays: array of gl_vertex_array) := if (arrays<>nil) and (arrays.Length<>0) then z_GenVertexArrays_ovr_0(n, arrays[0]) else z_GenVertexArrays_ovr_0_anh001(n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenVertexArrays(n: Int32; var arrays: gl_vertex_array) := z_GenVertexArrays_ovr_0(n, arrays); private z_GenVertexArrays_ovr_2 := GetProcOrNil&<procedure(n: Int32; arrays: IntPtr)>(z_GenVertexArrays_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GenVertexArrays(n: Int32; arrays: IntPtr) := z_GenVertexArrays_ovr_2(n, arrays); // added in gl4.2 private z_GetActiveAtomicCounterBufferiv_adr := GetProcAddress('glGetActiveAtomicCounterBufferiv'); private z_GetActiveAtomicCounterBufferiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; bufferIndex: UInt32; pname: AtomicCounterBufferPName; var ¶ms: Int32)>(z_GetActiveAtomicCounterBufferiv_adr); private z_GetActiveAtomicCounterBufferiv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; bufferIndex: UInt32; pname: AtomicCounterBufferPName; ¶ms: IntPtr)>(z_GetActiveAtomicCounterBufferiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveAtomicCounterBufferiv(&program: gl_program; bufferIndex: UInt32; pname: AtomicCounterBufferPName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetActiveAtomicCounterBufferiv_ovr_0(&program, bufferIndex, pname, ¶ms[0]) else z_GetActiveAtomicCounterBufferiv_ovr_0_anh00001(&program, bufferIndex, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveAtomicCounterBufferiv(&program: gl_program; bufferIndex: UInt32; pname: AtomicCounterBufferPName; var ¶ms: Int32) := z_GetActiveAtomicCounterBufferiv_ovr_0(&program, bufferIndex, pname, ¶ms); private z_GetActiveAtomicCounterBufferiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; bufferIndex: UInt32; pname: AtomicCounterBufferPName; ¶ms: IntPtr)>(z_GetActiveAtomicCounterBufferiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveAtomicCounterBufferiv(&program: gl_program; bufferIndex: UInt32; pname: AtomicCounterBufferPName; ¶ms: IntPtr) := z_GetActiveAtomicCounterBufferiv_ovr_2(&program, bufferIndex, pname, ¶ms); // added in gl2.0 private z_GetActiveAttrib_adr := GetProcAddress('glGetActiveAttrib'); private z_GetActiveAttrib_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; var size: Int32; var &type: AttributeType; name: IntPtr)>(z_GetActiveAttrib_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveAttrib(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; var size: Int32; var &type: AttributeType; name: IntPtr) := z_GetActiveAttrib_ovr_0(&program, index, bufSize, length, size, &type, name); private z_GetActiveAttrib_ovr_1 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; var size: Int32; &type: IntPtr; name: IntPtr)>(z_GetActiveAttrib_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveAttrib(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; var size: Int32; &type: IntPtr; name: IntPtr) := z_GetActiveAttrib_ovr_1(&program, index, bufSize, length, size, &type, name); private z_GetActiveAttrib_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; size: IntPtr; var &type: AttributeType; name: IntPtr)>(z_GetActiveAttrib_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveAttrib(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; size: IntPtr; var &type: AttributeType; name: IntPtr) := z_GetActiveAttrib_ovr_2(&program, index, bufSize, length, size, &type, name); private z_GetActiveAttrib_ovr_3 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; size: IntPtr; &type: IntPtr; name: IntPtr)>(z_GetActiveAttrib_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveAttrib(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; size: IntPtr; &type: IntPtr; name: IntPtr) := z_GetActiveAttrib_ovr_3(&program, index, bufSize, length, size, &type, name); private z_GetActiveAttrib_ovr_4 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; var size: Int32; var &type: AttributeType; name: IntPtr)>(z_GetActiveAttrib_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveAttrib(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; var size: Int32; var &type: AttributeType; name: IntPtr) := z_GetActiveAttrib_ovr_4(&program, index, bufSize, length, size, &type, name); private z_GetActiveAttrib_ovr_5 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; var size: Int32; &type: IntPtr; name: IntPtr)>(z_GetActiveAttrib_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveAttrib(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; var size: Int32; &type: IntPtr; name: IntPtr) := z_GetActiveAttrib_ovr_5(&program, index, bufSize, length, size, &type, name); private z_GetActiveAttrib_ovr_6 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; size: IntPtr; var &type: AttributeType; name: IntPtr)>(z_GetActiveAttrib_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveAttrib(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; size: IntPtr; var &type: AttributeType; name: IntPtr) := z_GetActiveAttrib_ovr_6(&program, index, bufSize, length, size, &type, name); private z_GetActiveAttrib_ovr_7 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; size: IntPtr; &type: IntPtr; name: IntPtr)>(z_GetActiveAttrib_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveAttrib(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; size: IntPtr; &type: IntPtr; name: IntPtr) := z_GetActiveAttrib_ovr_7(&program, index, bufSize, length, size, &type, name); // added in gl4.0 private z_GetActiveSubroutineName_adr := GetProcAddress('glGetActiveSubroutineName'); private z_GetActiveSubroutineName_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; _shadertype: ShaderType; index: UInt32; bufSize: Int32; var length: Int32; name: IntPtr)>(z_GetActiveSubroutineName_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveSubroutineName(&program: gl_program; _shadertype: ShaderType; index: UInt32; bufSize: Int32; var length: Int32; name: IntPtr) := z_GetActiveSubroutineName_ovr_0(&program, _shadertype, index, bufSize, length, name); private z_GetActiveSubroutineName_ovr_1 := GetProcOrNil&<procedure(&program: gl_program; _shadertype: ShaderType; index: UInt32; bufSize: Int32; length: IntPtr; name: IntPtr)>(z_GetActiveSubroutineName_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveSubroutineName(&program: gl_program; _shadertype: ShaderType; index: UInt32; bufSize: Int32; length: IntPtr; name: IntPtr) := z_GetActiveSubroutineName_ovr_1(&program, _shadertype, index, bufSize, length, name); // added in gl4.0 private z_GetActiveSubroutineUniformiv_adr := GetProcAddress('glGetActiveSubroutineUniformiv'); private z_GetActiveSubroutineUniformiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; _shadertype: ShaderType; index: UInt32; pname: SubroutineParameterName; var values: Int32)>(z_GetActiveSubroutineUniformiv_adr); private z_GetActiveSubroutineUniformiv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; _shadertype: ShaderType; index: UInt32; pname: SubroutineParameterName; values: IntPtr)>(z_GetActiveSubroutineUniformiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveSubroutineUniformiv(&program: gl_program; _shadertype: ShaderType; index: UInt32; pname: SubroutineParameterName; values: array of Int32) := if (values<>nil) and (values.Length<>0) then z_GetActiveSubroutineUniformiv_ovr_0(&program, _shadertype, index, pname, values[0]) else z_GetActiveSubroutineUniformiv_ovr_0_anh000001(&program, _shadertype, index, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveSubroutineUniformiv(&program: gl_program; _shadertype: ShaderType; index: UInt32; pname: SubroutineParameterName; var values: Int32) := z_GetActiveSubroutineUniformiv_ovr_0(&program, _shadertype, index, pname, values); private z_GetActiveSubroutineUniformiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; _shadertype: ShaderType; index: UInt32; pname: SubroutineParameterName; values: IntPtr)>(z_GetActiveSubroutineUniformiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveSubroutineUniformiv(&program: gl_program; _shadertype: ShaderType; index: UInt32; pname: SubroutineParameterName; values: IntPtr) := z_GetActiveSubroutineUniformiv_ovr_2(&program, _shadertype, index, pname, values); // added in gl4.0 private z_GetActiveSubroutineUniformName_adr := GetProcAddress('glGetActiveSubroutineUniformName'); private z_GetActiveSubroutineUniformName_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; _shadertype: ShaderType; index: UInt32; bufSize: Int32; var length: Int32; name: IntPtr)>(z_GetActiveSubroutineUniformName_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveSubroutineUniformName(&program: gl_program; _shadertype: ShaderType; index: UInt32; bufSize: Int32; var length: Int32; name: IntPtr) := z_GetActiveSubroutineUniformName_ovr_0(&program, _shadertype, index, bufSize, length, name); private z_GetActiveSubroutineUniformName_ovr_1 := GetProcOrNil&<procedure(&program: gl_program; _shadertype: ShaderType; index: UInt32; bufSize: Int32; length: IntPtr; name: IntPtr)>(z_GetActiveSubroutineUniformName_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveSubroutineUniformName(&program: gl_program; _shadertype: ShaderType; index: UInt32; bufSize: Int32; length: IntPtr; name: IntPtr) := z_GetActiveSubroutineUniformName_ovr_1(&program, _shadertype, index, bufSize, length, name); // added in gl2.0 private z_GetActiveUniform_adr := GetProcAddress('glGetActiveUniform'); private z_GetActiveUniform_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; var size: Int32; var &type: UniformType; name: IntPtr)>(z_GetActiveUniform_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniform(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; var size: Int32; var &type: UniformType; name: IntPtr) := z_GetActiveUniform_ovr_0(&program, index, bufSize, length, size, &type, name); private z_GetActiveUniform_ovr_1 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; var size: Int32; &type: IntPtr; name: IntPtr)>(z_GetActiveUniform_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniform(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; var size: Int32; &type: IntPtr; name: IntPtr) := z_GetActiveUniform_ovr_1(&program, index, bufSize, length, size, &type, name); private z_GetActiveUniform_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; size: IntPtr; var &type: UniformType; name: IntPtr)>(z_GetActiveUniform_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniform(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; size: IntPtr; var &type: UniformType; name: IntPtr) := z_GetActiveUniform_ovr_2(&program, index, bufSize, length, size, &type, name); private z_GetActiveUniform_ovr_3 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; size: IntPtr; &type: IntPtr; name: IntPtr)>(z_GetActiveUniform_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniform(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; size: IntPtr; &type: IntPtr; name: IntPtr) := z_GetActiveUniform_ovr_3(&program, index, bufSize, length, size, &type, name); private z_GetActiveUniform_ovr_4 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; var size: Int32; var &type: UniformType; name: IntPtr)>(z_GetActiveUniform_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniform(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; var size: Int32; var &type: UniformType; name: IntPtr) := z_GetActiveUniform_ovr_4(&program, index, bufSize, length, size, &type, name); private z_GetActiveUniform_ovr_5 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; var size: Int32; &type: IntPtr; name: IntPtr)>(z_GetActiveUniform_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniform(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; var size: Int32; &type: IntPtr; name: IntPtr) := z_GetActiveUniform_ovr_5(&program, index, bufSize, length, size, &type, name); private z_GetActiveUniform_ovr_6 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; size: IntPtr; var &type: UniformType; name: IntPtr)>(z_GetActiveUniform_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniform(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; size: IntPtr; var &type: UniformType; name: IntPtr) := z_GetActiveUniform_ovr_6(&program, index, bufSize, length, size, &type, name); private z_GetActiveUniform_ovr_7 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; size: IntPtr; &type: IntPtr; name: IntPtr)>(z_GetActiveUniform_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniform(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; size: IntPtr; &type: IntPtr; name: IntPtr) := z_GetActiveUniform_ovr_7(&program, index, bufSize, length, size, &type, name); // added in gl3.1 private z_GetActiveUniformBlockiv_adr := GetProcAddress('glGetActiveUniformBlockiv'); private z_GetActiveUniformBlockiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; uniformBlockIndex: UInt32; pname: UniformBlockPName; var ¶ms: Int32)>(z_GetActiveUniformBlockiv_adr); private z_GetActiveUniformBlockiv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; uniformBlockIndex: UInt32; pname: UniformBlockPName; ¶ms: IntPtr)>(z_GetActiveUniformBlockiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformBlockiv(&program: gl_program; uniformBlockIndex: UInt32; pname: UniformBlockPName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetActiveUniformBlockiv_ovr_0(&program, uniformBlockIndex, pname, ¶ms[0]) else z_GetActiveUniformBlockiv_ovr_0_anh00001(&program, uniformBlockIndex, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformBlockiv(&program: gl_program; uniformBlockIndex: UInt32; pname: UniformBlockPName; var ¶ms: Int32) := z_GetActiveUniformBlockiv_ovr_0(&program, uniformBlockIndex, pname, ¶ms); private z_GetActiveUniformBlockiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; uniformBlockIndex: UInt32; pname: UniformBlockPName; ¶ms: IntPtr)>(z_GetActiveUniformBlockiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformBlockiv(&program: gl_program; uniformBlockIndex: UInt32; pname: UniformBlockPName; ¶ms: IntPtr) := z_GetActiveUniformBlockiv_ovr_2(&program, uniformBlockIndex, pname, ¶ms); // added in gl3.1 private z_GetActiveUniformBlockName_adr := GetProcAddress('glGetActiveUniformBlockName'); private z_GetActiveUniformBlockName_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; uniformBlockIndex: UInt32; bufSize: Int32; var length: Int32; uniformBlockName: IntPtr)>(z_GetActiveUniformBlockName_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformBlockName(&program: gl_program; uniformBlockIndex: UInt32; bufSize: Int32; var length: Int32; uniformBlockName: IntPtr) := z_GetActiveUniformBlockName_ovr_0(&program, uniformBlockIndex, bufSize, length, uniformBlockName); private z_GetActiveUniformBlockName_ovr_1 := GetProcOrNil&<procedure(&program: gl_program; uniformBlockIndex: UInt32; bufSize: Int32; length: IntPtr; uniformBlockName: IntPtr)>(z_GetActiveUniformBlockName_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformBlockName(&program: gl_program; uniformBlockIndex: UInt32; bufSize: Int32; length: IntPtr; uniformBlockName: IntPtr) := z_GetActiveUniformBlockName_ovr_1(&program, uniformBlockIndex, bufSize, length, uniformBlockName); // added in gl3.1 private z_GetActiveUniformName_adr := GetProcAddress('glGetActiveUniformName'); private z_GetActiveUniformName_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; uniformIndex: UInt32; bufSize: Int32; var length: Int32; uniformName: IntPtr)>(z_GetActiveUniformName_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformName(&program: gl_program; uniformIndex: UInt32; bufSize: Int32; var length: Int32; uniformName: IntPtr) := z_GetActiveUniformName_ovr_0(&program, uniformIndex, bufSize, length, uniformName); private z_GetActiveUniformName_ovr_1 := GetProcOrNil&<procedure(&program: gl_program; uniformIndex: UInt32; bufSize: Int32; length: IntPtr; uniformName: IntPtr)>(z_GetActiveUniformName_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformName(&program: gl_program; uniformIndex: UInt32; bufSize: Int32; length: IntPtr; uniformName: IntPtr) := z_GetActiveUniformName_ovr_1(&program, uniformIndex, bufSize, length, uniformName); // added in gl3.1 private z_GetActiveUniformsiv_adr := GetProcAddress('glGetActiveUniformsiv'); private z_GetActiveUniformsiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; var uniformIndices: UInt32; pname: UniformPName; var ¶ms: Int32)>(z_GetActiveUniformsiv_adr); private z_GetActiveUniformsiv_ovr_0_anh000100 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformIndices: IntPtr; pname: UniformPName; var ¶ms: Int32)>(z_GetActiveUniformsiv_adr); private z_GetActiveUniformsiv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; var uniformIndices: UInt32; pname: UniformPName; ¶ms: IntPtr)>(z_GetActiveUniformsiv_adr); private z_GetActiveUniformsiv_ovr_0_anh000101 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformIndices: IntPtr; pname: UniformPName; ¶ms: IntPtr)>(z_GetActiveUniformsiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformsiv(&program: gl_program; uniformCount: Int32; uniformIndices: array of UInt32; pname: UniformPName; ¶ms: array of Int32) := if (uniformIndices<>nil) and (uniformIndices.Length<>0) then if (¶ms<>nil) and (¶ms.Length<>0) then z_GetActiveUniformsiv_ovr_0(&program, uniformCount, uniformIndices[0], pname, ¶ms[0]) else z_GetActiveUniformsiv_ovr_0_anh000001(&program, uniformCount, uniformIndices[0], pname, IntPtr.Zero) else if (¶ms<>nil) and (¶ms.Length<>0) then z_GetActiveUniformsiv_ovr_0_anh000100(&program, uniformCount, IntPtr.Zero, pname, ¶ms[0]) else z_GetActiveUniformsiv_ovr_0_anh000101(&program, uniformCount, IntPtr.Zero, pname, IntPtr.Zero); private z_GetActiveUniformsiv_ovr_1_anh000100 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformIndices: IntPtr; pname: UniformPName; var ¶ms: Int32)>(z_GetActiveUniformsiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformsiv(&program: gl_program; uniformCount: Int32; uniformIndices: array of UInt32; pname: UniformPName; var ¶ms: Int32) := if (uniformIndices<>nil) and (uniformIndices.Length<>0) then z_GetActiveUniformsiv_ovr_0(&program, uniformCount, uniformIndices[0], pname, ¶ms) else z_GetActiveUniformsiv_ovr_0_anh000100(&program, uniformCount, IntPtr.Zero, pname, ¶ms); private z_GetActiveUniformsiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; var uniformIndices: UInt32; pname: UniformPName; ¶ms: IntPtr)>(z_GetActiveUniformsiv_adr); private z_GetActiveUniformsiv_ovr_2_anh000100 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformIndices: IntPtr; pname: UniformPName; ¶ms: IntPtr)>(z_GetActiveUniformsiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformsiv(&program: gl_program; uniformCount: Int32; uniformIndices: array of UInt32; pname: UniformPName; ¶ms: IntPtr) := if (uniformIndices<>nil) and (uniformIndices.Length<>0) then z_GetActiveUniformsiv_ovr_2(&program, uniformCount, uniformIndices[0], pname, ¶ms) else z_GetActiveUniformsiv_ovr_2_anh000100(&program, uniformCount, IntPtr.Zero, pname, ¶ms); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformsiv(&program: gl_program; uniformCount: Int32; var uniformIndices: UInt32; pname: UniformPName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetActiveUniformsiv_ovr_0(&program, uniformCount, uniformIndices, pname, ¶ms[0]) else z_GetActiveUniformsiv_ovr_0_anh000001(&program, uniformCount, uniformIndices, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformsiv(&program: gl_program; uniformCount: Int32; var uniformIndices: UInt32; pname: UniformPName; var ¶ms: Int32) := z_GetActiveUniformsiv_ovr_0(&program, uniformCount, uniformIndices, pname, ¶ms); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformsiv(&program: gl_program; uniformCount: Int32; var uniformIndices: UInt32; pname: UniformPName; ¶ms: IntPtr) := z_GetActiveUniformsiv_ovr_2(&program, uniformCount, uniformIndices, pname, ¶ms); private z_GetActiveUniformsiv_ovr_6 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformIndices: IntPtr; pname: UniformPName; var ¶ms: Int32)>(z_GetActiveUniformsiv_adr); private z_GetActiveUniformsiv_ovr_6_anh000001 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformIndices: IntPtr; pname: UniformPName; ¶ms: IntPtr)>(z_GetActiveUniformsiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformsiv(&program: gl_program; uniformCount: Int32; uniformIndices: IntPtr; pname: UniformPName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetActiveUniformsiv_ovr_6(&program, uniformCount, uniformIndices, pname, ¶ms[0]) else z_GetActiveUniformsiv_ovr_6_anh000001(&program, uniformCount, uniformIndices, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformsiv(&program: gl_program; uniformCount: Int32; uniformIndices: IntPtr; pname: UniformPName; var ¶ms: Int32) := z_GetActiveUniformsiv_ovr_6(&program, uniformCount, uniformIndices, pname, ¶ms); private z_GetActiveUniformsiv_ovr_8 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformIndices: IntPtr; pname: UniformPName; ¶ms: IntPtr)>(z_GetActiveUniformsiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetActiveUniformsiv(&program: gl_program; uniformCount: Int32; uniformIndices: IntPtr; pname: UniformPName; ¶ms: IntPtr) := z_GetActiveUniformsiv_ovr_8(&program, uniformCount, uniformIndices, pname, ¶ms); // added in gl2.0 private z_GetAttachedShaders_adr := GetProcAddress('glGetAttachedShaders'); private z_GetAttachedShaders_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; maxCount: Int32; var count: Int32; var shaders: gl_shader)>(z_GetAttachedShaders_adr); private z_GetAttachedShaders_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; maxCount: Int32; var count: Int32; shaders: IntPtr)>(z_GetAttachedShaders_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetAttachedShaders(&program: gl_program; maxCount: Int32; var count: Int32; shaders: array of gl_shader) := if (shaders<>nil) and (shaders.Length<>0) then z_GetAttachedShaders_ovr_0(&program, maxCount, count, shaders[0]) else z_GetAttachedShaders_ovr_0_anh00001(&program, maxCount, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetAttachedShaders(&program: gl_program; maxCount: Int32; var count: Int32; var shaders: gl_shader) := z_GetAttachedShaders_ovr_0(&program, maxCount, count, shaders); private z_GetAttachedShaders_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; maxCount: Int32; var count: Int32; shaders: IntPtr)>(z_GetAttachedShaders_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetAttachedShaders(&program: gl_program; maxCount: Int32; var count: Int32; shaders: IntPtr) := z_GetAttachedShaders_ovr_2(&program, maxCount, count, shaders); private z_GetAttachedShaders_ovr_3 := GetProcOrNil&<procedure(&program: gl_program; maxCount: Int32; count: IntPtr; var shaders: gl_shader)>(z_GetAttachedShaders_adr); private z_GetAttachedShaders_ovr_3_anh00001 := GetProcOrNil&<procedure(&program: gl_program; maxCount: Int32; count: IntPtr; shaders: IntPtr)>(z_GetAttachedShaders_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetAttachedShaders(&program: gl_program; maxCount: Int32; count: IntPtr; shaders: array of gl_shader) := if (shaders<>nil) and (shaders.Length<>0) then z_GetAttachedShaders_ovr_3(&program, maxCount, count, shaders[0]) else z_GetAttachedShaders_ovr_3_anh00001(&program, maxCount, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetAttachedShaders(&program: gl_program; maxCount: Int32; count: IntPtr; var shaders: gl_shader) := z_GetAttachedShaders_ovr_3(&program, maxCount, count, shaders); private z_GetAttachedShaders_ovr_5 := GetProcOrNil&<procedure(&program: gl_program; maxCount: Int32; count: IntPtr; shaders: IntPtr)>(z_GetAttachedShaders_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetAttachedShaders(&program: gl_program; maxCount: Int32; count: IntPtr; shaders: IntPtr) := z_GetAttachedShaders_ovr_5(&program, maxCount, count, shaders); // added in gl2.0 private z_GetAttribLocation_adr := GetProcAddress('glGetAttribLocation'); private z_GetAttribLocation_ovr_0 := GetProcOrNil&<function(&program: gl_program; name: IntPtr): Int32>(z_GetAttribLocation_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetAttribLocation(&program: gl_program; name: string): Int32; begin var par_2_str_ptr: IntPtr; try par_2_str_ptr := Marshal.StringToHGlobalAnsi(name); Result := z_GetAttribLocation_ovr_0(&program, par_2_str_ptr); finally Marshal.FreeHGlobal(par_2_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetAttribLocation(&program: gl_program; name: IntPtr): Int32 := z_GetAttribLocation_ovr_0(&program, name); // added in gl3.0 private z_GetBooleani_v_adr := GetProcAddress('glGetBooleani_v'); private z_GetBooleani_v_ovr_0 := GetProcOrNil&<procedure(target: BufferTarget; index: UInt32; var data: boolean)>(z_GetBooleani_v_adr); private z_GetBooleani_v_ovr_0_anh0001 := GetProcOrNil&<procedure(target: BufferTarget; index: UInt32; data: IntPtr)>(z_GetBooleani_v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBooleani_v(target: BufferTarget; index: UInt32; data: array of boolean) := if (data<>nil) and (data.Length<>0) then z_GetBooleani_v_ovr_0(target, index, data[0]) else z_GetBooleani_v_ovr_0_anh0001(target, index, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBooleani_v(target: BufferTarget; index: UInt32; var data: boolean) := z_GetBooleani_v_ovr_0(target, index, data); private z_GetBooleani_v_ovr_2 := GetProcOrNil&<procedure(target: BufferTarget; index: UInt32; data: IntPtr)>(z_GetBooleani_v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBooleani_v(target: BufferTarget; index: UInt32; data: IntPtr) := z_GetBooleani_v_ovr_2(target, index, data); // added in gl1.0 private z_GetBooleanv_adr := GetProcAddress('glGetBooleanv'); private z_GetBooleanv_ovr_0 := GetProcOrNil&<procedure(pname: GetPName; var data: boolean)>(z_GetBooleanv_adr); private z_GetBooleanv_ovr_0_anh001 := GetProcOrNil&<procedure(pname: GetPName; data: IntPtr)>(z_GetBooleanv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBooleanv(pname: GetPName; data: array of boolean) := if (data<>nil) and (data.Length<>0) then z_GetBooleanv_ovr_0(pname, data[0]) else z_GetBooleanv_ovr_0_anh001(pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBooleanv(pname: GetPName; var data: boolean) := z_GetBooleanv_ovr_0(pname, data); private z_GetBooleanv_ovr_2 := GetProcOrNil&<procedure(pname: GetPName; data: IntPtr)>(z_GetBooleanv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBooleanv(pname: GetPName; data: IntPtr) := z_GetBooleanv_ovr_2(pname, data); // added in gl3.2 private z_GetBufferParameteri64v_adr := GetProcAddress('glGetBufferParameteri64v'); private z_GetBufferParameteri64v_ovr_0 := GetProcOrNil&<procedure(target: BufferTarget; pname: BufferPNameARB; var ¶ms: Int64)>(z_GetBufferParameteri64v_adr); private z_GetBufferParameteri64v_ovr_0_anh0001 := GetProcOrNil&<procedure(target: BufferTarget; pname: BufferPNameARB; ¶ms: IntPtr)>(z_GetBufferParameteri64v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBufferParameteri64v(target: BufferTarget; pname: BufferPNameARB; ¶ms: array of Int64) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetBufferParameteri64v_ovr_0(target, pname, ¶ms[0]) else z_GetBufferParameteri64v_ovr_0_anh0001(target, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBufferParameteri64v(target: BufferTarget; pname: BufferPNameARB; var ¶ms: Int64) := z_GetBufferParameteri64v_ovr_0(target, pname, ¶ms); private z_GetBufferParameteri64v_ovr_2 := GetProcOrNil&<procedure(target: BufferTarget; pname: BufferPNameARB; ¶ms: IntPtr)>(z_GetBufferParameteri64v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBufferParameteri64v(target: BufferTarget; pname: BufferPNameARB; ¶ms: IntPtr) := z_GetBufferParameteri64v_ovr_2(target, pname, ¶ms); // added in gl1.5 private z_GetBufferParameteriv_adr := GetProcAddress('glGetBufferParameteriv'); private z_GetBufferParameteriv_ovr_0 := GetProcOrNil&<procedure(target: BufferTarget; pname: BufferPNameARB; var ¶ms: Int32)>(z_GetBufferParameteriv_adr); private z_GetBufferParameteriv_ovr_0_anh0001 := GetProcOrNil&<procedure(target: BufferTarget; pname: BufferPNameARB; ¶ms: IntPtr)>(z_GetBufferParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBufferParameteriv(target: BufferTarget; pname: BufferPNameARB; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetBufferParameteriv_ovr_0(target, pname, ¶ms[0]) else z_GetBufferParameteriv_ovr_0_anh0001(target, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBufferParameteriv(target: BufferTarget; pname: BufferPNameARB; var ¶ms: Int32) := z_GetBufferParameteriv_ovr_0(target, pname, ¶ms); private z_GetBufferParameteriv_ovr_2 := GetProcOrNil&<procedure(target: BufferTarget; pname: BufferPNameARB; ¶ms: IntPtr)>(z_GetBufferParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBufferParameteriv(target: BufferTarget; pname: BufferPNameARB; ¶ms: IntPtr) := z_GetBufferParameteriv_ovr_2(target, pname, ¶ms); // added in gl1.5 private z_GetBufferPointerv_adr := GetProcAddress('glGetBufferPointerv'); private z_GetBufferPointerv_ovr_0 := GetProcOrNil&<procedure(target: BufferTarget; pname: BufferPointerNameARB; var ¶ms: IntPtr)>(z_GetBufferPointerv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBufferPointerv(target: BufferTarget; pname: BufferPointerNameARB; var ¶ms: IntPtr) := z_GetBufferPointerv_ovr_0(target, pname, ¶ms); private z_GetBufferPointerv_ovr_1 := GetProcOrNil&<procedure(target: BufferTarget; pname: BufferPointerNameARB; ¶ms: pointer)>(z_GetBufferPointerv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBufferPointerv(target: BufferTarget; pname: BufferPointerNameARB; ¶ms: pointer) := z_GetBufferPointerv_ovr_1(target, pname, ¶ms); // added in gl1.5 private z_GetBufferSubData_adr := GetProcAddress('glGetBufferSubData'); private z_GetBufferSubData_ovr_0 := GetProcOrNil&<procedure(target: BufferTarget; offset: IntPtr; size: IntPtr; data: IntPtr)>(z_GetBufferSubData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetBufferSubData(target: BufferTarget; offset: IntPtr; size: IntPtr; data: IntPtr) := z_GetBufferSubData_ovr_0(target, offset, size, data); // added in gl1.3 private z_GetCompressedTexImage_adr := GetProcAddress('glGetCompressedTexImage'); private z_GetCompressedTexImage_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; img: IntPtr)>(z_GetCompressedTexImage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetCompressedTexImage(target: TextureTarget; level: Int32; img: IntPtr) := z_GetCompressedTexImage_ovr_0(target, level, img); // added in gl4.5 private z_GetCompressedTextureImage_adr := GetProcAddress('glGetCompressedTextureImage'); private z_GetCompressedTextureImage_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; bufSize: Int32; pixels: IntPtr)>(z_GetCompressedTextureImage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetCompressedTextureImage(texture: gl_texture; level: Int32; bufSize: Int32; pixels: IntPtr) := z_GetCompressedTextureImage_ovr_0(texture, level, bufSize, pixels); // added in gl4.5 private z_GetCompressedTextureSubImage_adr := GetProcAddress('glGetCompressedTextureSubImage'); private z_GetCompressedTextureSubImage_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32; bufSize: Int32; pixels: IntPtr)>(z_GetCompressedTextureSubImage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetCompressedTextureSubImage(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32; bufSize: Int32; pixels: IntPtr) := z_GetCompressedTextureSubImage_ovr_0(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels); // added in gl4.3 private z_GetDebugMessageLog_adr := GetProcAddress('glGetDebugMessageLog'); private z_GetDebugMessageLog_ovr_0 := GetProcOrNil&<function(count: UInt32; bufSize: Int32; var sources: DebugSource; var types: DebugType; var ids: UInt32; var severities: DebugSeverity; var lengths: Int32; messageLog: IntPtr): UInt32>(z_GetDebugMessageLog_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetDebugMessageLog(count: UInt32; bufSize: Int32; var sources: DebugSource; var types: DebugType; var ids: UInt32; var severities: DebugSeverity; var lengths: Int32; messageLog: IntPtr): UInt32 := z_GetDebugMessageLog_ovr_0(count, bufSize, sources, types, ids, severities, lengths, messageLog); private z_GetDebugMessageLog_ovr_1 := GetProcOrNil&<function(count: UInt32; bufSize: Int32; sources: IntPtr; types: IntPtr; ids: IntPtr; severities: IntPtr; lengths: IntPtr; messageLog: IntPtr): UInt32>(z_GetDebugMessageLog_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetDebugMessageLog(count: UInt32; bufSize: Int32; sources: IntPtr; types: IntPtr; ids: IntPtr; severities: IntPtr; lengths: IntPtr; messageLog: IntPtr): UInt32 := z_GetDebugMessageLog_ovr_1(count, bufSize, sources, types, ids, severities, lengths, messageLog); // added in gl4.1 private z_GetDoublei_v_adr := GetProcAddress('glGetDoublei_v'); private z_GetDoublei_v_ovr_0 := GetProcOrNil&<procedure(target: GetPName; index: UInt32; var data: real)>(z_GetDoublei_v_adr); private z_GetDoublei_v_ovr_0_anh0001 := GetProcOrNil&<procedure(target: GetPName; index: UInt32; data: IntPtr)>(z_GetDoublei_v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetDoublei_v(target: GetPName; index: UInt32; data: array of real) := if (data<>nil) and (data.Length<>0) then z_GetDoublei_v_ovr_0(target, index, data[0]) else z_GetDoublei_v_ovr_0_anh0001(target, index, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetDoublei_v(target: GetPName; index: UInt32; var data: real) := z_GetDoublei_v_ovr_0(target, index, data); private z_GetDoublei_v_ovr_2 := GetProcOrNil&<procedure(target: GetPName; index: UInt32; data: IntPtr)>(z_GetDoublei_v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetDoublei_v(target: GetPName; index: UInt32; data: IntPtr) := z_GetDoublei_v_ovr_2(target, index, data); // added in gl1.0 private z_GetDoublev_adr := GetProcAddress('glGetDoublev'); private z_GetDoublev_ovr_0 := GetProcOrNil&<procedure(pname: GetPName; var data: real)>(z_GetDoublev_adr); private z_GetDoublev_ovr_0_anh001 := GetProcOrNil&<procedure(pname: GetPName; data: IntPtr)>(z_GetDoublev_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetDoublev(pname: GetPName; data: array of real) := if (data<>nil) and (data.Length<>0) then z_GetDoublev_ovr_0(pname, data[0]) else z_GetDoublev_ovr_0_anh001(pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetDoublev(pname: GetPName; var data: real) := z_GetDoublev_ovr_0(pname, data); private z_GetDoublev_ovr_2 := GetProcOrNil&<procedure(pname: GetPName; data: IntPtr)>(z_GetDoublev_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetDoublev(pname: GetPName; data: IntPtr) := z_GetDoublev_ovr_2(pname, data); // added in gl1.0 private z_GetError_adr := GetProcAddress('glGetError'); private z_GetError_ovr_0 := GetProcOrNil&<function: ErrorCode>(z_GetError_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetError: ErrorCode := z_GetError_ovr_0; // added in gl4.1 private z_GetFloati_v_adr := GetProcAddress('glGetFloati_v'); private z_GetFloati_v_ovr_0 := GetProcOrNil&<procedure(target: GetPName; index: UInt32; var data: single)>(z_GetFloati_v_adr); private z_GetFloati_v_ovr_0_anh0001 := GetProcOrNil&<procedure(target: GetPName; index: UInt32; data: IntPtr)>(z_GetFloati_v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetFloati_v(target: GetPName; index: UInt32; data: array of single) := if (data<>nil) and (data.Length<>0) then z_GetFloati_v_ovr_0(target, index, data[0]) else z_GetFloati_v_ovr_0_anh0001(target, index, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetFloati_v(target: GetPName; index: UInt32; var data: single) := z_GetFloati_v_ovr_0(target, index, data); private z_GetFloati_v_ovr_2 := GetProcOrNil&<procedure(target: GetPName; index: UInt32; data: IntPtr)>(z_GetFloati_v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetFloati_v(target: GetPName; index: UInt32; data: IntPtr) := z_GetFloati_v_ovr_2(target, index, data); // added in gl1.0 private z_GetFloatv_adr := GetProcAddress('glGetFloatv'); private z_GetFloatv_ovr_0 := GetProcOrNil&<procedure(pname: GetPName; var data: single)>(z_GetFloatv_adr); private z_GetFloatv_ovr_0_anh001 := GetProcOrNil&<procedure(pname: GetPName; data: IntPtr)>(z_GetFloatv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetFloatv(pname: GetPName; data: array of single) := if (data<>nil) and (data.Length<>0) then z_GetFloatv_ovr_0(pname, data[0]) else z_GetFloatv_ovr_0_anh001(pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetFloatv(pname: GetPName; var data: single) := z_GetFloatv_ovr_0(pname, data); private z_GetFloatv_ovr_2 := GetProcOrNil&<procedure(pname: GetPName; data: IntPtr)>(z_GetFloatv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetFloatv(pname: GetPName; data: IntPtr) := z_GetFloatv_ovr_2(pname, data); // added in gl3.3 private z_GetFragDataIndex_adr := GetProcAddress('glGetFragDataIndex'); private z_GetFragDataIndex_ovr_0 := GetProcOrNil&<function(&program: gl_program; name: IntPtr): Int32>(z_GetFragDataIndex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetFragDataIndex(&program: gl_program; name: string): Int32; begin var par_2_str_ptr: IntPtr; try par_2_str_ptr := Marshal.StringToHGlobalAnsi(name); Result := z_GetFragDataIndex_ovr_0(&program, par_2_str_ptr); finally Marshal.FreeHGlobal(par_2_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetFragDataIndex(&program: gl_program; name: IntPtr): Int32 := z_GetFragDataIndex_ovr_0(&program, name); // added in gl3.0 private z_GetFragDataLocation_adr := GetProcAddress('glGetFragDataLocation'); private z_GetFragDataLocation_ovr_0 := GetProcOrNil&<function(&program: gl_program; name: IntPtr): Int32>(z_GetFragDataLocation_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetFragDataLocation(&program: gl_program; name: string): Int32; begin var par_2_str_ptr: IntPtr; try par_2_str_ptr := Marshal.StringToHGlobalAnsi(name); Result := z_GetFragDataLocation_ovr_0(&program, par_2_str_ptr); finally Marshal.FreeHGlobal(par_2_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetFragDataLocation(&program: gl_program; name: IntPtr): Int32 := z_GetFragDataLocation_ovr_0(&program, name); // added in gl3.0 private z_GetFramebufferAttachmentParameteriv_adr := GetProcAddress('glGetFramebufferAttachmentParameteriv'); private z_GetFramebufferAttachmentParameteriv_ovr_0 := GetProcOrNil&<procedure(target: FramebufferTarget; attachment: FramebufferAttachment; pname: FramebufferAttachmentParameterName; var ¶ms: Int32)>(z_GetFramebufferAttachmentParameteriv_adr); private z_GetFramebufferAttachmentParameteriv_ovr_0_anh00001 := GetProcOrNil&<procedure(target: FramebufferTarget; attachment: FramebufferAttachment; pname: FramebufferAttachmentParameterName; ¶ms: IntPtr)>(z_GetFramebufferAttachmentParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetFramebufferAttachmentParameteriv(target: FramebufferTarget; attachment: FramebufferAttachment; pname: FramebufferAttachmentParameterName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetFramebufferAttachmentParameteriv_ovr_0(target, attachment, pname, ¶ms[0]) else z_GetFramebufferAttachmentParameteriv_ovr_0_anh00001(target, attachment, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetFramebufferAttachmentParameteriv(target: FramebufferTarget; attachment: FramebufferAttachment; pname: FramebufferAttachmentParameterName; var ¶ms: Int32) := z_GetFramebufferAttachmentParameteriv_ovr_0(target, attachment, pname, ¶ms); private z_GetFramebufferAttachmentParameteriv_ovr_2 := GetProcOrNil&<procedure(target: FramebufferTarget; attachment: FramebufferAttachment; pname: FramebufferAttachmentParameterName; ¶ms: IntPtr)>(z_GetFramebufferAttachmentParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetFramebufferAttachmentParameteriv(target: FramebufferTarget; attachment: FramebufferAttachment; pname: FramebufferAttachmentParameterName; ¶ms: IntPtr) := z_GetFramebufferAttachmentParameteriv_ovr_2(target, attachment, pname, ¶ms); // added in gl4.3 private z_GetFramebufferParameteriv_adr := GetProcAddress('glGetFramebufferParameteriv'); private z_GetFramebufferParameteriv_ovr_0 := GetProcOrNil&<procedure(target: FramebufferTarget; pname: FramebufferAttachmentParameterName; var ¶ms: Int32)>(z_GetFramebufferParameteriv_adr); private z_GetFramebufferParameteriv_ovr_0_anh0001 := GetProcOrNil&<procedure(target: FramebufferTarget; pname: FramebufferAttachmentParameterName; ¶ms: IntPtr)>(z_GetFramebufferParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetFramebufferParameteriv(target: FramebufferTarget; pname: FramebufferAttachmentParameterName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetFramebufferParameteriv_ovr_0(target, pname, ¶ms[0]) else z_GetFramebufferParameteriv_ovr_0_anh0001(target, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetFramebufferParameteriv(target: FramebufferTarget; pname: FramebufferAttachmentParameterName; var ¶ms: Int32) := z_GetFramebufferParameteriv_ovr_0(target, pname, ¶ms); private z_GetFramebufferParameteriv_ovr_2 := GetProcOrNil&<procedure(target: FramebufferTarget; pname: FramebufferAttachmentParameterName; ¶ms: IntPtr)>(z_GetFramebufferParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetFramebufferParameteriv(target: FramebufferTarget; pname: FramebufferAttachmentParameterName; ¶ms: IntPtr) := z_GetFramebufferParameteriv_ovr_2(target, pname, ¶ms); // added in gl4.5 private z_GetGraphicsResetStatus_adr := GetProcAddress('glGetGraphicsResetStatus'); private z_GetGraphicsResetStatus_ovr_0 := GetProcOrNil&<function: GraphicsResetStatus>(z_GetGraphicsResetStatus_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetGraphicsResetStatus: GraphicsResetStatus := z_GetGraphicsResetStatus_ovr_0; // added in gl3.2 private z_GetInteger64i_v_adr := GetProcAddress('glGetInteger64i_v'); private z_GetInteger64i_v_ovr_0 := GetProcOrNil&<procedure(target: GetPName; index: UInt32; var data: Int64)>(z_GetInteger64i_v_adr); private z_GetInteger64i_v_ovr_0_anh0001 := GetProcOrNil&<procedure(target: GetPName; index: UInt32; data: IntPtr)>(z_GetInteger64i_v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetInteger64i_v(target: GetPName; index: UInt32; data: array of Int64) := if (data<>nil) and (data.Length<>0) then z_GetInteger64i_v_ovr_0(target, index, data[0]) else z_GetInteger64i_v_ovr_0_anh0001(target, index, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetInteger64i_v(target: GetPName; index: UInt32; var data: Int64) := z_GetInteger64i_v_ovr_0(target, index, data); private z_GetInteger64i_v_ovr_2 := GetProcOrNil&<procedure(target: GetPName; index: UInt32; data: IntPtr)>(z_GetInteger64i_v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetInteger64i_v(target: GetPName; index: UInt32; data: IntPtr) := z_GetInteger64i_v_ovr_2(target, index, data); // added in gl3.2 private z_GetInteger64v_adr := GetProcAddress('glGetInteger64v'); private z_GetInteger64v_ovr_0 := GetProcOrNil&<procedure(pname: GetPName; var data: Int64)>(z_GetInteger64v_adr); private z_GetInteger64v_ovr_0_anh001 := GetProcOrNil&<procedure(pname: GetPName; data: IntPtr)>(z_GetInteger64v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetInteger64v(pname: GetPName; data: array of Int64) := if (data<>nil) and (data.Length<>0) then z_GetInteger64v_ovr_0(pname, data[0]) else z_GetInteger64v_ovr_0_anh001(pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetInteger64v(pname: GetPName; var data: Int64) := z_GetInteger64v_ovr_0(pname, data); private z_GetInteger64v_ovr_2 := GetProcOrNil&<procedure(pname: GetPName; data: IntPtr)>(z_GetInteger64v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetInteger64v(pname: GetPName; data: IntPtr) := z_GetInteger64v_ovr_2(pname, data); // added in gl3.0 private z_GetIntegeri_v_adr := GetProcAddress('glGetIntegeri_v'); private z_GetIntegeri_v_ovr_0 := GetProcOrNil&<procedure(target: GetPName; index: UInt32; var data: Int32)>(z_GetIntegeri_v_adr); private z_GetIntegeri_v_ovr_0_anh0001 := GetProcOrNil&<procedure(target: GetPName; index: UInt32; data: IntPtr)>(z_GetIntegeri_v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetIntegeri_v(target: GetPName; index: UInt32; data: array of Int32) := if (data<>nil) and (data.Length<>0) then z_GetIntegeri_v_ovr_0(target, index, data[0]) else z_GetIntegeri_v_ovr_0_anh0001(target, index, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetIntegeri_v(target: GetPName; index: UInt32; var data: Int32) := z_GetIntegeri_v_ovr_0(target, index, data); private z_GetIntegeri_v_ovr_2 := GetProcOrNil&<procedure(target: GetPName; index: UInt32; data: IntPtr)>(z_GetIntegeri_v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetIntegeri_v(target: GetPName; index: UInt32; data: IntPtr) := z_GetIntegeri_v_ovr_2(target, index, data); // added in gl1.0 private z_GetIntegerv_adr := GetProcAddress('glGetIntegerv'); private z_GetIntegerv_ovr_0 := GetProcOrNil&<procedure(pname: GetPName; var data: Int32)>(z_GetIntegerv_adr); private z_GetIntegerv_ovr_0_anh001 := GetProcOrNil&<procedure(pname: GetPName; data: IntPtr)>(z_GetIntegerv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetIntegerv(pname: GetPName; data: array of Int32) := if (data<>nil) and (data.Length<>0) then z_GetIntegerv_ovr_0(pname, data[0]) else z_GetIntegerv_ovr_0_anh001(pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetIntegerv(pname: GetPName; var data: Int32) := z_GetIntegerv_ovr_0(pname, data); private z_GetIntegerv_ovr_2 := GetProcOrNil&<procedure(pname: GetPName; data: IntPtr)>(z_GetIntegerv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetIntegerv(pname: GetPName; data: IntPtr) := z_GetIntegerv_ovr_2(pname, data); // added in gl4.3 private z_GetInternalformati64v_adr := GetProcAddress('glGetInternalformati64v'); private z_GetInternalformati64v_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; _internalformat: InternalFormat; pname: InternalFormatPName; count: Int32; var ¶ms: Int64)>(z_GetInternalformati64v_adr); private z_GetInternalformati64v_ovr_0_anh000001 := GetProcOrNil&<procedure(target: TextureTarget; _internalformat: InternalFormat; pname: InternalFormatPName; count: Int32; ¶ms: IntPtr)>(z_GetInternalformati64v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetInternalformati64v(target: TextureTarget; _internalformat: InternalFormat; pname: InternalFormatPName; count: Int32; ¶ms: array of Int64) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetInternalformati64v_ovr_0(target, _internalformat, pname, count, ¶ms[0]) else z_GetInternalformati64v_ovr_0_anh000001(target, _internalformat, pname, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetInternalformati64v(target: TextureTarget; _internalformat: InternalFormat; pname: InternalFormatPName; count: Int32; var ¶ms: Int64) := z_GetInternalformati64v_ovr_0(target, _internalformat, pname, count, ¶ms); private z_GetInternalformati64v_ovr_2 := GetProcOrNil&<procedure(target: TextureTarget; _internalformat: InternalFormat; pname: InternalFormatPName; count: Int32; ¶ms: IntPtr)>(z_GetInternalformati64v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetInternalformati64v(target: TextureTarget; _internalformat: InternalFormat; pname: InternalFormatPName; count: Int32; ¶ms: IntPtr) := z_GetInternalformati64v_ovr_2(target, _internalformat, pname, count, ¶ms); // added in gl4.2 private z_GetInternalformativ_adr := GetProcAddress('glGetInternalformativ'); private z_GetInternalformativ_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; _internalformat: InternalFormat; pname: InternalFormatPName; count: Int32; var ¶ms: Int32)>(z_GetInternalformativ_adr); private z_GetInternalformativ_ovr_0_anh000001 := GetProcOrNil&<procedure(target: TextureTarget; _internalformat: InternalFormat; pname: InternalFormatPName; count: Int32; ¶ms: IntPtr)>(z_GetInternalformativ_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetInternalformativ(target: TextureTarget; _internalformat: InternalFormat; pname: InternalFormatPName; count: Int32; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetInternalformativ_ovr_0(target, _internalformat, pname, count, ¶ms[0]) else z_GetInternalformativ_ovr_0_anh000001(target, _internalformat, pname, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetInternalformativ(target: TextureTarget; _internalformat: InternalFormat; pname: InternalFormatPName; count: Int32; var ¶ms: Int32) := z_GetInternalformativ_ovr_0(target, _internalformat, pname, count, ¶ms); private z_GetInternalformativ_ovr_2 := GetProcOrNil&<procedure(target: TextureTarget; _internalformat: InternalFormat; pname: InternalFormatPName; count: Int32; ¶ms: IntPtr)>(z_GetInternalformativ_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetInternalformativ(target: TextureTarget; _internalformat: InternalFormat; pname: InternalFormatPName; count: Int32; ¶ms: IntPtr) := z_GetInternalformativ_ovr_2(target, _internalformat, pname, count, ¶ms); // added in gl3.2 private z_GetMultisamplefv_adr := GetProcAddress('glGetMultisamplefv'); private z_GetMultisamplefv_ovr_0 := GetProcOrNil&<procedure(pname: GetMultisamplePNameNV; index: UInt32; var val: single)>(z_GetMultisamplefv_adr); private z_GetMultisamplefv_ovr_0_anh0001 := GetProcOrNil&<procedure(pname: GetMultisamplePNameNV; index: UInt32; val: IntPtr)>(z_GetMultisamplefv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetMultisamplefv(pname: GetMultisamplePNameNV; index: UInt32; val: array of single) := if (val<>nil) and (val.Length<>0) then z_GetMultisamplefv_ovr_0(pname, index, val[0]) else z_GetMultisamplefv_ovr_0_anh0001(pname, index, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetMultisamplefv(pname: GetMultisamplePNameNV; index: UInt32; var val: single) := z_GetMultisamplefv_ovr_0(pname, index, val); private z_GetMultisamplefv_ovr_2 := GetProcOrNil&<procedure(pname: GetMultisamplePNameNV; index: UInt32; val: IntPtr)>(z_GetMultisamplefv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetMultisamplefv(pname: GetMultisamplePNameNV; index: UInt32; val: IntPtr) := z_GetMultisamplefv_ovr_2(pname, index, val); // added in gl4.5 private z_GetNamedBufferParameteri64v_adr := GetProcAddress('glGetNamedBufferParameteri64v'); private z_GetNamedBufferParameteri64v_ovr_0 := GetProcOrNil&<procedure(buffer: gl_buffer; pname: BufferPNameARB; var ¶ms: Int64)>(z_GetNamedBufferParameteri64v_adr); private z_GetNamedBufferParameteri64v_ovr_0_anh0001 := GetProcOrNil&<procedure(buffer: gl_buffer; pname: BufferPNameARB; ¶ms: IntPtr)>(z_GetNamedBufferParameteri64v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedBufferParameteri64v(buffer: gl_buffer; pname: BufferPNameARB; ¶ms: array of Int64) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetNamedBufferParameteri64v_ovr_0(buffer, pname, ¶ms[0]) else z_GetNamedBufferParameteri64v_ovr_0_anh0001(buffer, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedBufferParameteri64v(buffer: gl_buffer; pname: BufferPNameARB; var ¶ms: Int64) := z_GetNamedBufferParameteri64v_ovr_0(buffer, pname, ¶ms); private z_GetNamedBufferParameteri64v_ovr_2 := GetProcOrNil&<procedure(buffer: gl_buffer; pname: BufferPNameARB; ¶ms: IntPtr)>(z_GetNamedBufferParameteri64v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedBufferParameteri64v(buffer: gl_buffer; pname: BufferPNameARB; ¶ms: IntPtr) := z_GetNamedBufferParameteri64v_ovr_2(buffer, pname, ¶ms); // added in gl4.5 private z_GetNamedBufferParameteriv_adr := GetProcAddress('glGetNamedBufferParameteriv'); private z_GetNamedBufferParameteriv_ovr_0 := GetProcOrNil&<procedure(buffer: gl_buffer; pname: BufferPNameARB; var ¶ms: Int32)>(z_GetNamedBufferParameteriv_adr); private z_GetNamedBufferParameteriv_ovr_0_anh0001 := GetProcOrNil&<procedure(buffer: gl_buffer; pname: BufferPNameARB; ¶ms: IntPtr)>(z_GetNamedBufferParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedBufferParameteriv(buffer: gl_buffer; pname: BufferPNameARB; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetNamedBufferParameteriv_ovr_0(buffer, pname, ¶ms[0]) else z_GetNamedBufferParameteriv_ovr_0_anh0001(buffer, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedBufferParameteriv(buffer: gl_buffer; pname: BufferPNameARB; var ¶ms: Int32) := z_GetNamedBufferParameteriv_ovr_0(buffer, pname, ¶ms); private z_GetNamedBufferParameteriv_ovr_2 := GetProcOrNil&<procedure(buffer: gl_buffer; pname: BufferPNameARB; ¶ms: IntPtr)>(z_GetNamedBufferParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedBufferParameteriv(buffer: gl_buffer; pname: BufferPNameARB; ¶ms: IntPtr) := z_GetNamedBufferParameteriv_ovr_2(buffer, pname, ¶ms); // added in gl4.5 private z_GetNamedBufferPointerv_adr := GetProcAddress('glGetNamedBufferPointerv'); private z_GetNamedBufferPointerv_ovr_0 := GetProcOrNil&<procedure(buffer: gl_buffer; pname: BufferPointerNameARB; var ¶ms: IntPtr)>(z_GetNamedBufferPointerv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedBufferPointerv(buffer: gl_buffer; pname: BufferPointerNameARB; var ¶ms: IntPtr) := z_GetNamedBufferPointerv_ovr_0(buffer, pname, ¶ms); private z_GetNamedBufferPointerv_ovr_1 := GetProcOrNil&<procedure(buffer: gl_buffer; pname: BufferPointerNameARB; ¶ms: pointer)>(z_GetNamedBufferPointerv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedBufferPointerv(buffer: gl_buffer; pname: BufferPointerNameARB; ¶ms: pointer) := z_GetNamedBufferPointerv_ovr_1(buffer, pname, ¶ms); // added in gl4.5 private z_GetNamedBufferSubData_adr := GetProcAddress('glGetNamedBufferSubData'); private z_GetNamedBufferSubData_ovr_0 := GetProcOrNil&<procedure(buffer: gl_buffer; offset: IntPtr; size: IntPtr; var data: Byte)>(z_GetNamedBufferSubData_adr); private [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure temp_GetNamedBufferSubData_ovr_0<T>(buffer: gl_buffer; offset: IntPtr; size: IntPtr; var data: T); where T: record; begin z_GetNamedBufferSubData_ovr_0(buffer, offset, size, PByte(pointer(@data))^); end; private [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure temp_GetNamedBufferSubData_ovr_0_anh00001(buffer: gl_buffer; offset: IntPtr; size: IntPtr) := z_GetNamedBufferSubData_ovr_0(buffer, offset, size, PByte(nil)^); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedBufferSubData<T>(buffer: gl_buffer; offset: IntPtr; size: IntPtr; data: array of T); where T: record; begin if (data<>nil) and (data.Length<>0) then temp_GetNamedBufferSubData_ovr_0(buffer, offset, size, data[0]) else temp_GetNamedBufferSubData_ovr_0_anh00001(buffer, offset, size); end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedBufferSubData<T>(buffer: gl_buffer; offset: IntPtr; size: IntPtr; var data: T); where T: record; begin z_GetNamedBufferSubData_ovr_0(buffer, offset, size, PByte(pointer(@data))^); end; private z_GetNamedBufferSubData_ovr_2 := GetProcOrNil&<procedure(buffer: gl_buffer; offset: IntPtr; size: IntPtr; data: IntPtr)>(z_GetNamedBufferSubData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedBufferSubData(buffer: gl_buffer; offset: IntPtr; size: IntPtr; data: IntPtr) := z_GetNamedBufferSubData_ovr_2(buffer, offset, size, data); // added in gl4.5 private z_GetNamedFramebufferAttachmentParameteriv_adr := GetProcAddress('glGetNamedFramebufferAttachmentParameteriv'); private z_GetNamedFramebufferAttachmentParameteriv_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; attachment: FramebufferAttachment; pname: FramebufferAttachmentParameterName; var ¶ms: Int32)>(z_GetNamedFramebufferAttachmentParameteriv_adr); private z_GetNamedFramebufferAttachmentParameteriv_ovr_0_anh00001 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; attachment: FramebufferAttachment; pname: FramebufferAttachmentParameterName; ¶ms: IntPtr)>(z_GetNamedFramebufferAttachmentParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedFramebufferAttachmentParameteriv(framebuffer: gl_framebuffer; attachment: FramebufferAttachment; pname: FramebufferAttachmentParameterName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetNamedFramebufferAttachmentParameteriv_ovr_0(framebuffer, attachment, pname, ¶ms[0]) else z_GetNamedFramebufferAttachmentParameteriv_ovr_0_anh00001(framebuffer, attachment, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedFramebufferAttachmentParameteriv(framebuffer: gl_framebuffer; attachment: FramebufferAttachment; pname: FramebufferAttachmentParameterName; var ¶ms: Int32) := z_GetNamedFramebufferAttachmentParameteriv_ovr_0(framebuffer, attachment, pname, ¶ms); private z_GetNamedFramebufferAttachmentParameteriv_ovr_2 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; attachment: FramebufferAttachment; pname: FramebufferAttachmentParameterName; ¶ms: IntPtr)>(z_GetNamedFramebufferAttachmentParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedFramebufferAttachmentParameteriv(framebuffer: gl_framebuffer; attachment: FramebufferAttachment; pname: FramebufferAttachmentParameterName; ¶ms: IntPtr) := z_GetNamedFramebufferAttachmentParameteriv_ovr_2(framebuffer, attachment, pname, ¶ms); // added in gl4.5 private z_GetNamedFramebufferParameteriv_adr := GetProcAddress('glGetNamedFramebufferParameteriv'); private z_GetNamedFramebufferParameteriv_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; pname: GetFramebufferParameter; var param: Int32)>(z_GetNamedFramebufferParameteriv_adr); private z_GetNamedFramebufferParameteriv_ovr_0_anh0001 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; pname: GetFramebufferParameter; param: IntPtr)>(z_GetNamedFramebufferParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedFramebufferParameteriv(framebuffer: gl_framebuffer; pname: GetFramebufferParameter; param: array of Int32) := if (param<>nil) and (param.Length<>0) then z_GetNamedFramebufferParameteriv_ovr_0(framebuffer, pname, param[0]) else z_GetNamedFramebufferParameteriv_ovr_0_anh0001(framebuffer, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedFramebufferParameteriv(framebuffer: gl_framebuffer; pname: GetFramebufferParameter; var param: Int32) := z_GetNamedFramebufferParameteriv_ovr_0(framebuffer, pname, param); private z_GetNamedFramebufferParameteriv_ovr_2 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; pname: GetFramebufferParameter; param: IntPtr)>(z_GetNamedFramebufferParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedFramebufferParameteriv(framebuffer: gl_framebuffer; pname: GetFramebufferParameter; param: IntPtr) := z_GetNamedFramebufferParameteriv_ovr_2(framebuffer, pname, param); // added in gl4.5 private z_GetNamedRenderbufferParameteriv_adr := GetProcAddress('glGetNamedRenderbufferParameteriv'); private z_GetNamedRenderbufferParameteriv_ovr_0 := GetProcOrNil&<procedure(renderbuffer: gl_renderbuffer; pname: RenderbufferParameterName; var ¶ms: Int32)>(z_GetNamedRenderbufferParameteriv_adr); private z_GetNamedRenderbufferParameteriv_ovr_0_anh0001 := GetProcOrNil&<procedure(renderbuffer: gl_renderbuffer; pname: RenderbufferParameterName; ¶ms: IntPtr)>(z_GetNamedRenderbufferParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedRenderbufferParameteriv(renderbuffer: gl_renderbuffer; pname: RenderbufferParameterName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetNamedRenderbufferParameteriv_ovr_0(renderbuffer, pname, ¶ms[0]) else z_GetNamedRenderbufferParameteriv_ovr_0_anh0001(renderbuffer, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedRenderbufferParameteriv(renderbuffer: gl_renderbuffer; pname: RenderbufferParameterName; var ¶ms: Int32) := z_GetNamedRenderbufferParameteriv_ovr_0(renderbuffer, pname, ¶ms); private z_GetNamedRenderbufferParameteriv_ovr_2 := GetProcOrNil&<procedure(renderbuffer: gl_renderbuffer; pname: RenderbufferParameterName; ¶ms: IntPtr)>(z_GetNamedRenderbufferParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetNamedRenderbufferParameteriv(renderbuffer: gl_renderbuffer; pname: RenderbufferParameterName; ¶ms: IntPtr) := z_GetNamedRenderbufferParameteriv_ovr_2(renderbuffer, pname, ¶ms); // added in gl4.5 private z_GetnColorTable_adr := GetProcAddress('glGetnColorTable'); private z_GetnColorTable_ovr_0 := GetProcOrNil&<procedure(target: ColorTableTarget; format: PixelFormat; &type: PixelType; bufSize: Int32; table: IntPtr)>(z_GetnColorTable_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnColorTable(target: ColorTableTarget; format: PixelFormat; &type: PixelType; bufSize: Int32; table: IntPtr) := z_GetnColorTable_ovr_0(target, format, &type, bufSize, table); // added in gl4.5 private z_GetnCompressedTexImage_adr := GetProcAddress('glGetnCompressedTexImage'); private z_GetnCompressedTexImage_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; lod: Int32; bufSize: Int32; pixels: IntPtr)>(z_GetnCompressedTexImage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnCompressedTexImage(target: TextureTarget; lod: Int32; bufSize: Int32; pixels: IntPtr) := z_GetnCompressedTexImage_ovr_0(target, lod, bufSize, pixels); // added in gl4.5 private z_GetnConvolutionFilter_adr := GetProcAddress('glGetnConvolutionFilter'); private z_GetnConvolutionFilter_ovr_0 := GetProcOrNil&<procedure(target: ConvolutionTarget; format: PixelFormat; &type: PixelType; bufSize: Int32; image: IntPtr)>(z_GetnConvolutionFilter_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnConvolutionFilter(target: ConvolutionTarget; format: PixelFormat; &type: PixelType; bufSize: Int32; image: IntPtr) := z_GetnConvolutionFilter_ovr_0(target, format, &type, bufSize, image); // added in gl4.5 private z_GetnHistogram_adr := GetProcAddress('glGetnHistogram'); private z_GetnHistogram_ovr_0 := GetProcOrNil&<procedure(target: HistogramTarget; reset: boolean; format: PixelFormat; &type: PixelType; bufSize: Int32; values: IntPtr)>(z_GetnHistogram_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnHistogram(target: HistogramTarget; reset: boolean; format: PixelFormat; &type: PixelType; bufSize: Int32; values: IntPtr) := z_GetnHistogram_ovr_0(target, reset, format, &type, bufSize, values); // added in gl4.5 private z_GetnMapdv_adr := GetProcAddress('glGetnMapdv'); private z_GetnMapdv_ovr_0 := GetProcOrNil&<procedure(target: MapTarget; query: MapQuery; bufSize: Int32; var v: real)>(z_GetnMapdv_adr); private z_GetnMapdv_ovr_0_anh00001 := GetProcOrNil&<procedure(target: MapTarget; query: MapQuery; bufSize: Int32; v: IntPtr)>(z_GetnMapdv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnMapdv(target: MapTarget; query: MapQuery; bufSize: Int32; v: array of real) := if (v<>nil) and (v.Length<>0) then z_GetnMapdv_ovr_0(target, query, bufSize, v[0]) else z_GetnMapdv_ovr_0_anh00001(target, query, bufSize, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnMapdv(target: MapTarget; query: MapQuery; bufSize: Int32; var v: real) := z_GetnMapdv_ovr_0(target, query, bufSize, v); private z_GetnMapdv_ovr_2 := GetProcOrNil&<procedure(target: MapTarget; query: MapQuery; bufSize: Int32; v: IntPtr)>(z_GetnMapdv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnMapdv(target: MapTarget; query: MapQuery; bufSize: Int32; v: IntPtr) := z_GetnMapdv_ovr_2(target, query, bufSize, v); // added in gl4.5 private z_GetnMapfv_adr := GetProcAddress('glGetnMapfv'); private z_GetnMapfv_ovr_0 := GetProcOrNil&<procedure(target: MapTarget; query: MapQuery; bufSize: Int32; var v: single)>(z_GetnMapfv_adr); private z_GetnMapfv_ovr_0_anh00001 := GetProcOrNil&<procedure(target: MapTarget; query: MapQuery; bufSize: Int32; v: IntPtr)>(z_GetnMapfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnMapfv(target: MapTarget; query: MapQuery; bufSize: Int32; v: array of single) := if (v<>nil) and (v.Length<>0) then z_GetnMapfv_ovr_0(target, query, bufSize, v[0]) else z_GetnMapfv_ovr_0_anh00001(target, query, bufSize, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnMapfv(target: MapTarget; query: MapQuery; bufSize: Int32; var v: single) := z_GetnMapfv_ovr_0(target, query, bufSize, v); private z_GetnMapfv_ovr_2 := GetProcOrNil&<procedure(target: MapTarget; query: MapQuery; bufSize: Int32; v: IntPtr)>(z_GetnMapfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnMapfv(target: MapTarget; query: MapQuery; bufSize: Int32; v: IntPtr) := z_GetnMapfv_ovr_2(target, query, bufSize, v); // added in gl4.5 private z_GetnMapiv_adr := GetProcAddress('glGetnMapiv'); private z_GetnMapiv_ovr_0 := GetProcOrNil&<procedure(target: MapTarget; query: MapQuery; bufSize: Int32; var v: Int32)>(z_GetnMapiv_adr); private z_GetnMapiv_ovr_0_anh00001 := GetProcOrNil&<procedure(target: MapTarget; query: MapQuery; bufSize: Int32; v: IntPtr)>(z_GetnMapiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnMapiv(target: MapTarget; query: MapQuery; bufSize: Int32; v: array of Int32) := if (v<>nil) and (v.Length<>0) then z_GetnMapiv_ovr_0(target, query, bufSize, v[0]) else z_GetnMapiv_ovr_0_anh00001(target, query, bufSize, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnMapiv(target: MapTarget; query: MapQuery; bufSize: Int32; var v: Int32) := z_GetnMapiv_ovr_0(target, query, bufSize, v); private z_GetnMapiv_ovr_2 := GetProcOrNil&<procedure(target: MapTarget; query: MapQuery; bufSize: Int32; v: IntPtr)>(z_GetnMapiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnMapiv(target: MapTarget; query: MapQuery; bufSize: Int32; v: IntPtr) := z_GetnMapiv_ovr_2(target, query, bufSize, v); // added in gl4.5 private z_GetnMinmax_adr := GetProcAddress('glGetnMinmax'); private z_GetnMinmax_ovr_0 := GetProcOrNil&<procedure(target: MinmaxTarget; reset: boolean; format: PixelFormat; &type: PixelType; bufSize: Int32; values: IntPtr)>(z_GetnMinmax_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnMinmax(target: MinmaxTarget; reset: boolean; format: PixelFormat; &type: PixelType; bufSize: Int32; values: IntPtr) := z_GetnMinmax_ovr_0(target, reset, format, &type, bufSize, values); // added in gl4.5 private z_GetnPixelMapfv_adr := GetProcAddress('glGetnPixelMapfv'); private z_GetnPixelMapfv_ovr_0 := GetProcOrNil&<procedure(map: PixelMap; bufSize: Int32; var values: single)>(z_GetnPixelMapfv_adr); private z_GetnPixelMapfv_ovr_0_anh0001 := GetProcOrNil&<procedure(map: PixelMap; bufSize: Int32; values: IntPtr)>(z_GetnPixelMapfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnPixelMapfv(map: PixelMap; bufSize: Int32; values: array of single) := if (values<>nil) and (values.Length<>0) then z_GetnPixelMapfv_ovr_0(map, bufSize, values[0]) else z_GetnPixelMapfv_ovr_0_anh0001(map, bufSize, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnPixelMapfv(map: PixelMap; bufSize: Int32; var values: single) := z_GetnPixelMapfv_ovr_0(map, bufSize, values); private z_GetnPixelMapfv_ovr_2 := GetProcOrNil&<procedure(map: PixelMap; bufSize: Int32; values: IntPtr)>(z_GetnPixelMapfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnPixelMapfv(map: PixelMap; bufSize: Int32; values: IntPtr) := z_GetnPixelMapfv_ovr_2(map, bufSize, values); // added in gl4.5 private z_GetnPixelMapuiv_adr := GetProcAddress('glGetnPixelMapuiv'); private z_GetnPixelMapuiv_ovr_0 := GetProcOrNil&<procedure(map: PixelMap; bufSize: Int32; var values: UInt32)>(z_GetnPixelMapuiv_adr); private z_GetnPixelMapuiv_ovr_0_anh0001 := GetProcOrNil&<procedure(map: PixelMap; bufSize: Int32; values: IntPtr)>(z_GetnPixelMapuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnPixelMapuiv(map: PixelMap; bufSize: Int32; values: array of UInt32) := if (values<>nil) and (values.Length<>0) then z_GetnPixelMapuiv_ovr_0(map, bufSize, values[0]) else z_GetnPixelMapuiv_ovr_0_anh0001(map, bufSize, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnPixelMapuiv(map: PixelMap; bufSize: Int32; var values: UInt32) := z_GetnPixelMapuiv_ovr_0(map, bufSize, values); private z_GetnPixelMapuiv_ovr_2 := GetProcOrNil&<procedure(map: PixelMap; bufSize: Int32; values: IntPtr)>(z_GetnPixelMapuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnPixelMapuiv(map: PixelMap; bufSize: Int32; values: IntPtr) := z_GetnPixelMapuiv_ovr_2(map, bufSize, values); // added in gl4.5 private z_GetnPixelMapusv_adr := GetProcAddress('glGetnPixelMapusv'); private z_GetnPixelMapusv_ovr_0 := GetProcOrNil&<procedure(map: PixelMap; bufSize: Int32; var values: UInt16)>(z_GetnPixelMapusv_adr); private z_GetnPixelMapusv_ovr_0_anh0001 := GetProcOrNil&<procedure(map: PixelMap; bufSize: Int32; values: IntPtr)>(z_GetnPixelMapusv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnPixelMapusv(map: PixelMap; bufSize: Int32; values: array of UInt16) := if (values<>nil) and (values.Length<>0) then z_GetnPixelMapusv_ovr_0(map, bufSize, values[0]) else z_GetnPixelMapusv_ovr_0_anh0001(map, bufSize, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnPixelMapusv(map: PixelMap; bufSize: Int32; var values: UInt16) := z_GetnPixelMapusv_ovr_0(map, bufSize, values); private z_GetnPixelMapusv_ovr_2 := GetProcOrNil&<procedure(map: PixelMap; bufSize: Int32; values: IntPtr)>(z_GetnPixelMapusv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnPixelMapusv(map: PixelMap; bufSize: Int32; values: IntPtr) := z_GetnPixelMapusv_ovr_2(map, bufSize, values); // added in gl4.5 private z_GetnPolygonStipple_adr := GetProcAddress('glGetnPolygonStipple'); private z_GetnPolygonStipple_ovr_0 := GetProcOrNil&<procedure(bufSize: Int32; var pattern: Byte)>(z_GetnPolygonStipple_adr); private z_GetnPolygonStipple_ovr_0_anh001 := GetProcOrNil&<procedure(bufSize: Int32; pattern: IntPtr)>(z_GetnPolygonStipple_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnPolygonStipple(bufSize: Int32; pattern: array of Byte) := if (pattern<>nil) and (pattern.Length<>0) then z_GetnPolygonStipple_ovr_0(bufSize, pattern[0]) else z_GetnPolygonStipple_ovr_0_anh001(bufSize, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnPolygonStipple(bufSize: Int32; var pattern: Byte) := z_GetnPolygonStipple_ovr_0(bufSize, pattern); private z_GetnPolygonStipple_ovr_2 := GetProcOrNil&<procedure(bufSize: Int32; pattern: IntPtr)>(z_GetnPolygonStipple_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnPolygonStipple(bufSize: Int32; pattern: IntPtr) := z_GetnPolygonStipple_ovr_2(bufSize, pattern); // added in gl4.5 private z_GetnSeparableFilter_adr := GetProcAddress('glGetnSeparableFilter'); private z_GetnSeparableFilter_ovr_0 := GetProcOrNil&<procedure(target: SeparableTarget; format: PixelFormat; &type: PixelType; rowBufSize: Int32; row: IntPtr; columnBufSize: Int32; column: IntPtr; span: IntPtr)>(z_GetnSeparableFilter_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnSeparableFilter(target: SeparableTarget; format: PixelFormat; &type: PixelType; rowBufSize: Int32; row: IntPtr; columnBufSize: Int32; column: IntPtr; span: IntPtr) := z_GetnSeparableFilter_ovr_0(target, format, &type, rowBufSize, row, columnBufSize, column, span); // added in gl4.5 private z_GetnTexImage_adr := GetProcAddress('glGetnTexImage'); private z_GetnTexImage_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; format: PixelFormat; &type: PixelType; bufSize: Int32; pixels: IntPtr)>(z_GetnTexImage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnTexImage(target: TextureTarget; level: Int32; format: PixelFormat; &type: PixelType; bufSize: Int32; pixels: IntPtr) := z_GetnTexImage_ovr_0(target, level, format, &type, bufSize, pixels); // added in gl4.5 private z_GetnUniformdv_adr := GetProcAddress('glGetnUniformdv'); private z_GetnUniformdv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; bufSize: Int32; var ¶ms: real)>(z_GetnUniformdv_adr); private z_GetnUniformdv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: IntPtr)>(z_GetnUniformdv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnUniformdv(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: array of real) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetnUniformdv_ovr_0(&program, location, bufSize, ¶ms[0]) else z_GetnUniformdv_ovr_0_anh00001(&program, location, bufSize, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnUniformdv(&program: gl_program; location: Int32; bufSize: Int32; var ¶ms: real) := z_GetnUniformdv_ovr_0(&program, location, bufSize, ¶ms); private z_GetnUniformdv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: IntPtr)>(z_GetnUniformdv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnUniformdv(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: IntPtr) := z_GetnUniformdv_ovr_2(&program, location, bufSize, ¶ms); // added in gl4.5 private z_GetnUniformfv_adr := GetProcAddress('glGetnUniformfv'); private z_GetnUniformfv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; bufSize: Int32; var ¶ms: single)>(z_GetnUniformfv_adr); private z_GetnUniformfv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: IntPtr)>(z_GetnUniformfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnUniformfv(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: array of single) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetnUniformfv_ovr_0(&program, location, bufSize, ¶ms[0]) else z_GetnUniformfv_ovr_0_anh00001(&program, location, bufSize, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnUniformfv(&program: gl_program; location: Int32; bufSize: Int32; var ¶ms: single) := z_GetnUniformfv_ovr_0(&program, location, bufSize, ¶ms); private z_GetnUniformfv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: IntPtr)>(z_GetnUniformfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnUniformfv(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: IntPtr) := z_GetnUniformfv_ovr_2(&program, location, bufSize, ¶ms); // added in gl4.5 private z_GetnUniformiv_adr := GetProcAddress('glGetnUniformiv'); private z_GetnUniformiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; bufSize: Int32; var ¶ms: Int32)>(z_GetnUniformiv_adr); private z_GetnUniformiv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: IntPtr)>(z_GetnUniformiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnUniformiv(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetnUniformiv_ovr_0(&program, location, bufSize, ¶ms[0]) else z_GetnUniformiv_ovr_0_anh00001(&program, location, bufSize, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnUniformiv(&program: gl_program; location: Int32; bufSize: Int32; var ¶ms: Int32) := z_GetnUniformiv_ovr_0(&program, location, bufSize, ¶ms); private z_GetnUniformiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: IntPtr)>(z_GetnUniformiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnUniformiv(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: IntPtr) := z_GetnUniformiv_ovr_2(&program, location, bufSize, ¶ms); // added in gl4.5 private z_GetnUniformuiv_adr := GetProcAddress('glGetnUniformuiv'); private z_GetnUniformuiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; bufSize: Int32; var ¶ms: UInt32)>(z_GetnUniformuiv_adr); private z_GetnUniformuiv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: IntPtr)>(z_GetnUniformuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnUniformuiv(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: array of UInt32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetnUniformuiv_ovr_0(&program, location, bufSize, ¶ms[0]) else z_GetnUniformuiv_ovr_0_anh00001(&program, location, bufSize, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnUniformuiv(&program: gl_program; location: Int32; bufSize: Int32; var ¶ms: UInt32) := z_GetnUniformuiv_ovr_0(&program, location, bufSize, ¶ms); private z_GetnUniformuiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: IntPtr)>(z_GetnUniformuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetnUniformuiv(&program: gl_program; location: Int32; bufSize: Int32; ¶ms: IntPtr) := z_GetnUniformuiv_ovr_2(&program, location, bufSize, ¶ms); // added in gl4.3 private z_GetObjectLabel_adr := GetProcAddress('glGetObjectLabel'); private z_GetObjectLabel_ovr_0 := GetProcOrNil&<procedure(identifier: ObjectIdentifier; name: UInt32; bufSize: Int32; var length: Int32; &label: IntPtr)>(z_GetObjectLabel_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetObjectLabel(identifier: ObjectIdentifier; name: UInt32; bufSize: Int32; var length: Int32; &label: IntPtr) := z_GetObjectLabel_ovr_0(identifier, name, bufSize, length, &label); private z_GetObjectLabel_ovr_1 := GetProcOrNil&<procedure(identifier: ObjectIdentifier; name: UInt32; bufSize: Int32; length: IntPtr; &label: IntPtr)>(z_GetObjectLabel_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetObjectLabel(identifier: ObjectIdentifier; name: UInt32; bufSize: Int32; length: IntPtr; &label: IntPtr) := z_GetObjectLabel_ovr_1(identifier, name, bufSize, length, &label); // added in gl4.3 private z_GetObjectPtrLabel_adr := GetProcAddress('glGetObjectPtrLabel'); private z_GetObjectPtrLabel_ovr_0 := GetProcOrNil&<procedure(ptr: IntPtr; bufSize: Int32; var length: Int32; &label: IntPtr)>(z_GetObjectPtrLabel_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetObjectPtrLabel(ptr: IntPtr; bufSize: Int32; var length: Int32; &label: IntPtr) := z_GetObjectPtrLabel_ovr_0(ptr, bufSize, length, &label); private z_GetObjectPtrLabel_ovr_1 := GetProcOrNil&<procedure(ptr: IntPtr; bufSize: Int32; length: IntPtr; &label: IntPtr)>(z_GetObjectPtrLabel_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetObjectPtrLabel(ptr: IntPtr; bufSize: Int32; length: IntPtr; &label: IntPtr) := z_GetObjectPtrLabel_ovr_1(ptr, bufSize, length, &label); // added in gl4.3 private z_GetPointerv_adr := GetProcAddress('glGetPointerv'); private z_GetPointerv_ovr_0 := GetProcOrNil&<procedure(pname: GetPointervPName; var ¶ms: IntPtr)>(z_GetPointerv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetPointerv(pname: GetPointervPName; var ¶ms: IntPtr) := z_GetPointerv_ovr_0(pname, ¶ms); private z_GetPointerv_ovr_1 := GetProcOrNil&<procedure(pname: GetPointervPName; ¶ms: pointer)>(z_GetPointerv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetPointerv(pname: GetPointervPName; ¶ms: pointer) := z_GetPointerv_ovr_1(pname, ¶ms); // added in gl4.1 private z_GetProgramBinary_adr := GetProcAddress('glGetProgramBinary'); private z_GetProgramBinary_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; bufSize: Int32; var length: Int32; var binaryFormat: DummyEnum; binary: IntPtr)>(z_GetProgramBinary_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramBinary(&program: gl_program; bufSize: Int32; var length: Int32; var binaryFormat: DummyEnum; binary: IntPtr) := z_GetProgramBinary_ovr_0(&program, bufSize, length, binaryFormat, binary); private z_GetProgramBinary_ovr_1 := GetProcOrNil&<procedure(&program: gl_program; bufSize: Int32; var length: Int32; binaryFormat: IntPtr; binary: IntPtr)>(z_GetProgramBinary_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramBinary(&program: gl_program; bufSize: Int32; var length: Int32; binaryFormat: IntPtr; binary: IntPtr) := z_GetProgramBinary_ovr_1(&program, bufSize, length, binaryFormat, binary); private z_GetProgramBinary_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; bufSize: Int32; length: IntPtr; var binaryFormat: DummyEnum; binary: IntPtr)>(z_GetProgramBinary_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramBinary(&program: gl_program; bufSize: Int32; length: IntPtr; var binaryFormat: DummyEnum; binary: IntPtr) := z_GetProgramBinary_ovr_2(&program, bufSize, length, binaryFormat, binary); private z_GetProgramBinary_ovr_3 := GetProcOrNil&<procedure(&program: gl_program; bufSize: Int32; length: IntPtr; binaryFormat: IntPtr; binary: IntPtr)>(z_GetProgramBinary_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramBinary(&program: gl_program; bufSize: Int32; length: IntPtr; binaryFormat: IntPtr; binary: IntPtr) := z_GetProgramBinary_ovr_3(&program, bufSize, length, binaryFormat, binary); // added in gl2.0 private z_GetProgramInfoLog_adr := GetProcAddress('glGetProgramInfoLog'); private z_GetProgramInfoLog_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; bufSize: Int32; var length: Int32; infoLog: IntPtr)>(z_GetProgramInfoLog_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramInfoLog(&program: gl_program; bufSize: Int32; var length: Int32; infoLog: IntPtr) := z_GetProgramInfoLog_ovr_0(&program, bufSize, length, infoLog); private z_GetProgramInfoLog_ovr_1 := GetProcOrNil&<procedure(&program: gl_program; bufSize: Int32; length: IntPtr; infoLog: IntPtr)>(z_GetProgramInfoLog_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramInfoLog(&program: gl_program; bufSize: Int32; length: IntPtr; infoLog: IntPtr) := z_GetProgramInfoLog_ovr_1(&program, bufSize, length, infoLog); // added in gl4.3 private z_GetProgramInterfaceiv_adr := GetProcAddress('glGetProgramInterfaceiv'); private z_GetProgramInterfaceiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; pname: ProgramInterfacePName; var ¶ms: Int32)>(z_GetProgramInterfaceiv_adr); private z_GetProgramInterfaceiv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; pname: ProgramInterfacePName; ¶ms: IntPtr)>(z_GetProgramInterfaceiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramInterfaceiv(&program: gl_program; _programInterface: ProgramInterface; pname: ProgramInterfacePName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetProgramInterfaceiv_ovr_0(&program, _programInterface, pname, ¶ms[0]) else z_GetProgramInterfaceiv_ovr_0_anh00001(&program, _programInterface, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramInterfaceiv(&program: gl_program; _programInterface: ProgramInterface; pname: ProgramInterfacePName; var ¶ms: Int32) := z_GetProgramInterfaceiv_ovr_0(&program, _programInterface, pname, ¶ms); private z_GetProgramInterfaceiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; pname: ProgramInterfacePName; ¶ms: IntPtr)>(z_GetProgramInterfaceiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramInterfaceiv(&program: gl_program; _programInterface: ProgramInterface; pname: ProgramInterfacePName; ¶ms: IntPtr) := z_GetProgramInterfaceiv_ovr_2(&program, _programInterface, pname, ¶ms); // added in gl2.0 private z_GetProgramiv_adr := GetProcAddress('glGetProgramiv'); private z_GetProgramiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; pname: ProgramPropertyARB; var ¶ms: Int32)>(z_GetProgramiv_adr); private z_GetProgramiv_ovr_0_anh0001 := GetProcOrNil&<procedure(&program: gl_program; pname: ProgramPropertyARB; ¶ms: IntPtr)>(z_GetProgramiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramiv(&program: gl_program; pname: ProgramPropertyARB; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetProgramiv_ovr_0(&program, pname, ¶ms[0]) else z_GetProgramiv_ovr_0_anh0001(&program, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramiv(&program: gl_program; pname: ProgramPropertyARB; var ¶ms: Int32) := z_GetProgramiv_ovr_0(&program, pname, ¶ms); private z_GetProgramiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; pname: ProgramPropertyARB; ¶ms: IntPtr)>(z_GetProgramiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramiv(&program: gl_program; pname: ProgramPropertyARB; ¶ms: IntPtr) := z_GetProgramiv_ovr_2(&program, pname, ¶ms); // added in gl4.1 private z_GetProgramPipelineInfoLog_adr := GetProcAddress('glGetProgramPipelineInfoLog'); private z_GetProgramPipelineInfoLog_ovr_0 := GetProcOrNil&<procedure(pipeline: gl_program_pipeline; bufSize: Int32; var length: Int32; infoLog: IntPtr)>(z_GetProgramPipelineInfoLog_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramPipelineInfoLog(pipeline: gl_program_pipeline; bufSize: Int32; var length: Int32; infoLog: IntPtr) := z_GetProgramPipelineInfoLog_ovr_0(pipeline, bufSize, length, infoLog); private z_GetProgramPipelineInfoLog_ovr_1 := GetProcOrNil&<procedure(pipeline: gl_program_pipeline; bufSize: Int32; length: IntPtr; infoLog: IntPtr)>(z_GetProgramPipelineInfoLog_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramPipelineInfoLog(pipeline: gl_program_pipeline; bufSize: Int32; length: IntPtr; infoLog: IntPtr) := z_GetProgramPipelineInfoLog_ovr_1(pipeline, bufSize, length, infoLog); // added in gl4.1 private z_GetProgramPipelineiv_adr := GetProcAddress('glGetProgramPipelineiv'); private z_GetProgramPipelineiv_ovr_0 := GetProcOrNil&<procedure(pipeline: gl_program_pipeline; pname: PipelineParameterName; var ¶ms: Int32)>(z_GetProgramPipelineiv_adr); private z_GetProgramPipelineiv_ovr_0_anh0001 := GetProcOrNil&<procedure(pipeline: gl_program_pipeline; pname: PipelineParameterName; ¶ms: IntPtr)>(z_GetProgramPipelineiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramPipelineiv(pipeline: gl_program_pipeline; pname: PipelineParameterName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetProgramPipelineiv_ovr_0(pipeline, pname, ¶ms[0]) else z_GetProgramPipelineiv_ovr_0_anh0001(pipeline, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramPipelineiv(pipeline: gl_program_pipeline; pname: PipelineParameterName; var ¶ms: Int32) := z_GetProgramPipelineiv_ovr_0(pipeline, pname, ¶ms); private z_GetProgramPipelineiv_ovr_2 := GetProcOrNil&<procedure(pipeline: gl_program_pipeline; pname: PipelineParameterName; ¶ms: IntPtr)>(z_GetProgramPipelineiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramPipelineiv(pipeline: gl_program_pipeline; pname: PipelineParameterName; ¶ms: IntPtr) := z_GetProgramPipelineiv_ovr_2(pipeline, pname, ¶ms); // added in gl4.3 private z_GetProgramResourceIndex_adr := GetProcAddress('glGetProgramResourceIndex'); private z_GetProgramResourceIndex_ovr_0 := GetProcOrNil&<function(&program: gl_program; _programInterface: ProgramInterface; name: IntPtr): UInt32>(z_GetProgramResourceIndex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetProgramResourceIndex(&program: gl_program; _programInterface: ProgramInterface; name: string): UInt32; begin var par_3_str_ptr: IntPtr; try par_3_str_ptr := Marshal.StringToHGlobalAnsi(name); Result := z_GetProgramResourceIndex_ovr_0(&program, _programInterface, par_3_str_ptr); finally Marshal.FreeHGlobal(par_3_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetProgramResourceIndex(&program: gl_program; _programInterface: ProgramInterface; name: IntPtr): UInt32 := z_GetProgramResourceIndex_ovr_0(&program, _programInterface, name); // added in gl4.3 private z_GetProgramResourceiv_adr := GetProcAddress('glGetProgramResourceiv'); private z_GetProgramResourceiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; var props: ProgramResourceProperty; count: Int32; var length: Int32; var ¶ms: Int32)>(z_GetProgramResourceiv_adr); private z_GetProgramResourceiv_ovr_0_anh000001000 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; var length: Int32; var ¶ms: Int32)>(z_GetProgramResourceiv_adr); private z_GetProgramResourceiv_ovr_0_anh000000001 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; var props: ProgramResourceProperty; count: Int32; var length: Int32; ¶ms: IntPtr)>(z_GetProgramResourceiv_adr); private z_GetProgramResourceiv_ovr_0_anh000001001 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; var length: Int32; ¶ms: IntPtr)>(z_GetProgramResourceiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: array of ProgramResourceProperty; count: Int32; var length: Int32; ¶ms: array of Int32) := if (props<>nil) and (props.Length<>0) then if (¶ms<>nil) and (¶ms.Length<>0) then z_GetProgramResourceiv_ovr_0(&program, _programInterface, index, propCount, props[0], count, length, ¶ms[0]) else z_GetProgramResourceiv_ovr_0_anh000000001(&program, _programInterface, index, propCount, props[0], count, length, IntPtr.Zero) else if (¶ms<>nil) and (¶ms.Length<>0) then z_GetProgramResourceiv_ovr_0_anh000001000(&program, _programInterface, index, propCount, IntPtr.Zero, count, length, ¶ms[0]) else z_GetProgramResourceiv_ovr_0_anh000001001(&program, _programInterface, index, propCount, IntPtr.Zero, count, length, IntPtr.Zero); private z_GetProgramResourceiv_ovr_1_anh000001000 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; var length: Int32; var ¶ms: Int32)>(z_GetProgramResourceiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: array of ProgramResourceProperty; count: Int32; var length: Int32; var ¶ms: Int32) := if (props<>nil) and (props.Length<>0) then z_GetProgramResourceiv_ovr_0(&program, _programInterface, index, propCount, props[0], count, length, ¶ms) else z_GetProgramResourceiv_ovr_0_anh000001000(&program, _programInterface, index, propCount, IntPtr.Zero, count, length, ¶ms); private z_GetProgramResourceiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; var props: ProgramResourceProperty; count: Int32; var length: Int32; ¶ms: IntPtr)>(z_GetProgramResourceiv_adr); private z_GetProgramResourceiv_ovr_2_anh000001000 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; var length: Int32; ¶ms: IntPtr)>(z_GetProgramResourceiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: array of ProgramResourceProperty; count: Int32; var length: Int32; ¶ms: IntPtr) := if (props<>nil) and (props.Length<>0) then z_GetProgramResourceiv_ovr_2(&program, _programInterface, index, propCount, props[0], count, length, ¶ms) else z_GetProgramResourceiv_ovr_2_anh000001000(&program, _programInterface, index, propCount, IntPtr.Zero, count, length, ¶ms); private z_GetProgramResourceiv_ovr_3 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; var props: ProgramResourceProperty; count: Int32; length: IntPtr; var ¶ms: Int32)>(z_GetProgramResourceiv_adr); private z_GetProgramResourceiv_ovr_3_anh000001000 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; length: IntPtr; var ¶ms: Int32)>(z_GetProgramResourceiv_adr); private z_GetProgramResourceiv_ovr_3_anh000000001 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; var props: ProgramResourceProperty; count: Int32; length: IntPtr; ¶ms: IntPtr)>(z_GetProgramResourceiv_adr); private z_GetProgramResourceiv_ovr_3_anh000001001 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; length: IntPtr; ¶ms: IntPtr)>(z_GetProgramResourceiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: array of ProgramResourceProperty; count: Int32; length: IntPtr; ¶ms: array of Int32) := if (props<>nil) and (props.Length<>0) then if (¶ms<>nil) and (¶ms.Length<>0) then z_GetProgramResourceiv_ovr_3(&program, _programInterface, index, propCount, props[0], count, length, ¶ms[0]) else z_GetProgramResourceiv_ovr_3_anh000000001(&program, _programInterface, index, propCount, props[0], count, length, IntPtr.Zero) else if (¶ms<>nil) and (¶ms.Length<>0) then z_GetProgramResourceiv_ovr_3_anh000001000(&program, _programInterface, index, propCount, IntPtr.Zero, count, length, ¶ms[0]) else z_GetProgramResourceiv_ovr_3_anh000001001(&program, _programInterface, index, propCount, IntPtr.Zero, count, length, IntPtr.Zero); private z_GetProgramResourceiv_ovr_4_anh000001000 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; length: IntPtr; var ¶ms: Int32)>(z_GetProgramResourceiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: array of ProgramResourceProperty; count: Int32; length: IntPtr; var ¶ms: Int32) := if (props<>nil) and (props.Length<>0) then z_GetProgramResourceiv_ovr_3(&program, _programInterface, index, propCount, props[0], count, length, ¶ms) else z_GetProgramResourceiv_ovr_3_anh000001000(&program, _programInterface, index, propCount, IntPtr.Zero, count, length, ¶ms); private z_GetProgramResourceiv_ovr_5 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; var props: ProgramResourceProperty; count: Int32; length: IntPtr; ¶ms: IntPtr)>(z_GetProgramResourceiv_adr); private z_GetProgramResourceiv_ovr_5_anh000001000 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; length: IntPtr; ¶ms: IntPtr)>(z_GetProgramResourceiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: array of ProgramResourceProperty; count: Int32; length: IntPtr; ¶ms: IntPtr) := if (props<>nil) and (props.Length<>0) then z_GetProgramResourceiv_ovr_5(&program, _programInterface, index, propCount, props[0], count, length, ¶ms) else z_GetProgramResourceiv_ovr_5_anh000001000(&program, _programInterface, index, propCount, IntPtr.Zero, count, length, ¶ms); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; var props: ProgramResourceProperty; count: Int32; var length: Int32; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetProgramResourceiv_ovr_0(&program, _programInterface, index, propCount, props, count, length, ¶ms[0]) else z_GetProgramResourceiv_ovr_0_anh000000001(&program, _programInterface, index, propCount, props, count, length, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; var props: ProgramResourceProperty; count: Int32; var length: Int32; var ¶ms: Int32) := z_GetProgramResourceiv_ovr_0(&program, _programInterface, index, propCount, props, count, length, ¶ms); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; var props: ProgramResourceProperty; count: Int32; var length: Int32; ¶ms: IntPtr) := z_GetProgramResourceiv_ovr_2(&program, _programInterface, index, propCount, props, count, length, ¶ms); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; var props: ProgramResourceProperty; count: Int32; length: IntPtr; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetProgramResourceiv_ovr_3(&program, _programInterface, index, propCount, props, count, length, ¶ms[0]) else z_GetProgramResourceiv_ovr_3_anh000000001(&program, _programInterface, index, propCount, props, count, length, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; var props: ProgramResourceProperty; count: Int32; length: IntPtr; var ¶ms: Int32) := z_GetProgramResourceiv_ovr_3(&program, _programInterface, index, propCount, props, count, length, ¶ms); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; var props: ProgramResourceProperty; count: Int32; length: IntPtr; ¶ms: IntPtr) := z_GetProgramResourceiv_ovr_5(&program, _programInterface, index, propCount, props, count, length, ¶ms); private z_GetProgramResourceiv_ovr_12 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; var length: Int32; var ¶ms: Int32)>(z_GetProgramResourceiv_adr); private z_GetProgramResourceiv_ovr_12_anh000000001 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; var length: Int32; ¶ms: IntPtr)>(z_GetProgramResourceiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; var length: Int32; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetProgramResourceiv_ovr_12(&program, _programInterface, index, propCount, props, count, length, ¶ms[0]) else z_GetProgramResourceiv_ovr_12_anh000000001(&program, _programInterface, index, propCount, props, count, length, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; var length: Int32; var ¶ms: Int32) := z_GetProgramResourceiv_ovr_12(&program, _programInterface, index, propCount, props, count, length, ¶ms); private z_GetProgramResourceiv_ovr_14 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; var length: Int32; ¶ms: IntPtr)>(z_GetProgramResourceiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; var length: Int32; ¶ms: IntPtr) := z_GetProgramResourceiv_ovr_14(&program, _programInterface, index, propCount, props, count, length, ¶ms); private z_GetProgramResourceiv_ovr_15 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; length: IntPtr; var ¶ms: Int32)>(z_GetProgramResourceiv_adr); private z_GetProgramResourceiv_ovr_15_anh000000001 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; length: IntPtr; ¶ms: IntPtr)>(z_GetProgramResourceiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; length: IntPtr; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetProgramResourceiv_ovr_15(&program, _programInterface, index, propCount, props, count, length, ¶ms[0]) else z_GetProgramResourceiv_ovr_15_anh000000001(&program, _programInterface, index, propCount, props, count, length, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; length: IntPtr; var ¶ms: Int32) := z_GetProgramResourceiv_ovr_15(&program, _programInterface, index, propCount, props, count, length, ¶ms); private z_GetProgramResourceiv_ovr_17 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; length: IntPtr; ¶ms: IntPtr)>(z_GetProgramResourceiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceiv(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; propCount: Int32; props: IntPtr; count: Int32; length: IntPtr; ¶ms: IntPtr) := z_GetProgramResourceiv_ovr_17(&program, _programInterface, index, propCount, props, count, length, ¶ms); // added in gl4.3 private z_GetProgramResourceLocation_adr := GetProcAddress('glGetProgramResourceLocation'); private z_GetProgramResourceLocation_ovr_0 := GetProcOrNil&<function(&program: gl_program; _programInterface: ProgramInterface; name: IntPtr): Int32>(z_GetProgramResourceLocation_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetProgramResourceLocation(&program: gl_program; _programInterface: ProgramInterface; name: string): Int32; begin var par_3_str_ptr: IntPtr; try par_3_str_ptr := Marshal.StringToHGlobalAnsi(name); Result := z_GetProgramResourceLocation_ovr_0(&program, _programInterface, par_3_str_ptr); finally Marshal.FreeHGlobal(par_3_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetProgramResourceLocation(&program: gl_program; _programInterface: ProgramInterface; name: IntPtr): Int32 := z_GetProgramResourceLocation_ovr_0(&program, _programInterface, name); // added in gl4.3 private z_GetProgramResourceLocationIndex_adr := GetProcAddress('glGetProgramResourceLocationIndex'); private z_GetProgramResourceLocationIndex_ovr_0 := GetProcOrNil&<function(&program: gl_program; _programInterface: ProgramInterface; name: IntPtr): Int32>(z_GetProgramResourceLocationIndex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetProgramResourceLocationIndex(&program: gl_program; _programInterface: ProgramInterface; name: string): Int32; begin var par_3_str_ptr: IntPtr; try par_3_str_ptr := Marshal.StringToHGlobalAnsi(name); Result := z_GetProgramResourceLocationIndex_ovr_0(&program, _programInterface, par_3_str_ptr); finally Marshal.FreeHGlobal(par_3_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetProgramResourceLocationIndex(&program: gl_program; _programInterface: ProgramInterface; name: IntPtr): Int32 := z_GetProgramResourceLocationIndex_ovr_0(&program, _programInterface, name); // added in gl4.3 private z_GetProgramResourceName_adr := GetProcAddress('glGetProgramResourceName'); private z_GetProgramResourceName_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; bufSize: Int32; var length: Int32; name: IntPtr)>(z_GetProgramResourceName_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceName(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; bufSize: Int32; var length: Int32; name: IntPtr) := z_GetProgramResourceName_ovr_0(&program, _programInterface, index, bufSize, length, name); private z_GetProgramResourceName_ovr_1 := GetProcOrNil&<procedure(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; bufSize: Int32; length: IntPtr; name: IntPtr)>(z_GetProgramResourceName_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramResourceName(&program: gl_program; _programInterface: ProgramInterface; index: UInt32; bufSize: Int32; length: IntPtr; name: IntPtr) := z_GetProgramResourceName_ovr_1(&program, _programInterface, index, bufSize, length, name); // added in gl4.0 private z_GetProgramStageiv_adr := GetProcAddress('glGetProgramStageiv'); private z_GetProgramStageiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; _shadertype: ShaderType; pname: ProgramStagePName; var values: Int32)>(z_GetProgramStageiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramStageiv(&program: gl_program; _shadertype: ShaderType; pname: ProgramStagePName; var values: Int32) := z_GetProgramStageiv_ovr_0(&program, _shadertype, pname, values); private z_GetProgramStageiv_ovr_1 := GetProcOrNil&<procedure(&program: gl_program; _shadertype: ShaderType; pname: ProgramStagePName; values: IntPtr)>(z_GetProgramStageiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetProgramStageiv(&program: gl_program; _shadertype: ShaderType; pname: ProgramStagePName; values: IntPtr) := z_GetProgramStageiv_ovr_1(&program, _shadertype, pname, values); // added in gl4.5 private z_GetQueryBufferObjecti64v_adr := GetProcAddress('glGetQueryBufferObjecti64v'); private z_GetQueryBufferObjecti64v_ovr_0 := GetProcOrNil&<procedure(id: gl_query; buffer: gl_buffer; pname: QueryObjectParameterName; offset: IntPtr)>(z_GetQueryBufferObjecti64v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryBufferObjecti64v(id: gl_query; buffer: gl_buffer; pname: QueryObjectParameterName; offset: IntPtr) := z_GetQueryBufferObjecti64v_ovr_0(id, buffer, pname, offset); // added in gl4.5 private z_GetQueryBufferObjectiv_adr := GetProcAddress('glGetQueryBufferObjectiv'); private z_GetQueryBufferObjectiv_ovr_0 := GetProcOrNil&<procedure(id: gl_query; buffer: gl_buffer; pname: QueryObjectParameterName; offset: IntPtr)>(z_GetQueryBufferObjectiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryBufferObjectiv(id: gl_query; buffer: gl_buffer; pname: QueryObjectParameterName; offset: IntPtr) := z_GetQueryBufferObjectiv_ovr_0(id, buffer, pname, offset); // added in gl4.5 private z_GetQueryBufferObjectui64v_adr := GetProcAddress('glGetQueryBufferObjectui64v'); private z_GetQueryBufferObjectui64v_ovr_0 := GetProcOrNil&<procedure(id: gl_query; buffer: gl_buffer; pname: QueryObjectParameterName; offset: IntPtr)>(z_GetQueryBufferObjectui64v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryBufferObjectui64v(id: gl_query; buffer: gl_buffer; pname: QueryObjectParameterName; offset: IntPtr) := z_GetQueryBufferObjectui64v_ovr_0(id, buffer, pname, offset); // added in gl4.5 private z_GetQueryBufferObjectuiv_adr := GetProcAddress('glGetQueryBufferObjectuiv'); private z_GetQueryBufferObjectuiv_ovr_0 := GetProcOrNil&<procedure(id: gl_query; buffer: gl_buffer; pname: QueryObjectParameterName; offset: IntPtr)>(z_GetQueryBufferObjectuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryBufferObjectuiv(id: gl_query; buffer: gl_buffer; pname: QueryObjectParameterName; offset: IntPtr) := z_GetQueryBufferObjectuiv_ovr_0(id, buffer, pname, offset); // added in gl4.0 private z_GetQueryIndexediv_adr := GetProcAddress('glGetQueryIndexediv'); private z_GetQueryIndexediv_ovr_0 := GetProcOrNil&<procedure(target: QueryTarget; index: UInt32; pname: QueryParameterName; var ¶ms: Int32)>(z_GetQueryIndexediv_adr); private z_GetQueryIndexediv_ovr_0_anh00001 := GetProcOrNil&<procedure(target: QueryTarget; index: UInt32; pname: QueryParameterName; ¶ms: IntPtr)>(z_GetQueryIndexediv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryIndexediv(target: QueryTarget; index: UInt32; pname: QueryParameterName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetQueryIndexediv_ovr_0(target, index, pname, ¶ms[0]) else z_GetQueryIndexediv_ovr_0_anh00001(target, index, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryIndexediv(target: QueryTarget; index: UInt32; pname: QueryParameterName; var ¶ms: Int32) := z_GetQueryIndexediv_ovr_0(target, index, pname, ¶ms); private z_GetQueryIndexediv_ovr_2 := GetProcOrNil&<procedure(target: QueryTarget; index: UInt32; pname: QueryParameterName; ¶ms: IntPtr)>(z_GetQueryIndexediv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryIndexediv(target: QueryTarget; index: UInt32; pname: QueryParameterName; ¶ms: IntPtr) := z_GetQueryIndexediv_ovr_2(target, index, pname, ¶ms); // added in gl1.5 private z_GetQueryiv_adr := GetProcAddress('glGetQueryiv'); private z_GetQueryiv_ovr_0 := GetProcOrNil&<procedure(target: QueryTarget; pname: QueryParameterName; var ¶ms: Int32)>(z_GetQueryiv_adr); private z_GetQueryiv_ovr_0_anh0001 := GetProcOrNil&<procedure(target: QueryTarget; pname: QueryParameterName; ¶ms: IntPtr)>(z_GetQueryiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryiv(target: QueryTarget; pname: QueryParameterName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetQueryiv_ovr_0(target, pname, ¶ms[0]) else z_GetQueryiv_ovr_0_anh0001(target, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryiv(target: QueryTarget; pname: QueryParameterName; var ¶ms: Int32) := z_GetQueryiv_ovr_0(target, pname, ¶ms); private z_GetQueryiv_ovr_2 := GetProcOrNil&<procedure(target: QueryTarget; pname: QueryParameterName; ¶ms: IntPtr)>(z_GetQueryiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryiv(target: QueryTarget; pname: QueryParameterName; ¶ms: IntPtr) := z_GetQueryiv_ovr_2(target, pname, ¶ms); // added in gl3.3 private z_GetQueryObjecti64v_adr := GetProcAddress('glGetQueryObjecti64v'); private z_GetQueryObjecti64v_ovr_0 := GetProcOrNil&<procedure(id: gl_query; pname: QueryObjectParameterName; var ¶ms: Int64)>(z_GetQueryObjecti64v_adr); private z_GetQueryObjecti64v_ovr_0_anh0001 := GetProcOrNil&<procedure(id: gl_query; pname: QueryObjectParameterName; ¶ms: IntPtr)>(z_GetQueryObjecti64v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryObjecti64v(id: gl_query; pname: QueryObjectParameterName; ¶ms: array of Int64) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetQueryObjecti64v_ovr_0(id, pname, ¶ms[0]) else z_GetQueryObjecti64v_ovr_0_anh0001(id, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryObjecti64v(id: gl_query; pname: QueryObjectParameterName; var ¶ms: Int64) := z_GetQueryObjecti64v_ovr_0(id, pname, ¶ms); private z_GetQueryObjecti64v_ovr_2 := GetProcOrNil&<procedure(id: gl_query; pname: QueryObjectParameterName; ¶ms: IntPtr)>(z_GetQueryObjecti64v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryObjecti64v(id: gl_query; pname: QueryObjectParameterName; ¶ms: IntPtr) := z_GetQueryObjecti64v_ovr_2(id, pname, ¶ms); // added in gl1.5 private z_GetQueryObjectiv_adr := GetProcAddress('glGetQueryObjectiv'); private z_GetQueryObjectiv_ovr_0 := GetProcOrNil&<procedure(id: gl_query; pname: QueryObjectParameterName; var ¶ms: Int32)>(z_GetQueryObjectiv_adr); private z_GetQueryObjectiv_ovr_0_anh0001 := GetProcOrNil&<procedure(id: gl_query; pname: QueryObjectParameterName; ¶ms: IntPtr)>(z_GetQueryObjectiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryObjectiv(id: gl_query; pname: QueryObjectParameterName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetQueryObjectiv_ovr_0(id, pname, ¶ms[0]) else z_GetQueryObjectiv_ovr_0_anh0001(id, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryObjectiv(id: gl_query; pname: QueryObjectParameterName; var ¶ms: Int32) := z_GetQueryObjectiv_ovr_0(id, pname, ¶ms); private z_GetQueryObjectiv_ovr_2 := GetProcOrNil&<procedure(id: gl_query; pname: QueryObjectParameterName; ¶ms: IntPtr)>(z_GetQueryObjectiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryObjectiv(id: gl_query; pname: QueryObjectParameterName; ¶ms: IntPtr) := z_GetQueryObjectiv_ovr_2(id, pname, ¶ms); // added in gl3.3 private z_GetQueryObjectui64v_adr := GetProcAddress('glGetQueryObjectui64v'); private z_GetQueryObjectui64v_ovr_0 := GetProcOrNil&<procedure(id: gl_query; pname: QueryObjectParameterName; var ¶ms: UInt64)>(z_GetQueryObjectui64v_adr); private z_GetQueryObjectui64v_ovr_0_anh0001 := GetProcOrNil&<procedure(id: gl_query; pname: QueryObjectParameterName; ¶ms: IntPtr)>(z_GetQueryObjectui64v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryObjectui64v(id: gl_query; pname: QueryObjectParameterName; ¶ms: array of UInt64) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetQueryObjectui64v_ovr_0(id, pname, ¶ms[0]) else z_GetQueryObjectui64v_ovr_0_anh0001(id, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryObjectui64v(id: gl_query; pname: QueryObjectParameterName; var ¶ms: UInt64) := z_GetQueryObjectui64v_ovr_0(id, pname, ¶ms); private z_GetQueryObjectui64v_ovr_2 := GetProcOrNil&<procedure(id: gl_query; pname: QueryObjectParameterName; ¶ms: IntPtr)>(z_GetQueryObjectui64v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryObjectui64v(id: gl_query; pname: QueryObjectParameterName; ¶ms: IntPtr) := z_GetQueryObjectui64v_ovr_2(id, pname, ¶ms); // added in gl1.5 private z_GetQueryObjectuiv_adr := GetProcAddress('glGetQueryObjectuiv'); private z_GetQueryObjectuiv_ovr_0 := GetProcOrNil&<procedure(id: gl_query; pname: QueryObjectParameterName; var ¶ms: UInt32)>(z_GetQueryObjectuiv_adr); private z_GetQueryObjectuiv_ovr_0_anh0001 := GetProcOrNil&<procedure(id: gl_query; pname: QueryObjectParameterName; ¶ms: IntPtr)>(z_GetQueryObjectuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryObjectuiv(id: gl_query; pname: QueryObjectParameterName; ¶ms: array of UInt32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetQueryObjectuiv_ovr_0(id, pname, ¶ms[0]) else z_GetQueryObjectuiv_ovr_0_anh0001(id, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryObjectuiv(id: gl_query; pname: QueryObjectParameterName; var ¶ms: UInt32) := z_GetQueryObjectuiv_ovr_0(id, pname, ¶ms); private z_GetQueryObjectuiv_ovr_2 := GetProcOrNil&<procedure(id: gl_query; pname: QueryObjectParameterName; ¶ms: IntPtr)>(z_GetQueryObjectuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetQueryObjectuiv(id: gl_query; pname: QueryObjectParameterName; ¶ms: IntPtr) := z_GetQueryObjectuiv_ovr_2(id, pname, ¶ms); // added in gl3.0 private z_GetRenderbufferParameteriv_adr := GetProcAddress('glGetRenderbufferParameteriv'); private z_GetRenderbufferParameteriv_ovr_0 := GetProcOrNil&<procedure(target: RenderbufferTarget; pname: RenderbufferParameterName; var ¶ms: Int32)>(z_GetRenderbufferParameteriv_adr); private z_GetRenderbufferParameteriv_ovr_0_anh0001 := GetProcOrNil&<procedure(target: RenderbufferTarget; pname: RenderbufferParameterName; ¶ms: IntPtr)>(z_GetRenderbufferParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetRenderbufferParameteriv(target: RenderbufferTarget; pname: RenderbufferParameterName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetRenderbufferParameteriv_ovr_0(target, pname, ¶ms[0]) else z_GetRenderbufferParameteriv_ovr_0_anh0001(target, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetRenderbufferParameteriv(target: RenderbufferTarget; pname: RenderbufferParameterName; var ¶ms: Int32) := z_GetRenderbufferParameteriv_ovr_0(target, pname, ¶ms); private z_GetRenderbufferParameteriv_ovr_2 := GetProcOrNil&<procedure(target: RenderbufferTarget; pname: RenderbufferParameterName; ¶ms: IntPtr)>(z_GetRenderbufferParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetRenderbufferParameteriv(target: RenderbufferTarget; pname: RenderbufferParameterName; ¶ms: IntPtr) := z_GetRenderbufferParameteriv_ovr_2(target, pname, ¶ms); // added in gl3.3 private z_GetSamplerParameterfv_adr := GetProcAddress('glGetSamplerParameterfv'); private z_GetSamplerParameterfv_ovr_0 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: SamplerParameterF; var ¶ms: single)>(z_GetSamplerParameterfv_adr); private z_GetSamplerParameterfv_ovr_0_anh0001 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: SamplerParameterF; ¶ms: IntPtr)>(z_GetSamplerParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSamplerParameterfv(sampler: gl_sampler; pname: SamplerParameterF; ¶ms: array of single) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetSamplerParameterfv_ovr_0(sampler, pname, ¶ms[0]) else z_GetSamplerParameterfv_ovr_0_anh0001(sampler, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSamplerParameterfv(sampler: gl_sampler; pname: SamplerParameterF; var ¶ms: single) := z_GetSamplerParameterfv_ovr_0(sampler, pname, ¶ms); private z_GetSamplerParameterfv_ovr_2 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: SamplerParameterF; ¶ms: IntPtr)>(z_GetSamplerParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSamplerParameterfv(sampler: gl_sampler; pname: SamplerParameterF; ¶ms: IntPtr) := z_GetSamplerParameterfv_ovr_2(sampler, pname, ¶ms); // added in gl3.3 private z_GetSamplerParameterIiv_adr := GetProcAddress('glGetSamplerParameterIiv'); private z_GetSamplerParameterIiv_ovr_0 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: SamplerParameterI; var ¶ms: Int32)>(z_GetSamplerParameterIiv_adr); private z_GetSamplerParameterIiv_ovr_0_anh0001 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: SamplerParameterI; ¶ms: IntPtr)>(z_GetSamplerParameterIiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSamplerParameterIiv(sampler: gl_sampler; pname: SamplerParameterI; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetSamplerParameterIiv_ovr_0(sampler, pname, ¶ms[0]) else z_GetSamplerParameterIiv_ovr_0_anh0001(sampler, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSamplerParameterIiv(sampler: gl_sampler; pname: SamplerParameterI; var ¶ms: Int32) := z_GetSamplerParameterIiv_ovr_0(sampler, pname, ¶ms); private z_GetSamplerParameterIiv_ovr_2 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: SamplerParameterI; ¶ms: IntPtr)>(z_GetSamplerParameterIiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSamplerParameterIiv(sampler: gl_sampler; pname: SamplerParameterI; ¶ms: IntPtr) := z_GetSamplerParameterIiv_ovr_2(sampler, pname, ¶ms); // added in gl3.3 private z_GetSamplerParameterIuiv_adr := GetProcAddress('glGetSamplerParameterIuiv'); private z_GetSamplerParameterIuiv_ovr_0 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: SamplerParameterI; var ¶ms: UInt32)>(z_GetSamplerParameterIuiv_adr); private z_GetSamplerParameterIuiv_ovr_0_anh0001 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: SamplerParameterI; ¶ms: IntPtr)>(z_GetSamplerParameterIuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSamplerParameterIuiv(sampler: gl_sampler; pname: SamplerParameterI; ¶ms: array of UInt32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetSamplerParameterIuiv_ovr_0(sampler, pname, ¶ms[0]) else z_GetSamplerParameterIuiv_ovr_0_anh0001(sampler, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSamplerParameterIuiv(sampler: gl_sampler; pname: SamplerParameterI; var ¶ms: UInt32) := z_GetSamplerParameterIuiv_ovr_0(sampler, pname, ¶ms); private z_GetSamplerParameterIuiv_ovr_2 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: SamplerParameterI; ¶ms: IntPtr)>(z_GetSamplerParameterIuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSamplerParameterIuiv(sampler: gl_sampler; pname: SamplerParameterI; ¶ms: IntPtr) := z_GetSamplerParameterIuiv_ovr_2(sampler, pname, ¶ms); // added in gl3.3 private z_GetSamplerParameteriv_adr := GetProcAddress('glGetSamplerParameteriv'); private z_GetSamplerParameteriv_ovr_0 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: SamplerParameterI; var ¶ms: Int32)>(z_GetSamplerParameteriv_adr); private z_GetSamplerParameteriv_ovr_0_anh0001 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: SamplerParameterI; ¶ms: IntPtr)>(z_GetSamplerParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSamplerParameteriv(sampler: gl_sampler; pname: SamplerParameterI; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetSamplerParameteriv_ovr_0(sampler, pname, ¶ms[0]) else z_GetSamplerParameteriv_ovr_0_anh0001(sampler, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSamplerParameteriv(sampler: gl_sampler; pname: SamplerParameterI; var ¶ms: Int32) := z_GetSamplerParameteriv_ovr_0(sampler, pname, ¶ms); private z_GetSamplerParameteriv_ovr_2 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: SamplerParameterI; ¶ms: IntPtr)>(z_GetSamplerParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSamplerParameteriv(sampler: gl_sampler; pname: SamplerParameterI; ¶ms: IntPtr) := z_GetSamplerParameteriv_ovr_2(sampler, pname, ¶ms); // added in gl2.0 private z_GetShaderInfoLog_adr := GetProcAddress('glGetShaderInfoLog'); private z_GetShaderInfoLog_ovr_0 := GetProcOrNil&<procedure(shader: gl_shader; bufSize: Int32; var length: Int32; infoLog: IntPtr)>(z_GetShaderInfoLog_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetShaderInfoLog(shader: gl_shader; bufSize: Int32; var length: Int32; infoLog: IntPtr) := z_GetShaderInfoLog_ovr_0(shader, bufSize, length, infoLog); private z_GetShaderInfoLog_ovr_1 := GetProcOrNil&<procedure(shader: gl_shader; bufSize: Int32; length: IntPtr; infoLog: IntPtr)>(z_GetShaderInfoLog_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetShaderInfoLog(shader: gl_shader; bufSize: Int32; length: IntPtr; infoLog: IntPtr) := z_GetShaderInfoLog_ovr_1(shader, bufSize, length, infoLog); // added in gl2.0 private z_GetShaderiv_adr := GetProcAddress('glGetShaderiv'); private z_GetShaderiv_ovr_0 := GetProcOrNil&<procedure(shader: gl_shader; pname: ShaderParameterName; var ¶ms: Int32)>(z_GetShaderiv_adr); private z_GetShaderiv_ovr_0_anh0001 := GetProcOrNil&<procedure(shader: gl_shader; pname: ShaderParameterName; ¶ms: IntPtr)>(z_GetShaderiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetShaderiv(shader: gl_shader; pname: ShaderParameterName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetShaderiv_ovr_0(shader, pname, ¶ms[0]) else z_GetShaderiv_ovr_0_anh0001(shader, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetShaderiv(shader: gl_shader; pname: ShaderParameterName; var ¶ms: Int32) := z_GetShaderiv_ovr_0(shader, pname, ¶ms); private z_GetShaderiv_ovr_2 := GetProcOrNil&<procedure(shader: gl_shader; pname: ShaderParameterName; ¶ms: IntPtr)>(z_GetShaderiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetShaderiv(shader: gl_shader; pname: ShaderParameterName; ¶ms: IntPtr) := z_GetShaderiv_ovr_2(shader, pname, ¶ms); // added in gl4.1 private z_GetShaderPrecisionFormat_adr := GetProcAddress('glGetShaderPrecisionFormat'); private z_GetShaderPrecisionFormat_ovr_0 := GetProcOrNil&<procedure(_shadertype: ShaderType; _precisiontype: PrecisionType; var range: Int32; var precision: Int32)>(z_GetShaderPrecisionFormat_adr); private z_GetShaderPrecisionFormat_ovr_0_anh00010 := GetProcOrNil&<procedure(_shadertype: ShaderType; _precisiontype: PrecisionType; range: IntPtr; var precision: Int32)>(z_GetShaderPrecisionFormat_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetShaderPrecisionFormat(_shadertype: ShaderType; _precisiontype: PrecisionType; range: array of Int32; var precision: Int32) := if (range<>nil) and (range.Length<>0) then z_GetShaderPrecisionFormat_ovr_0(_shadertype, _precisiontype, range[0], precision) else z_GetShaderPrecisionFormat_ovr_0_anh00010(_shadertype, _precisiontype, IntPtr.Zero, precision); private z_GetShaderPrecisionFormat_ovr_1 := GetProcOrNil&<procedure(_shadertype: ShaderType; _precisiontype: PrecisionType; var range: Int32; precision: IntPtr)>(z_GetShaderPrecisionFormat_adr); private z_GetShaderPrecisionFormat_ovr_1_anh00010 := GetProcOrNil&<procedure(_shadertype: ShaderType; _precisiontype: PrecisionType; range: IntPtr; precision: IntPtr)>(z_GetShaderPrecisionFormat_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetShaderPrecisionFormat(_shadertype: ShaderType; _precisiontype: PrecisionType; range: array of Int32; precision: IntPtr) := if (range<>nil) and (range.Length<>0) then z_GetShaderPrecisionFormat_ovr_1(_shadertype, _precisiontype, range[0], precision) else z_GetShaderPrecisionFormat_ovr_1_anh00010(_shadertype, _precisiontype, IntPtr.Zero, precision); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetShaderPrecisionFormat(_shadertype: ShaderType; _precisiontype: PrecisionType; var range: Int32; var precision: Int32) := z_GetShaderPrecisionFormat_ovr_0(_shadertype, _precisiontype, range, precision); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetShaderPrecisionFormat(_shadertype: ShaderType; _precisiontype: PrecisionType; var range: Int32; precision: IntPtr) := z_GetShaderPrecisionFormat_ovr_1(_shadertype, _precisiontype, range, precision); private z_GetShaderPrecisionFormat_ovr_4 := GetProcOrNil&<procedure(_shadertype: ShaderType; _precisiontype: PrecisionType; range: IntPtr; var precision: Int32)>(z_GetShaderPrecisionFormat_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetShaderPrecisionFormat(_shadertype: ShaderType; _precisiontype: PrecisionType; range: IntPtr; var precision: Int32) := z_GetShaderPrecisionFormat_ovr_4(_shadertype, _precisiontype, range, precision); private z_GetShaderPrecisionFormat_ovr_5 := GetProcOrNil&<procedure(_shadertype: ShaderType; _precisiontype: PrecisionType; range: IntPtr; precision: IntPtr)>(z_GetShaderPrecisionFormat_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetShaderPrecisionFormat(_shadertype: ShaderType; _precisiontype: PrecisionType; range: IntPtr; precision: IntPtr) := z_GetShaderPrecisionFormat_ovr_5(_shadertype, _precisiontype, range, precision); // added in gl2.0 private z_GetShaderSource_adr := GetProcAddress('glGetShaderSource'); private z_GetShaderSource_ovr_0 := GetProcOrNil&<procedure(shader: gl_shader; bufSize: Int32; var length: Int32; source: IntPtr)>(z_GetShaderSource_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetShaderSource(shader: gl_shader; bufSize: Int32; var length: Int32; source: IntPtr) := z_GetShaderSource_ovr_0(shader, bufSize, length, source); private z_GetShaderSource_ovr_1 := GetProcOrNil&<procedure(shader: gl_shader; bufSize: Int32; length: IntPtr; source: IntPtr)>(z_GetShaderSource_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetShaderSource(shader: gl_shader; bufSize: Int32; length: IntPtr; source: IntPtr) := z_GetShaderSource_ovr_1(shader, bufSize, length, source); // added in gl1.0 private z_GetString_adr := GetProcAddress('glGetString'); private z_GetString_ovr_0 := GetProcOrNil&<function(name: StringName): IntPtr>(z_GetString_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetString(name: StringName): string; begin var res_str_ptr: IntPtr; res_str_ptr := z_GetString_ovr_0(name); Result := Marshal.PtrToStringAnsi(res_str_ptr); end; // added in gl3.0 private z_GetStringi_adr := GetProcAddress('glGetStringi'); private z_GetStringi_ovr_0 := GetProcOrNil&<function(name: StringName; index: UInt32): IntPtr>(z_GetStringi_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetStringi(name: StringName; index: UInt32): string; begin var res_str_ptr: IntPtr; res_str_ptr := z_GetStringi_ovr_0(name, index); Result := Marshal.PtrToStringAnsi(res_str_ptr); end; // added in gl4.0 private z_GetSubroutineIndex_adr := GetProcAddress('glGetSubroutineIndex'); private z_GetSubroutineIndex_ovr_0 := GetProcOrNil&<function(&program: gl_program; _shadertype: ShaderType; name: IntPtr): UInt32>(z_GetSubroutineIndex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetSubroutineIndex(&program: gl_program; _shadertype: ShaderType; name: string): UInt32; begin var par_3_str_ptr: IntPtr; try par_3_str_ptr := Marshal.StringToHGlobalAnsi(name); Result := z_GetSubroutineIndex_ovr_0(&program, _shadertype, par_3_str_ptr); finally Marshal.FreeHGlobal(par_3_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetSubroutineIndex(&program: gl_program; _shadertype: ShaderType; name: IntPtr): UInt32 := z_GetSubroutineIndex_ovr_0(&program, _shadertype, name); // added in gl4.0 private z_GetSubroutineUniformLocation_adr := GetProcAddress('glGetSubroutineUniformLocation'); private z_GetSubroutineUniformLocation_ovr_0 := GetProcOrNil&<function(&program: gl_program; _shadertype: ShaderType; name: IntPtr): Int32>(z_GetSubroutineUniformLocation_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetSubroutineUniformLocation(&program: gl_program; _shadertype: ShaderType; name: string): Int32; begin var par_3_str_ptr: IntPtr; try par_3_str_ptr := Marshal.StringToHGlobalAnsi(name); Result := z_GetSubroutineUniformLocation_ovr_0(&program, _shadertype, par_3_str_ptr); finally Marshal.FreeHGlobal(par_3_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetSubroutineUniformLocation(&program: gl_program; _shadertype: ShaderType; name: IntPtr): Int32 := z_GetSubroutineUniformLocation_ovr_0(&program, _shadertype, name); // added in gl3.2 private z_GetSynciv_adr := GetProcAddress('glGetSynciv'); private z_GetSynciv_ovr_0 := GetProcOrNil&<procedure(sync: gl_sync; pname: SyncParameterName; count: Int32; var length: Int32; var values: Int32)>(z_GetSynciv_adr); private z_GetSynciv_ovr_0_anh000001 := GetProcOrNil&<procedure(sync: gl_sync; pname: SyncParameterName; count: Int32; var length: Int32; values: IntPtr)>(z_GetSynciv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSynciv(sync: gl_sync; pname: SyncParameterName; count: Int32; var length: Int32; values: array of Int32) := if (values<>nil) and (values.Length<>0) then z_GetSynciv_ovr_0(sync, pname, count, length, values[0]) else z_GetSynciv_ovr_0_anh000001(sync, pname, count, length, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSynciv(sync: gl_sync; pname: SyncParameterName; count: Int32; var length: Int32; var values: Int32) := z_GetSynciv_ovr_0(sync, pname, count, length, values); private z_GetSynciv_ovr_2 := GetProcOrNil&<procedure(sync: gl_sync; pname: SyncParameterName; count: Int32; var length: Int32; values: IntPtr)>(z_GetSynciv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSynciv(sync: gl_sync; pname: SyncParameterName; count: Int32; var length: Int32; values: IntPtr) := z_GetSynciv_ovr_2(sync, pname, count, length, values); private z_GetSynciv_ovr_3 := GetProcOrNil&<procedure(sync: gl_sync; pname: SyncParameterName; count: Int32; length: IntPtr; var values: Int32)>(z_GetSynciv_adr); private z_GetSynciv_ovr_3_anh000001 := GetProcOrNil&<procedure(sync: gl_sync; pname: SyncParameterName; count: Int32; length: IntPtr; values: IntPtr)>(z_GetSynciv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSynciv(sync: gl_sync; pname: SyncParameterName; count: Int32; length: IntPtr; values: array of Int32) := if (values<>nil) and (values.Length<>0) then z_GetSynciv_ovr_3(sync, pname, count, length, values[0]) else z_GetSynciv_ovr_3_anh000001(sync, pname, count, length, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSynciv(sync: gl_sync; pname: SyncParameterName; count: Int32; length: IntPtr; var values: Int32) := z_GetSynciv_ovr_3(sync, pname, count, length, values); private z_GetSynciv_ovr_5 := GetProcOrNil&<procedure(sync: gl_sync; pname: SyncParameterName; count: Int32; length: IntPtr; values: IntPtr)>(z_GetSynciv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetSynciv(sync: gl_sync; pname: SyncParameterName; count: Int32; length: IntPtr; values: IntPtr) := z_GetSynciv_ovr_5(sync, pname, count, length, values); // added in gl1.0 private z_GetTexImage_adr := GetProcAddress('glGetTexImage'); private z_GetTexImage_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr)>(z_GetTexImage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexImage(target: TextureTarget; level: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr) := z_GetTexImage_ovr_0(target, level, format, &type, pixels); // added in gl1.0 private z_GetTexLevelParameterfv_adr := GetProcAddress('glGetTexLevelParameterfv'); private z_GetTexLevelParameterfv_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; pname: GetTextureParameter; var ¶ms: single)>(z_GetTexLevelParameterfv_adr); private z_GetTexLevelParameterfv_ovr_0_anh00001 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTexLevelParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexLevelParameterfv(target: TextureTarget; level: Int32; pname: GetTextureParameter; ¶ms: array of single) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetTexLevelParameterfv_ovr_0(target, level, pname, ¶ms[0]) else z_GetTexLevelParameterfv_ovr_0_anh00001(target, level, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexLevelParameterfv(target: TextureTarget; level: Int32; pname: GetTextureParameter; var ¶ms: single) := z_GetTexLevelParameterfv_ovr_0(target, level, pname, ¶ms); private z_GetTexLevelParameterfv_ovr_2 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTexLevelParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexLevelParameterfv(target: TextureTarget; level: Int32; pname: GetTextureParameter; ¶ms: IntPtr) := z_GetTexLevelParameterfv_ovr_2(target, level, pname, ¶ms); // added in gl1.0 private z_GetTexLevelParameteriv_adr := GetProcAddress('glGetTexLevelParameteriv'); private z_GetTexLevelParameteriv_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; pname: GetTextureParameter; var ¶ms: Int32)>(z_GetTexLevelParameteriv_adr); private z_GetTexLevelParameteriv_ovr_0_anh00001 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTexLevelParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexLevelParameteriv(target: TextureTarget; level: Int32; pname: GetTextureParameter; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetTexLevelParameteriv_ovr_0(target, level, pname, ¶ms[0]) else z_GetTexLevelParameteriv_ovr_0_anh00001(target, level, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexLevelParameteriv(target: TextureTarget; level: Int32; pname: GetTextureParameter; var ¶ms: Int32) := z_GetTexLevelParameteriv_ovr_0(target, level, pname, ¶ms); private z_GetTexLevelParameteriv_ovr_2 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTexLevelParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexLevelParameteriv(target: TextureTarget; level: Int32; pname: GetTextureParameter; ¶ms: IntPtr) := z_GetTexLevelParameteriv_ovr_2(target, level, pname, ¶ms); // added in gl1.0 private z_GetTexParameterfv_adr := GetProcAddress('glGetTexParameterfv'); private z_GetTexParameterfv_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; pname: GetTextureParameter; var ¶ms: single)>(z_GetTexParameterfv_adr); private z_GetTexParameterfv_ovr_0_anh0001 := GetProcOrNil&<procedure(target: TextureTarget; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTexParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexParameterfv(target: TextureTarget; pname: GetTextureParameter; ¶ms: array of single) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetTexParameterfv_ovr_0(target, pname, ¶ms[0]) else z_GetTexParameterfv_ovr_0_anh0001(target, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexParameterfv(target: TextureTarget; pname: GetTextureParameter; var ¶ms: single) := z_GetTexParameterfv_ovr_0(target, pname, ¶ms); private z_GetTexParameterfv_ovr_2 := GetProcOrNil&<procedure(target: TextureTarget; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTexParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexParameterfv(target: TextureTarget; pname: GetTextureParameter; ¶ms: IntPtr) := z_GetTexParameterfv_ovr_2(target, pname, ¶ms); // added in gl3.0 private z_GetTexParameterIiv_adr := GetProcAddress('glGetTexParameterIiv'); private z_GetTexParameterIiv_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; pname: GetTextureParameter; var ¶ms: Int32)>(z_GetTexParameterIiv_adr); private z_GetTexParameterIiv_ovr_0_anh0001 := GetProcOrNil&<procedure(target: TextureTarget; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTexParameterIiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexParameterIiv(target: TextureTarget; pname: GetTextureParameter; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetTexParameterIiv_ovr_0(target, pname, ¶ms[0]) else z_GetTexParameterIiv_ovr_0_anh0001(target, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexParameterIiv(target: TextureTarget; pname: GetTextureParameter; var ¶ms: Int32) := z_GetTexParameterIiv_ovr_0(target, pname, ¶ms); private z_GetTexParameterIiv_ovr_2 := GetProcOrNil&<procedure(target: TextureTarget; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTexParameterIiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexParameterIiv(target: TextureTarget; pname: GetTextureParameter; ¶ms: IntPtr) := z_GetTexParameterIiv_ovr_2(target, pname, ¶ms); // added in gl3.0 private z_GetTexParameterIuiv_adr := GetProcAddress('glGetTexParameterIuiv'); private z_GetTexParameterIuiv_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; pname: GetTextureParameter; var ¶ms: UInt32)>(z_GetTexParameterIuiv_adr); private z_GetTexParameterIuiv_ovr_0_anh0001 := GetProcOrNil&<procedure(target: TextureTarget; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTexParameterIuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexParameterIuiv(target: TextureTarget; pname: GetTextureParameter; ¶ms: array of UInt32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetTexParameterIuiv_ovr_0(target, pname, ¶ms[0]) else z_GetTexParameterIuiv_ovr_0_anh0001(target, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexParameterIuiv(target: TextureTarget; pname: GetTextureParameter; var ¶ms: UInt32) := z_GetTexParameterIuiv_ovr_0(target, pname, ¶ms); private z_GetTexParameterIuiv_ovr_2 := GetProcOrNil&<procedure(target: TextureTarget; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTexParameterIuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexParameterIuiv(target: TextureTarget; pname: GetTextureParameter; ¶ms: IntPtr) := z_GetTexParameterIuiv_ovr_2(target, pname, ¶ms); // added in gl1.0 private z_GetTexParameteriv_adr := GetProcAddress('glGetTexParameteriv'); private z_GetTexParameteriv_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; pname: GetTextureParameter; var ¶ms: Int32)>(z_GetTexParameteriv_adr); private z_GetTexParameteriv_ovr_0_anh0001 := GetProcOrNil&<procedure(target: TextureTarget; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTexParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexParameteriv(target: TextureTarget; pname: GetTextureParameter; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetTexParameteriv_ovr_0(target, pname, ¶ms[0]) else z_GetTexParameteriv_ovr_0_anh0001(target, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexParameteriv(target: TextureTarget; pname: GetTextureParameter; var ¶ms: Int32) := z_GetTexParameteriv_ovr_0(target, pname, ¶ms); private z_GetTexParameteriv_ovr_2 := GetProcOrNil&<procedure(target: TextureTarget; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTexParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTexParameteriv(target: TextureTarget; pname: GetTextureParameter; ¶ms: IntPtr) := z_GetTexParameteriv_ovr_2(target, pname, ¶ms); // added in gl4.5 private z_GetTextureImage_adr := GetProcAddress('glGetTextureImage'); private z_GetTextureImage_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; format: PixelFormat; &type: PixelType; bufSize: Int32; pixels: IntPtr)>(z_GetTextureImage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureImage(texture: gl_texture; level: Int32; format: PixelFormat; &type: PixelType; bufSize: Int32; pixels: IntPtr) := z_GetTextureImage_ovr_0(texture, level, format, &type, bufSize, pixels); // added in gl4.5 private z_GetTextureLevelParameterfv_adr := GetProcAddress('glGetTextureLevelParameterfv'); private z_GetTextureLevelParameterfv_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; pname: GetTextureParameter; var ¶ms: single)>(z_GetTextureLevelParameterfv_adr); private z_GetTextureLevelParameterfv_ovr_0_anh00001 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTextureLevelParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureLevelParameterfv(texture: gl_texture; level: Int32; pname: GetTextureParameter; ¶ms: array of single) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetTextureLevelParameterfv_ovr_0(texture, level, pname, ¶ms[0]) else z_GetTextureLevelParameterfv_ovr_0_anh00001(texture, level, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureLevelParameterfv(texture: gl_texture; level: Int32; pname: GetTextureParameter; var ¶ms: single) := z_GetTextureLevelParameterfv_ovr_0(texture, level, pname, ¶ms); private z_GetTextureLevelParameterfv_ovr_2 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTextureLevelParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureLevelParameterfv(texture: gl_texture; level: Int32; pname: GetTextureParameter; ¶ms: IntPtr) := z_GetTextureLevelParameterfv_ovr_2(texture, level, pname, ¶ms); // added in gl4.5 private z_GetTextureLevelParameteriv_adr := GetProcAddress('glGetTextureLevelParameteriv'); private z_GetTextureLevelParameteriv_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; pname: GetTextureParameter; var ¶ms: Int32)>(z_GetTextureLevelParameteriv_adr); private z_GetTextureLevelParameteriv_ovr_0_anh00001 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTextureLevelParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureLevelParameteriv(texture: gl_texture; level: Int32; pname: GetTextureParameter; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetTextureLevelParameteriv_ovr_0(texture, level, pname, ¶ms[0]) else z_GetTextureLevelParameteriv_ovr_0_anh00001(texture, level, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureLevelParameteriv(texture: gl_texture; level: Int32; pname: GetTextureParameter; var ¶ms: Int32) := z_GetTextureLevelParameteriv_ovr_0(texture, level, pname, ¶ms); private z_GetTextureLevelParameteriv_ovr_2 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTextureLevelParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureLevelParameteriv(texture: gl_texture; level: Int32; pname: GetTextureParameter; ¶ms: IntPtr) := z_GetTextureLevelParameteriv_ovr_2(texture, level, pname, ¶ms); // added in gl4.5 private z_GetTextureParameterfv_adr := GetProcAddress('glGetTextureParameterfv'); private z_GetTextureParameterfv_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; pname: GetTextureParameter; var ¶ms: single)>(z_GetTextureParameterfv_adr); private z_GetTextureParameterfv_ovr_0_anh0001 := GetProcOrNil&<procedure(texture: gl_texture; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTextureParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureParameterfv(texture: gl_texture; pname: GetTextureParameter; ¶ms: array of single) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetTextureParameterfv_ovr_0(texture, pname, ¶ms[0]) else z_GetTextureParameterfv_ovr_0_anh0001(texture, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureParameterfv(texture: gl_texture; pname: GetTextureParameter; var ¶ms: single) := z_GetTextureParameterfv_ovr_0(texture, pname, ¶ms); private z_GetTextureParameterfv_ovr_2 := GetProcOrNil&<procedure(texture: gl_texture; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTextureParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureParameterfv(texture: gl_texture; pname: GetTextureParameter; ¶ms: IntPtr) := z_GetTextureParameterfv_ovr_2(texture, pname, ¶ms); // added in gl4.5 private z_GetTextureParameterIiv_adr := GetProcAddress('glGetTextureParameterIiv'); private z_GetTextureParameterIiv_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; pname: GetTextureParameter; var ¶ms: Int32)>(z_GetTextureParameterIiv_adr); private z_GetTextureParameterIiv_ovr_0_anh0001 := GetProcOrNil&<procedure(texture: gl_texture; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTextureParameterIiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureParameterIiv(texture: gl_texture; pname: GetTextureParameter; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetTextureParameterIiv_ovr_0(texture, pname, ¶ms[0]) else z_GetTextureParameterIiv_ovr_0_anh0001(texture, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureParameterIiv(texture: gl_texture; pname: GetTextureParameter; var ¶ms: Int32) := z_GetTextureParameterIiv_ovr_0(texture, pname, ¶ms); private z_GetTextureParameterIiv_ovr_2 := GetProcOrNil&<procedure(texture: gl_texture; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTextureParameterIiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureParameterIiv(texture: gl_texture; pname: GetTextureParameter; ¶ms: IntPtr) := z_GetTextureParameterIiv_ovr_2(texture, pname, ¶ms); // added in gl4.5 private z_GetTextureParameterIuiv_adr := GetProcAddress('glGetTextureParameterIuiv'); private z_GetTextureParameterIuiv_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; pname: GetTextureParameter; var ¶ms: UInt32)>(z_GetTextureParameterIuiv_adr); private z_GetTextureParameterIuiv_ovr_0_anh0001 := GetProcOrNil&<procedure(texture: gl_texture; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTextureParameterIuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureParameterIuiv(texture: gl_texture; pname: GetTextureParameter; ¶ms: array of UInt32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetTextureParameterIuiv_ovr_0(texture, pname, ¶ms[0]) else z_GetTextureParameterIuiv_ovr_0_anh0001(texture, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureParameterIuiv(texture: gl_texture; pname: GetTextureParameter; var ¶ms: UInt32) := z_GetTextureParameterIuiv_ovr_0(texture, pname, ¶ms); private z_GetTextureParameterIuiv_ovr_2 := GetProcOrNil&<procedure(texture: gl_texture; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTextureParameterIuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureParameterIuiv(texture: gl_texture; pname: GetTextureParameter; ¶ms: IntPtr) := z_GetTextureParameterIuiv_ovr_2(texture, pname, ¶ms); // added in gl4.5 private z_GetTextureParameteriv_adr := GetProcAddress('glGetTextureParameteriv'); private z_GetTextureParameteriv_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; pname: GetTextureParameter; var ¶ms: Int32)>(z_GetTextureParameteriv_adr); private z_GetTextureParameteriv_ovr_0_anh0001 := GetProcOrNil&<procedure(texture: gl_texture; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTextureParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureParameteriv(texture: gl_texture; pname: GetTextureParameter; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetTextureParameteriv_ovr_0(texture, pname, ¶ms[0]) else z_GetTextureParameteriv_ovr_0_anh0001(texture, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureParameteriv(texture: gl_texture; pname: GetTextureParameter; var ¶ms: Int32) := z_GetTextureParameteriv_ovr_0(texture, pname, ¶ms); private z_GetTextureParameteriv_ovr_2 := GetProcOrNil&<procedure(texture: gl_texture; pname: GetTextureParameter; ¶ms: IntPtr)>(z_GetTextureParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureParameteriv(texture: gl_texture; pname: GetTextureParameter; ¶ms: IntPtr) := z_GetTextureParameteriv_ovr_2(texture, pname, ¶ms); // added in gl4.5 private z_GetTextureSubImage_adr := GetProcAddress('glGetTextureSubImage'); private z_GetTextureSubImage_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32; format: PixelFormat; &type: PixelType; bufSize: Int32; pixels: IntPtr)>(z_GetTextureSubImage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTextureSubImage(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32; format: PixelFormat; &type: PixelType; bufSize: Int32; pixels: IntPtr) := z_GetTextureSubImage_ovr_0(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, &type, bufSize, pixels); // added in gl4.5 private z_GetTransformFeedbacki_v_adr := GetProcAddress('glGetTransformFeedbacki_v'); private z_GetTransformFeedbacki_v_ovr_0 := GetProcOrNil&<procedure(xfb: gl_transform_feedback; pname: TransformFeedbackPName; index: UInt32; var param: Int32)>(z_GetTransformFeedbacki_v_adr); private z_GetTransformFeedbacki_v_ovr_0_anh00001 := GetProcOrNil&<procedure(xfb: gl_transform_feedback; pname: TransformFeedbackPName; index: UInt32; param: IntPtr)>(z_GetTransformFeedbacki_v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbacki_v(xfb: gl_transform_feedback; pname: TransformFeedbackPName; index: UInt32; param: array of Int32) := if (param<>nil) and (param.Length<>0) then z_GetTransformFeedbacki_v_ovr_0(xfb, pname, index, param[0]) else z_GetTransformFeedbacki_v_ovr_0_anh00001(xfb, pname, index, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbacki_v(xfb: gl_transform_feedback; pname: TransformFeedbackPName; index: UInt32; var param: Int32) := z_GetTransformFeedbacki_v_ovr_0(xfb, pname, index, param); private z_GetTransformFeedbacki_v_ovr_2 := GetProcOrNil&<procedure(xfb: gl_transform_feedback; pname: TransformFeedbackPName; index: UInt32; param: IntPtr)>(z_GetTransformFeedbacki_v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbacki_v(xfb: gl_transform_feedback; pname: TransformFeedbackPName; index: UInt32; param: IntPtr) := z_GetTransformFeedbacki_v_ovr_2(xfb, pname, index, param); // added in gl4.5 private z_GetTransformFeedbacki64_v_adr := GetProcAddress('glGetTransformFeedbacki64_v'); private z_GetTransformFeedbacki64_v_ovr_0 := GetProcOrNil&<procedure(xfb: gl_transform_feedback; pname: TransformFeedbackPName; index: UInt32; var param: Int64)>(z_GetTransformFeedbacki64_v_adr); private z_GetTransformFeedbacki64_v_ovr_0_anh00001 := GetProcOrNil&<procedure(xfb: gl_transform_feedback; pname: TransformFeedbackPName; index: UInt32; param: IntPtr)>(z_GetTransformFeedbacki64_v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbacki64_v(xfb: gl_transform_feedback; pname: TransformFeedbackPName; index: UInt32; param: array of Int64) := if (param<>nil) and (param.Length<>0) then z_GetTransformFeedbacki64_v_ovr_0(xfb, pname, index, param[0]) else z_GetTransformFeedbacki64_v_ovr_0_anh00001(xfb, pname, index, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbacki64_v(xfb: gl_transform_feedback; pname: TransformFeedbackPName; index: UInt32; var param: Int64) := z_GetTransformFeedbacki64_v_ovr_0(xfb, pname, index, param); private z_GetTransformFeedbacki64_v_ovr_2 := GetProcOrNil&<procedure(xfb: gl_transform_feedback; pname: TransformFeedbackPName; index: UInt32; param: IntPtr)>(z_GetTransformFeedbacki64_v_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbacki64_v(xfb: gl_transform_feedback; pname: TransformFeedbackPName; index: UInt32; param: IntPtr) := z_GetTransformFeedbacki64_v_ovr_2(xfb, pname, index, param); // added in gl4.5 private z_GetTransformFeedbackiv_adr := GetProcAddress('glGetTransformFeedbackiv'); private z_GetTransformFeedbackiv_ovr_0 := GetProcOrNil&<procedure(xfb: gl_transform_feedback; pname: TransformFeedbackPName; var param: Int32)>(z_GetTransformFeedbackiv_adr); private z_GetTransformFeedbackiv_ovr_0_anh0001 := GetProcOrNil&<procedure(xfb: gl_transform_feedback; pname: TransformFeedbackPName; param: IntPtr)>(z_GetTransformFeedbackiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbackiv(xfb: gl_transform_feedback; pname: TransformFeedbackPName; param: array of Int32) := if (param<>nil) and (param.Length<>0) then z_GetTransformFeedbackiv_ovr_0(xfb, pname, param[0]) else z_GetTransformFeedbackiv_ovr_0_anh0001(xfb, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbackiv(xfb: gl_transform_feedback; pname: TransformFeedbackPName; var param: Int32) := z_GetTransformFeedbackiv_ovr_0(xfb, pname, param); private z_GetTransformFeedbackiv_ovr_2 := GetProcOrNil&<procedure(xfb: gl_transform_feedback; pname: TransformFeedbackPName; param: IntPtr)>(z_GetTransformFeedbackiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbackiv(xfb: gl_transform_feedback; pname: TransformFeedbackPName; param: IntPtr) := z_GetTransformFeedbackiv_ovr_2(xfb, pname, param); // added in gl3.0 private z_GetTransformFeedbackVarying_adr := GetProcAddress('glGetTransformFeedbackVarying'); private z_GetTransformFeedbackVarying_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; var size: Int32; var &type: AttributeType; name: IntPtr)>(z_GetTransformFeedbackVarying_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbackVarying(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; var size: Int32; var &type: AttributeType; name: IntPtr) := z_GetTransformFeedbackVarying_ovr_0(&program, index, bufSize, length, size, &type, name); private z_GetTransformFeedbackVarying_ovr_1 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; var size: Int32; &type: IntPtr; name: IntPtr)>(z_GetTransformFeedbackVarying_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbackVarying(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; var size: Int32; &type: IntPtr; name: IntPtr) := z_GetTransformFeedbackVarying_ovr_1(&program, index, bufSize, length, size, &type, name); private z_GetTransformFeedbackVarying_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; size: IntPtr; var &type: AttributeType; name: IntPtr)>(z_GetTransformFeedbackVarying_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbackVarying(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; size: IntPtr; var &type: AttributeType; name: IntPtr) := z_GetTransformFeedbackVarying_ovr_2(&program, index, bufSize, length, size, &type, name); private z_GetTransformFeedbackVarying_ovr_3 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; size: IntPtr; &type: IntPtr; name: IntPtr)>(z_GetTransformFeedbackVarying_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbackVarying(&program: gl_program; index: UInt32; bufSize: Int32; var length: Int32; size: IntPtr; &type: IntPtr; name: IntPtr) := z_GetTransformFeedbackVarying_ovr_3(&program, index, bufSize, length, size, &type, name); private z_GetTransformFeedbackVarying_ovr_4 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; var size: Int32; var &type: AttributeType; name: IntPtr)>(z_GetTransformFeedbackVarying_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbackVarying(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; var size: Int32; var &type: AttributeType; name: IntPtr) := z_GetTransformFeedbackVarying_ovr_4(&program, index, bufSize, length, size, &type, name); private z_GetTransformFeedbackVarying_ovr_5 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; var size: Int32; &type: IntPtr; name: IntPtr)>(z_GetTransformFeedbackVarying_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbackVarying(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; var size: Int32; &type: IntPtr; name: IntPtr) := z_GetTransformFeedbackVarying_ovr_5(&program, index, bufSize, length, size, &type, name); private z_GetTransformFeedbackVarying_ovr_6 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; size: IntPtr; var &type: AttributeType; name: IntPtr)>(z_GetTransformFeedbackVarying_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbackVarying(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; size: IntPtr; var &type: AttributeType; name: IntPtr) := z_GetTransformFeedbackVarying_ovr_6(&program, index, bufSize, length, size, &type, name); private z_GetTransformFeedbackVarying_ovr_7 := GetProcOrNil&<procedure(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; size: IntPtr; &type: IntPtr; name: IntPtr)>(z_GetTransformFeedbackVarying_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetTransformFeedbackVarying(&program: gl_program; index: UInt32; bufSize: Int32; length: IntPtr; size: IntPtr; &type: IntPtr; name: IntPtr) := z_GetTransformFeedbackVarying_ovr_7(&program, index, bufSize, length, size, &type, name); // added in gl3.1 private z_GetUniformBlockIndex_adr := GetProcAddress('glGetUniformBlockIndex'); private z_GetUniformBlockIndex_ovr_0 := GetProcOrNil&<function(&program: gl_program; uniformBlockName: IntPtr): UInt32>(z_GetUniformBlockIndex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetUniformBlockIndex(&program: gl_program; uniformBlockName: string): UInt32; begin var par_2_str_ptr: IntPtr; try par_2_str_ptr := Marshal.StringToHGlobalAnsi(uniformBlockName); Result := z_GetUniformBlockIndex_ovr_0(&program, par_2_str_ptr); finally Marshal.FreeHGlobal(par_2_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetUniformBlockIndex(&program: gl_program; uniformBlockName: IntPtr): UInt32 := z_GetUniformBlockIndex_ovr_0(&program, uniformBlockName); // added in gl4.0 private z_GetUniformdv_adr := GetProcAddress('glGetUniformdv'); private z_GetUniformdv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; var ¶ms: real)>(z_GetUniformdv_adr); private z_GetUniformdv_ovr_0_anh0001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; ¶ms: IntPtr)>(z_GetUniformdv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformdv(&program: gl_program; location: Int32; ¶ms: array of real) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetUniformdv_ovr_0(&program, location, ¶ms[0]) else z_GetUniformdv_ovr_0_anh0001(&program, location, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformdv(&program: gl_program; location: Int32; var ¶ms: real) := z_GetUniformdv_ovr_0(&program, location, ¶ms); private z_GetUniformdv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; ¶ms: IntPtr)>(z_GetUniformdv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformdv(&program: gl_program; location: Int32; ¶ms: IntPtr) := z_GetUniformdv_ovr_2(&program, location, ¶ms); // added in gl2.0 private z_GetUniformfv_adr := GetProcAddress('glGetUniformfv'); private z_GetUniformfv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; var ¶ms: single)>(z_GetUniformfv_adr); private z_GetUniformfv_ovr_0_anh0001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; ¶ms: IntPtr)>(z_GetUniformfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformfv(&program: gl_program; location: Int32; ¶ms: array of single) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetUniformfv_ovr_0(&program, location, ¶ms[0]) else z_GetUniformfv_ovr_0_anh0001(&program, location, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformfv(&program: gl_program; location: Int32; var ¶ms: single) := z_GetUniformfv_ovr_0(&program, location, ¶ms); private z_GetUniformfv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; ¶ms: IntPtr)>(z_GetUniformfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformfv(&program: gl_program; location: Int32; ¶ms: IntPtr) := z_GetUniformfv_ovr_2(&program, location, ¶ms); // added in gl3.1 private z_GetUniformIndices_adr := GetProcAddress('glGetUniformIndices'); private z_GetUniformIndices_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; var uniformNames: IntPtr; var uniformIndices: UInt32)>(z_GetUniformIndices_adr); private z_GetUniformIndices_ovr_0_anh00010 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformNames: IntPtr; var uniformIndices: UInt32)>(z_GetUniformIndices_adr); private z_GetUniformIndices_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; var uniformNames: IntPtr; uniformIndices: IntPtr)>(z_GetUniformIndices_adr); private z_GetUniformIndices_ovr_0_anh00011 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformNames: IntPtr; uniformIndices: IntPtr)>(z_GetUniformIndices_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformIndices(&program: gl_program; uniformCount: Int32; uniformNames: array of string; uniformIndices: array of UInt32); begin var par_3_str_ptr: array of IntPtr; try par_3_str_ptr := uniformNames?.ConvertAll(arr_el1->Marshal.StringToHGlobalAnsi(arr_el1)); if (par_3_str_ptr<>nil) and (par_3_str_ptr.Length<>0) then if (uniformIndices<>nil) and (uniformIndices.Length<>0) then z_GetUniformIndices_ovr_0(&program, uniformCount, par_3_str_ptr[0], uniformIndices[0]) else z_GetUniformIndices_ovr_0_anh00001(&program, uniformCount, par_3_str_ptr[0], IntPtr.Zero) else if (uniformIndices<>nil) and (uniformIndices.Length<>0) then z_GetUniformIndices_ovr_0_anh00010(&program, uniformCount, IntPtr.Zero, uniformIndices[0]) else z_GetUniformIndices_ovr_0_anh00011(&program, uniformCount, IntPtr.Zero, IntPtr.Zero); finally foreach var arr_el1 in par_3_str_ptr do Marshal.FreeHGlobal(arr_el1); end; end; private z_GetUniformIndices_ovr_1_anh00010 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformNames: IntPtr; var uniformIndices: UInt32)>(z_GetUniformIndices_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformIndices(&program: gl_program; uniformCount: Int32; uniformNames: array of string; var uniformIndices: UInt32); begin var par_3_str_ptr: array of IntPtr; try par_3_str_ptr := uniformNames?.ConvertAll(arr_el1->Marshal.StringToHGlobalAnsi(arr_el1)); if (par_3_str_ptr<>nil) and (par_3_str_ptr.Length<>0) then z_GetUniformIndices_ovr_0(&program, uniformCount, par_3_str_ptr[0], uniformIndices) else z_GetUniformIndices_ovr_0_anh00010(&program, uniformCount, IntPtr.Zero, uniformIndices); finally foreach var arr_el1 in par_3_str_ptr do Marshal.FreeHGlobal(arr_el1); end; end; private z_GetUniformIndices_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; var uniformNames: IntPtr; uniformIndices: IntPtr)>(z_GetUniformIndices_adr); private z_GetUniformIndices_ovr_2_anh00010 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformNames: IntPtr; uniformIndices: IntPtr)>(z_GetUniformIndices_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformIndices(&program: gl_program; uniformCount: Int32; uniformNames: array of string; uniformIndices: IntPtr); begin var par_3_str_ptr: array of IntPtr; try par_3_str_ptr := uniformNames?.ConvertAll(arr_el1->Marshal.StringToHGlobalAnsi(arr_el1)); if (par_3_str_ptr<>nil) and (par_3_str_ptr.Length<>0) then z_GetUniformIndices_ovr_2(&program, uniformCount, par_3_str_ptr[0], uniformIndices) else z_GetUniformIndices_ovr_2_anh00010(&program, uniformCount, IntPtr.Zero, uniformIndices); finally foreach var arr_el1 in par_3_str_ptr do Marshal.FreeHGlobal(arr_el1); end; end; private z_GetUniformIndices_ovr_3_anh00010 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformNames: IntPtr; var uniformIndices: UInt32)>(z_GetUniformIndices_adr); private z_GetUniformIndices_ovr_3_anh00011 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformNames: IntPtr; uniformIndices: IntPtr)>(z_GetUniformIndices_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformIndices(&program: gl_program; uniformCount: Int32; uniformNames: array of IntPtr; uniformIndices: array of UInt32) := if (uniformNames<>nil) and (uniformNames.Length<>0) then if (uniformIndices<>nil) and (uniformIndices.Length<>0) then z_GetUniformIndices_ovr_0(&program, uniformCount, uniformNames[0], uniformIndices[0]) else z_GetUniformIndices_ovr_0_anh00001(&program, uniformCount, uniformNames[0], IntPtr.Zero) else if (uniformIndices<>nil) and (uniformIndices.Length<>0) then z_GetUniformIndices_ovr_0_anh00010(&program, uniformCount, IntPtr.Zero, uniformIndices[0]) else z_GetUniformIndices_ovr_0_anh00011(&program, uniformCount, IntPtr.Zero, IntPtr.Zero); private z_GetUniformIndices_ovr_4_anh00010 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformNames: IntPtr; var uniformIndices: UInt32)>(z_GetUniformIndices_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformIndices(&program: gl_program; uniformCount: Int32; uniformNames: array of IntPtr; var uniformIndices: UInt32) := if (uniformNames<>nil) and (uniformNames.Length<>0) then z_GetUniformIndices_ovr_0(&program, uniformCount, uniformNames[0], uniformIndices) else z_GetUniformIndices_ovr_0_anh00010(&program, uniformCount, IntPtr.Zero, uniformIndices); private z_GetUniformIndices_ovr_5_anh00010 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformNames: IntPtr; uniformIndices: IntPtr)>(z_GetUniformIndices_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformIndices(&program: gl_program; uniformCount: Int32; uniformNames: array of IntPtr; uniformIndices: IntPtr) := if (uniformNames<>nil) and (uniformNames.Length<>0) then z_GetUniformIndices_ovr_2(&program, uniformCount, uniformNames[0], uniformIndices) else z_GetUniformIndices_ovr_2_anh00010(&program, uniformCount, IntPtr.Zero, uniformIndices); private z_GetUniformIndices_ovr_6 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformNames: IntPtr; var uniformIndices: UInt32)>(z_GetUniformIndices_adr); private z_GetUniformIndices_ovr_6_anh00001 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformNames: IntPtr; uniformIndices: IntPtr)>(z_GetUniformIndices_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformIndices(&program: gl_program; uniformCount: Int32; uniformNames: IntPtr; uniformIndices: array of UInt32) := if (uniformIndices<>nil) and (uniformIndices.Length<>0) then z_GetUniformIndices_ovr_6(&program, uniformCount, uniformNames, uniformIndices[0]) else z_GetUniformIndices_ovr_6_anh00001(&program, uniformCount, uniformNames, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformIndices(&program: gl_program; uniformCount: Int32; uniformNames: IntPtr; var uniformIndices: UInt32) := z_GetUniformIndices_ovr_6(&program, uniformCount, uniformNames, uniformIndices); private z_GetUniformIndices_ovr_8 := GetProcOrNil&<procedure(&program: gl_program; uniformCount: Int32; uniformNames: IntPtr; uniformIndices: IntPtr)>(z_GetUniformIndices_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformIndices(&program: gl_program; uniformCount: Int32; uniformNames: IntPtr; uniformIndices: IntPtr) := z_GetUniformIndices_ovr_8(&program, uniformCount, uniformNames, uniformIndices); // added in gl2.0 private z_GetUniformiv_adr := GetProcAddress('glGetUniformiv'); private z_GetUniformiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; var ¶ms: Int32)>(z_GetUniformiv_adr); private z_GetUniformiv_ovr_0_anh0001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; ¶ms: IntPtr)>(z_GetUniformiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformiv(&program: gl_program; location: Int32; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetUniformiv_ovr_0(&program, location, ¶ms[0]) else z_GetUniformiv_ovr_0_anh0001(&program, location, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformiv(&program: gl_program; location: Int32; var ¶ms: Int32) := z_GetUniformiv_ovr_0(&program, location, ¶ms); private z_GetUniformiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; ¶ms: IntPtr)>(z_GetUniformiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformiv(&program: gl_program; location: Int32; ¶ms: IntPtr) := z_GetUniformiv_ovr_2(&program, location, ¶ms); // added in gl2.0 private z_GetUniformLocation_adr := GetProcAddress('glGetUniformLocation'); private z_GetUniformLocation_ovr_0 := GetProcOrNil&<function(&program: gl_program; name: IntPtr): Int32>(z_GetUniformLocation_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetUniformLocation(&program: gl_program; name: string): Int32; begin var par_2_str_ptr: IntPtr; try par_2_str_ptr := Marshal.StringToHGlobalAnsi(name); Result := z_GetUniformLocation_ovr_0(&program, par_2_str_ptr); finally Marshal.FreeHGlobal(par_2_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] function GetUniformLocation(&program: gl_program; name: IntPtr): Int32 := z_GetUniformLocation_ovr_0(&program, name); // added in gl4.0 private z_GetUniformSubroutineuiv_adr := GetProcAddress('glGetUniformSubroutineuiv'); private z_GetUniformSubroutineuiv_ovr_0 := GetProcOrNil&<procedure(_shadertype: ShaderType; location: Int32; var ¶ms: UInt32)>(z_GetUniformSubroutineuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformSubroutineuiv(_shadertype: ShaderType; location: Int32; var ¶ms: UInt32) := z_GetUniformSubroutineuiv_ovr_0(_shadertype, location, ¶ms); private z_GetUniformSubroutineuiv_ovr_1 := GetProcOrNil&<procedure(_shadertype: ShaderType; location: Int32; ¶ms: IntPtr)>(z_GetUniformSubroutineuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformSubroutineuiv(_shadertype: ShaderType; location: Int32; ¶ms: IntPtr) := z_GetUniformSubroutineuiv_ovr_1(_shadertype, location, ¶ms); // added in gl3.0 private z_GetUniformuiv_adr := GetProcAddress('glGetUniformuiv'); private z_GetUniformuiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; var ¶ms: UInt32)>(z_GetUniformuiv_adr); private z_GetUniformuiv_ovr_0_anh0001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; ¶ms: IntPtr)>(z_GetUniformuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformuiv(&program: gl_program; location: Int32; ¶ms: array of UInt32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetUniformuiv_ovr_0(&program, location, ¶ms[0]) else z_GetUniformuiv_ovr_0_anh0001(&program, location, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformuiv(&program: gl_program; location: Int32; var ¶ms: UInt32) := z_GetUniformuiv_ovr_0(&program, location, ¶ms); private z_GetUniformuiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; ¶ms: IntPtr)>(z_GetUniformuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetUniformuiv(&program: gl_program; location: Int32; ¶ms: IntPtr) := z_GetUniformuiv_ovr_2(&program, location, ¶ms); // added in gl4.5 private z_GetVertexArrayIndexed64iv_adr := GetProcAddress('glGetVertexArrayIndexed64iv'); private z_GetVertexArrayIndexed64iv_ovr_0 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; index: UInt32; pname: VertexArrayPName; var param: Int64)>(z_GetVertexArrayIndexed64iv_adr); private z_GetVertexArrayIndexed64iv_ovr_0_anh00001 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; index: UInt32; pname: VertexArrayPName; param: IntPtr)>(z_GetVertexArrayIndexed64iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexArrayIndexed64iv(vaobj: gl_vertex_array; index: UInt32; pname: VertexArrayPName; param: array of Int64) := if (param<>nil) and (param.Length<>0) then z_GetVertexArrayIndexed64iv_ovr_0(vaobj, index, pname, param[0]) else z_GetVertexArrayIndexed64iv_ovr_0_anh00001(vaobj, index, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexArrayIndexed64iv(vaobj: gl_vertex_array; index: UInt32; pname: VertexArrayPName; var param: Int64) := z_GetVertexArrayIndexed64iv_ovr_0(vaobj, index, pname, param); private z_GetVertexArrayIndexed64iv_ovr_2 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; index: UInt32; pname: VertexArrayPName; param: IntPtr)>(z_GetVertexArrayIndexed64iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexArrayIndexed64iv(vaobj: gl_vertex_array; index: UInt32; pname: VertexArrayPName; param: IntPtr) := z_GetVertexArrayIndexed64iv_ovr_2(vaobj, index, pname, param); // added in gl4.5 private z_GetVertexArrayIndexediv_adr := GetProcAddress('glGetVertexArrayIndexediv'); private z_GetVertexArrayIndexediv_ovr_0 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; index: UInt32; pname: VertexArrayPName; var param: Int32)>(z_GetVertexArrayIndexediv_adr); private z_GetVertexArrayIndexediv_ovr_0_anh00001 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; index: UInt32; pname: VertexArrayPName; param: IntPtr)>(z_GetVertexArrayIndexediv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexArrayIndexediv(vaobj: gl_vertex_array; index: UInt32; pname: VertexArrayPName; param: array of Int32) := if (param<>nil) and (param.Length<>0) then z_GetVertexArrayIndexediv_ovr_0(vaobj, index, pname, param[0]) else z_GetVertexArrayIndexediv_ovr_0_anh00001(vaobj, index, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexArrayIndexediv(vaobj: gl_vertex_array; index: UInt32; pname: VertexArrayPName; var param: Int32) := z_GetVertexArrayIndexediv_ovr_0(vaobj, index, pname, param); private z_GetVertexArrayIndexediv_ovr_2 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; index: UInt32; pname: VertexArrayPName; param: IntPtr)>(z_GetVertexArrayIndexediv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexArrayIndexediv(vaobj: gl_vertex_array; index: UInt32; pname: VertexArrayPName; param: IntPtr) := z_GetVertexArrayIndexediv_ovr_2(vaobj, index, pname, param); // added in gl4.5 private z_GetVertexArrayiv_adr := GetProcAddress('glGetVertexArrayiv'); private z_GetVertexArrayiv_ovr_0 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; pname: VertexArrayPName; var param: Int32)>(z_GetVertexArrayiv_adr); private z_GetVertexArrayiv_ovr_0_anh0001 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; pname: VertexArrayPName; param: IntPtr)>(z_GetVertexArrayiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexArrayiv(vaobj: gl_vertex_array; pname: VertexArrayPName; param: array of Int32) := if (param<>nil) and (param.Length<>0) then z_GetVertexArrayiv_ovr_0(vaobj, pname, param[0]) else z_GetVertexArrayiv_ovr_0_anh0001(vaobj, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexArrayiv(vaobj: gl_vertex_array; pname: VertexArrayPName; var param: Int32) := z_GetVertexArrayiv_ovr_0(vaobj, pname, param); private z_GetVertexArrayiv_ovr_2 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; pname: VertexArrayPName; param: IntPtr)>(z_GetVertexArrayiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexArrayiv(vaobj: gl_vertex_array; pname: VertexArrayPName; param: IntPtr) := z_GetVertexArrayiv_ovr_2(vaobj, pname, param); // added in gl2.0 private z_GetVertexAttribdv_adr := GetProcAddress('glGetVertexAttribdv'); private z_GetVertexAttribdv_ovr_0 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribPropertyARB; var ¶ms: real)>(z_GetVertexAttribdv_adr); private z_GetVertexAttribdv_ovr_0_anh0001 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribPropertyARB; ¶ms: IntPtr)>(z_GetVertexAttribdv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribdv(index: UInt32; pname: VertexAttribPropertyARB; ¶ms: array of real) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetVertexAttribdv_ovr_0(index, pname, ¶ms[0]) else z_GetVertexAttribdv_ovr_0_anh0001(index, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribdv(index: UInt32; pname: VertexAttribPropertyARB; var ¶ms: real) := z_GetVertexAttribdv_ovr_0(index, pname, ¶ms); private z_GetVertexAttribdv_ovr_2 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribPropertyARB; ¶ms: IntPtr)>(z_GetVertexAttribdv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribdv(index: UInt32; pname: VertexAttribPropertyARB; ¶ms: IntPtr) := z_GetVertexAttribdv_ovr_2(index, pname, ¶ms); // added in gl2.0 private z_GetVertexAttribfv_adr := GetProcAddress('glGetVertexAttribfv'); private z_GetVertexAttribfv_ovr_0 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribPropertyARB; var ¶ms: single)>(z_GetVertexAttribfv_adr); private z_GetVertexAttribfv_ovr_0_anh0001 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribPropertyARB; ¶ms: IntPtr)>(z_GetVertexAttribfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribfv(index: UInt32; pname: VertexAttribPropertyARB; ¶ms: array of single) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetVertexAttribfv_ovr_0(index, pname, ¶ms[0]) else z_GetVertexAttribfv_ovr_0_anh0001(index, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribfv(index: UInt32; pname: VertexAttribPropertyARB; var ¶ms: single) := z_GetVertexAttribfv_ovr_0(index, pname, ¶ms); private z_GetVertexAttribfv_ovr_2 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribPropertyARB; ¶ms: IntPtr)>(z_GetVertexAttribfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribfv(index: UInt32; pname: VertexAttribPropertyARB; ¶ms: IntPtr) := z_GetVertexAttribfv_ovr_2(index, pname, ¶ms); // added in gl3.0 private z_GetVertexAttribIiv_adr := GetProcAddress('glGetVertexAttribIiv'); private z_GetVertexAttribIiv_ovr_0 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribEnum; var ¶ms: Int32)>(z_GetVertexAttribIiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribIiv(index: UInt32; pname: VertexAttribEnum; var ¶ms: Int32) := z_GetVertexAttribIiv_ovr_0(index, pname, ¶ms); private z_GetVertexAttribIiv_ovr_1 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribEnum; ¶ms: IntPtr)>(z_GetVertexAttribIiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribIiv(index: UInt32; pname: VertexAttribEnum; ¶ms: IntPtr) := z_GetVertexAttribIiv_ovr_1(index, pname, ¶ms); // added in gl3.0 private z_GetVertexAttribIuiv_adr := GetProcAddress('glGetVertexAttribIuiv'); private z_GetVertexAttribIuiv_ovr_0 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribEnum; var ¶ms: UInt32)>(z_GetVertexAttribIuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribIuiv(index: UInt32; pname: VertexAttribEnum; var ¶ms: UInt32) := z_GetVertexAttribIuiv_ovr_0(index, pname, ¶ms); private z_GetVertexAttribIuiv_ovr_1 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribEnum; ¶ms: IntPtr)>(z_GetVertexAttribIuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribIuiv(index: UInt32; pname: VertexAttribEnum; ¶ms: IntPtr) := z_GetVertexAttribIuiv_ovr_1(index, pname, ¶ms); // added in gl2.0 private z_GetVertexAttribiv_adr := GetProcAddress('glGetVertexAttribiv'); private z_GetVertexAttribiv_ovr_0 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribPropertyARB; var ¶ms: Int32)>(z_GetVertexAttribiv_adr); private z_GetVertexAttribiv_ovr_0_anh0001 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribPropertyARB; ¶ms: IntPtr)>(z_GetVertexAttribiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribiv(index: UInt32; pname: VertexAttribPropertyARB; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetVertexAttribiv_ovr_0(index, pname, ¶ms[0]) else z_GetVertexAttribiv_ovr_0_anh0001(index, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribiv(index: UInt32; pname: VertexAttribPropertyARB; var ¶ms: Int32) := z_GetVertexAttribiv_ovr_0(index, pname, ¶ms); private z_GetVertexAttribiv_ovr_2 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribPropertyARB; ¶ms: IntPtr)>(z_GetVertexAttribiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribiv(index: UInt32; pname: VertexAttribPropertyARB; ¶ms: IntPtr) := z_GetVertexAttribiv_ovr_2(index, pname, ¶ms); // added in gl4.1 private z_GetVertexAttribLdv_adr := GetProcAddress('glGetVertexAttribLdv'); private z_GetVertexAttribLdv_ovr_0 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribEnum; var ¶ms: real)>(z_GetVertexAttribLdv_adr); private z_GetVertexAttribLdv_ovr_0_anh0001 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribEnum; ¶ms: IntPtr)>(z_GetVertexAttribLdv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribLdv(index: UInt32; pname: VertexAttribEnum; ¶ms: array of real) := if (¶ms<>nil) and (¶ms.Length<>0) then z_GetVertexAttribLdv_ovr_0(index, pname, ¶ms[0]) else z_GetVertexAttribLdv_ovr_0_anh0001(index, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribLdv(index: UInt32; pname: VertexAttribEnum; var ¶ms: real) := z_GetVertexAttribLdv_ovr_0(index, pname, ¶ms); private z_GetVertexAttribLdv_ovr_2 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribEnum; ¶ms: IntPtr)>(z_GetVertexAttribLdv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribLdv(index: UInt32; pname: VertexAttribEnum; ¶ms: IntPtr) := z_GetVertexAttribLdv_ovr_2(index, pname, ¶ms); // added in gl2.0 private z_GetVertexAttribPointerv_adr := GetProcAddress('glGetVertexAttribPointerv'); private z_GetVertexAttribPointerv_ovr_0 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribPointerPropertyARB; var _pointer: IntPtr)>(z_GetVertexAttribPointerv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribPointerv(index: UInt32; pname: VertexAttribPointerPropertyARB; var _pointer: IntPtr) := z_GetVertexAttribPointerv_ovr_0(index, pname, _pointer); private z_GetVertexAttribPointerv_ovr_1 := GetProcOrNil&<procedure(index: UInt32; pname: VertexAttribPointerPropertyARB; _pointer: pointer)>(z_GetVertexAttribPointerv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure GetVertexAttribPointerv(index: UInt32; pname: VertexAttribPointerPropertyARB; _pointer: pointer) := z_GetVertexAttribPointerv_ovr_1(index, pname, _pointer); // added in gl1.0 private z_Hint_adr := GetProcAddress('glHint'); private z_Hint_ovr_0 := GetProcOrNil&<procedure(target: HintTarget; mode: HintMode)>(z_Hint_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Hint(target: HintTarget; mode: HintMode) := z_Hint_ovr_0(target, mode); // added in gl4.3 private z_InvalidateBufferData_adr := GetProcAddress('glInvalidateBufferData'); private z_InvalidateBufferData_ovr_0 := GetProcOrNil&<procedure(buffer: gl_buffer)>(z_InvalidateBufferData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateBufferData(buffer: gl_buffer) := z_InvalidateBufferData_ovr_0(buffer); // added in gl4.3 private z_InvalidateBufferSubData_adr := GetProcAddress('glInvalidateBufferSubData'); private z_InvalidateBufferSubData_ovr_0 := GetProcOrNil&<procedure(buffer: gl_buffer; offset: IntPtr; length: IntPtr)>(z_InvalidateBufferSubData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateBufferSubData(buffer: gl_buffer; offset: IntPtr; length: IntPtr) := z_InvalidateBufferSubData_ovr_0(buffer, offset, length); // added in gl4.3 private z_InvalidateFramebuffer_adr := GetProcAddress('glInvalidateFramebuffer'); private z_InvalidateFramebuffer_ovr_0 := GetProcOrNil&<procedure(target: FramebufferTarget; numAttachments: Int32; var attachments: InvalidateFramebufferAttachment)>(z_InvalidateFramebuffer_adr); private z_InvalidateFramebuffer_ovr_0_anh0001 := GetProcOrNil&<procedure(target: FramebufferTarget; numAttachments: Int32; attachments: IntPtr)>(z_InvalidateFramebuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateFramebuffer(target: FramebufferTarget; numAttachments: Int32; attachments: array of InvalidateFramebufferAttachment) := if (attachments<>nil) and (attachments.Length<>0) then z_InvalidateFramebuffer_ovr_0(target, numAttachments, attachments[0]) else z_InvalidateFramebuffer_ovr_0_anh0001(target, numAttachments, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateFramebuffer(target: FramebufferTarget; numAttachments: Int32; var attachments: InvalidateFramebufferAttachment) := z_InvalidateFramebuffer_ovr_0(target, numAttachments, attachments); private z_InvalidateFramebuffer_ovr_2 := GetProcOrNil&<procedure(target: FramebufferTarget; numAttachments: Int32; attachments: IntPtr)>(z_InvalidateFramebuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateFramebuffer(target: FramebufferTarget; numAttachments: Int32; attachments: IntPtr) := z_InvalidateFramebuffer_ovr_2(target, numAttachments, attachments); // added in gl4.5 private z_InvalidateNamedFramebufferData_adr := GetProcAddress('glInvalidateNamedFramebufferData'); private z_InvalidateNamedFramebufferData_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; numAttachments: Int32; var attachments: FramebufferAttachment)>(z_InvalidateNamedFramebufferData_adr); private z_InvalidateNamedFramebufferData_ovr_0_anh0001 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; numAttachments: Int32; attachments: IntPtr)>(z_InvalidateNamedFramebufferData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateNamedFramebufferData(framebuffer: gl_framebuffer; numAttachments: Int32; attachments: array of FramebufferAttachment) := if (attachments<>nil) and (attachments.Length<>0) then z_InvalidateNamedFramebufferData_ovr_0(framebuffer, numAttachments, attachments[0]) else z_InvalidateNamedFramebufferData_ovr_0_anh0001(framebuffer, numAttachments, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateNamedFramebufferData(framebuffer: gl_framebuffer; numAttachments: Int32; var attachments: FramebufferAttachment) := z_InvalidateNamedFramebufferData_ovr_0(framebuffer, numAttachments, attachments); private z_InvalidateNamedFramebufferData_ovr_2 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; numAttachments: Int32; attachments: IntPtr)>(z_InvalidateNamedFramebufferData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateNamedFramebufferData(framebuffer: gl_framebuffer; numAttachments: Int32; attachments: IntPtr) := z_InvalidateNamedFramebufferData_ovr_2(framebuffer, numAttachments, attachments); // added in gl4.5 private z_InvalidateNamedFramebufferSubData_adr := GetProcAddress('glInvalidateNamedFramebufferSubData'); private z_InvalidateNamedFramebufferSubData_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; numAttachments: Int32; var attachments: FramebufferAttachment; x: Int32; y: Int32; width: Int32; height: Int32)>(z_InvalidateNamedFramebufferSubData_adr); private z_InvalidateNamedFramebufferSubData_ovr_0_anh00010000 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; numAttachments: Int32; attachments: IntPtr; x: Int32; y: Int32; width: Int32; height: Int32)>(z_InvalidateNamedFramebufferSubData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateNamedFramebufferSubData(framebuffer: gl_framebuffer; numAttachments: Int32; attachments: array of FramebufferAttachment; x: Int32; y: Int32; width: Int32; height: Int32) := if (attachments<>nil) and (attachments.Length<>0) then z_InvalidateNamedFramebufferSubData_ovr_0(framebuffer, numAttachments, attachments[0], x, y, width, height) else z_InvalidateNamedFramebufferSubData_ovr_0_anh00010000(framebuffer, numAttachments, IntPtr.Zero, x, y, width, height); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateNamedFramebufferSubData(framebuffer: gl_framebuffer; numAttachments: Int32; var attachments: FramebufferAttachment; x: Int32; y: Int32; width: Int32; height: Int32) := z_InvalidateNamedFramebufferSubData_ovr_0(framebuffer, numAttachments, attachments, x, y, width, height); private z_InvalidateNamedFramebufferSubData_ovr_2 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; numAttachments: Int32; attachments: IntPtr; x: Int32; y: Int32; width: Int32; height: Int32)>(z_InvalidateNamedFramebufferSubData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateNamedFramebufferSubData(framebuffer: gl_framebuffer; numAttachments: Int32; attachments: IntPtr; x: Int32; y: Int32; width: Int32; height: Int32) := z_InvalidateNamedFramebufferSubData_ovr_2(framebuffer, numAttachments, attachments, x, y, width, height); // added in gl4.3 private z_InvalidateSubFramebuffer_adr := GetProcAddress('glInvalidateSubFramebuffer'); private z_InvalidateSubFramebuffer_ovr_0 := GetProcOrNil&<procedure(target: FramebufferTarget; numAttachments: Int32; var attachments: InvalidateFramebufferAttachment; x: Int32; y: Int32; width: Int32; height: Int32)>(z_InvalidateSubFramebuffer_adr); private z_InvalidateSubFramebuffer_ovr_0_anh00010000 := GetProcOrNil&<procedure(target: FramebufferTarget; numAttachments: Int32; attachments: IntPtr; x: Int32; y: Int32; width: Int32; height: Int32)>(z_InvalidateSubFramebuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateSubFramebuffer(target: FramebufferTarget; numAttachments: Int32; attachments: array of InvalidateFramebufferAttachment; x: Int32; y: Int32; width: Int32; height: Int32) := if (attachments<>nil) and (attachments.Length<>0) then z_InvalidateSubFramebuffer_ovr_0(target, numAttachments, attachments[0], x, y, width, height) else z_InvalidateSubFramebuffer_ovr_0_anh00010000(target, numAttachments, IntPtr.Zero, x, y, width, height); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateSubFramebuffer(target: FramebufferTarget; numAttachments: Int32; var attachments: InvalidateFramebufferAttachment; x: Int32; y: Int32; width: Int32; height: Int32) := z_InvalidateSubFramebuffer_ovr_0(target, numAttachments, attachments, x, y, width, height); private z_InvalidateSubFramebuffer_ovr_2 := GetProcOrNil&<procedure(target: FramebufferTarget; numAttachments: Int32; attachments: IntPtr; x: Int32; y: Int32; width: Int32; height: Int32)>(z_InvalidateSubFramebuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateSubFramebuffer(target: FramebufferTarget; numAttachments: Int32; attachments: IntPtr; x: Int32; y: Int32; width: Int32; height: Int32) := z_InvalidateSubFramebuffer_ovr_2(target, numAttachments, attachments, x, y, width, height); // added in gl4.3 private z_InvalidateTexImage_adr := GetProcAddress('glInvalidateTexImage'); private z_InvalidateTexImage_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32)>(z_InvalidateTexImage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateTexImage(texture: gl_texture; level: Int32) := z_InvalidateTexImage_ovr_0(texture, level); // added in gl4.3 private z_InvalidateTexSubImage_adr := GetProcAddress('glInvalidateTexSubImage'); private z_InvalidateTexSubImage_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32)>(z_InvalidateTexSubImage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure InvalidateTexSubImage(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32) := z_InvalidateTexSubImage_ovr_0(texture, level, xoffset, yoffset, zoffset, width, height, depth); // added in gl1.5 private z_IsBuffer_adr := GetProcAddress('glIsBuffer'); private z_IsBuffer_ovr_0 := GetProcOrNil&<function(buffer: gl_buffer): boolean>(z_IsBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function IsBuffer(buffer: gl_buffer): boolean := z_IsBuffer_ovr_0(buffer); // added in gl1.0 private z_IsEnabled_adr := GetProcAddress('glIsEnabled'); private z_IsEnabled_ovr_0 := GetProcOrNil&<function(cap: EnableCap): boolean>(z_IsEnabled_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function IsEnabled(cap: EnableCap): boolean := z_IsEnabled_ovr_0(cap); // added in gl3.0 private z_IsEnabledi_adr := GetProcAddress('glIsEnabledi'); private z_IsEnabledi_ovr_0 := GetProcOrNil&<function(target: EnableCap; index: UInt32): boolean>(z_IsEnabledi_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function IsEnabledi(target: EnableCap; index: UInt32): boolean := z_IsEnabledi_ovr_0(target, index); // added in gl3.0 private z_IsFramebuffer_adr := GetProcAddress('glIsFramebuffer'); private z_IsFramebuffer_ovr_0 := GetProcOrNil&<function(framebuffer: gl_framebuffer): boolean>(z_IsFramebuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function IsFramebuffer(framebuffer: gl_framebuffer): boolean := z_IsFramebuffer_ovr_0(framebuffer); // added in gl2.0 private z_IsProgram_adr := GetProcAddress('glIsProgram'); private z_IsProgram_ovr_0 := GetProcOrNil&<function(&program: gl_program): boolean>(z_IsProgram_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function IsProgram(&program: gl_program): boolean := z_IsProgram_ovr_0(&program); // added in gl4.1 private z_IsProgramPipeline_adr := GetProcAddress('glIsProgramPipeline'); private z_IsProgramPipeline_ovr_0 := GetProcOrNil&<function(pipeline: gl_program_pipeline): boolean>(z_IsProgramPipeline_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function IsProgramPipeline(pipeline: gl_program_pipeline): boolean := z_IsProgramPipeline_ovr_0(pipeline); // added in gl1.5 private z_IsQuery_adr := GetProcAddress('glIsQuery'); private z_IsQuery_ovr_0 := GetProcOrNil&<function(id: gl_query): boolean>(z_IsQuery_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function IsQuery(id: gl_query): boolean := z_IsQuery_ovr_0(id); // added in gl3.0 private z_IsRenderbuffer_adr := GetProcAddress('glIsRenderbuffer'); private z_IsRenderbuffer_ovr_0 := GetProcOrNil&<function(renderbuffer: gl_renderbuffer): boolean>(z_IsRenderbuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function IsRenderbuffer(renderbuffer: gl_renderbuffer): boolean := z_IsRenderbuffer_ovr_0(renderbuffer); // added in gl3.3 private z_IsSampler_adr := GetProcAddress('glIsSampler'); private z_IsSampler_ovr_0 := GetProcOrNil&<function(sampler: gl_sampler): boolean>(z_IsSampler_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function IsSampler(sampler: gl_sampler): boolean := z_IsSampler_ovr_0(sampler); // added in gl2.0 private z_IsShader_adr := GetProcAddress('glIsShader'); private z_IsShader_ovr_0 := GetProcOrNil&<function(shader: gl_shader): boolean>(z_IsShader_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function IsShader(shader: gl_shader): boolean := z_IsShader_ovr_0(shader); // added in gl3.2 private z_IsSync_adr := GetProcAddress('glIsSync'); private z_IsSync_ovr_0 := GetProcOrNil&<function(sync: gl_sync): boolean>(z_IsSync_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function IsSync(sync: gl_sync): boolean := z_IsSync_ovr_0(sync); // added in gl1.1 private z_IsTexture_adr := GetProcAddress('glIsTexture'); private z_IsTexture_ovr_0 := GetProcOrNil&<function(texture: gl_texture): boolean>(z_IsTexture_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function IsTexture(texture: gl_texture): boolean := z_IsTexture_ovr_0(texture); // added in gl4.0 private z_IsTransformFeedback_adr := GetProcAddress('glIsTransformFeedback'); private z_IsTransformFeedback_ovr_0 := GetProcOrNil&<function(id: gl_transform_feedback): boolean>(z_IsTransformFeedback_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function IsTransformFeedback(id: gl_transform_feedback): boolean := z_IsTransformFeedback_ovr_0(id); // added in gl3.0 private z_IsVertexArray_adr := GetProcAddress('glIsVertexArray'); private z_IsVertexArray_ovr_0 := GetProcOrNil&<function(&array: gl_vertex_array): boolean>(z_IsVertexArray_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function IsVertexArray(&array: gl_vertex_array): boolean := z_IsVertexArray_ovr_0(&array); // added in gl1.0 private z_LineWidth_adr := GetProcAddress('glLineWidth'); private z_LineWidth_ovr_0 := GetProcOrNil&<procedure(width: single)>(z_LineWidth_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure LineWidth(width: single) := z_LineWidth_ovr_0(width); // added in gl2.0 private z_LinkProgram_adr := GetProcAddress('glLinkProgram'); private z_LinkProgram_ovr_0 := GetProcOrNil&<procedure(&program: gl_program)>(z_LinkProgram_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure LinkProgram(&program: gl_program) := z_LinkProgram_ovr_0(&program); // added in gl1.0 private z_LogicOp_adr := GetProcAddress('glLogicOp'); private z_LogicOp_ovr_0 := GetProcOrNil&<procedure(opcode: OpenGL.LogicOp)>(z_LogicOp_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure LogicOp(opcode: OpenGL.LogicOp) := z_LogicOp_ovr_0(opcode); // added in gl1.5 private z_MapBuffer_adr := GetProcAddress('glMapBuffer'); private z_MapBuffer_ovr_0 := GetProcOrNil&<function(target: BufferTarget; access: BufferAccessARB): IntPtr>(z_MapBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function MapBuffer(target: BufferTarget; access: BufferAccessARB): IntPtr := z_MapBuffer_ovr_0(target, access); // added in gl3.0 private z_MapBufferRange_adr := GetProcAddress('glMapBufferRange'); private z_MapBufferRange_ovr_0 := GetProcOrNil&<function(target: BufferTarget; offset: IntPtr; length: IntPtr; access: MapBufferAccessMask): IntPtr>(z_MapBufferRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function MapBufferRange(target: BufferTarget; offset: IntPtr; length: IntPtr; access: MapBufferAccessMask): IntPtr := z_MapBufferRange_ovr_0(target, offset, length, access); // added in gl4.5 private z_MapNamedBuffer_adr := GetProcAddress('glMapNamedBuffer'); private z_MapNamedBuffer_ovr_0 := GetProcOrNil&<function(buffer: gl_buffer; access: BufferAccessARB): IntPtr>(z_MapNamedBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function MapNamedBuffer(buffer: gl_buffer; access: BufferAccessARB): IntPtr := z_MapNamedBuffer_ovr_0(buffer, access); // added in gl4.5 private z_MapNamedBufferRange_adr := GetProcAddress('glMapNamedBufferRange'); private z_MapNamedBufferRange_ovr_0 := GetProcOrNil&<function(buffer: gl_buffer; offset: IntPtr; length: IntPtr; access: MapBufferAccessMask): IntPtr>(z_MapNamedBufferRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function MapNamedBufferRange(buffer: gl_buffer; offset: IntPtr; length: IntPtr; access: MapBufferAccessMask): IntPtr := z_MapNamedBufferRange_ovr_0(buffer, offset, length, access); // added in gl4.2 private z_MemoryBarrier_adr := GetProcAddress('glMemoryBarrier'); private z_MemoryBarrier_ovr_0 := GetProcOrNil&<procedure(barriers: MemoryBarrierMask)>(z_MemoryBarrier_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MemoryBarrier(barriers: MemoryBarrierMask) := z_MemoryBarrier_ovr_0(barriers); // added in gl4.5 private z_MemoryBarrierByRegion_adr := GetProcAddress('glMemoryBarrierByRegion'); private z_MemoryBarrierByRegion_ovr_0 := GetProcOrNil&<procedure(barriers: MemoryBarrierMask)>(z_MemoryBarrierByRegion_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MemoryBarrierByRegion(barriers: MemoryBarrierMask) := z_MemoryBarrierByRegion_ovr_0(barriers); // added in gl4.0 private z_MinSampleShading_adr := GetProcAddress('glMinSampleShading'); private z_MinSampleShading_ovr_0 := GetProcOrNil&<procedure(value: single)>(z_MinSampleShading_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MinSampleShading(value: single) := z_MinSampleShading_ovr_0(value); // added in gl1.4 private z_MultiDrawArrays_adr := GetProcAddress('glMultiDrawArrays'); private z_MultiDrawArrays_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; var first: Int32; var count: Int32; drawcount: Int32)>(z_MultiDrawArrays_adr); private z_MultiDrawArrays_ovr_0_anh00100 := GetProcOrNil&<procedure(mode: PrimitiveType; first: IntPtr; var count: Int32; drawcount: Int32)>(z_MultiDrawArrays_adr); private z_MultiDrawArrays_ovr_0_anh00010 := GetProcOrNil&<procedure(mode: PrimitiveType; var first: Int32; count: IntPtr; drawcount: Int32)>(z_MultiDrawArrays_adr); private z_MultiDrawArrays_ovr_0_anh00110 := GetProcOrNil&<procedure(mode: PrimitiveType; first: IntPtr; count: IntPtr; drawcount: Int32)>(z_MultiDrawArrays_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawArrays(mode: PrimitiveType; first: array of Int32; count: array of Int32; drawcount: Int32) := if (first<>nil) and (first.Length<>0) then if (count<>nil) and (count.Length<>0) then z_MultiDrawArrays_ovr_0(mode, first[0], count[0], drawcount) else z_MultiDrawArrays_ovr_0_anh00010(mode, first[0], IntPtr.Zero, drawcount) else if (count<>nil) and (count.Length<>0) then z_MultiDrawArrays_ovr_0_anh00100(mode, IntPtr.Zero, count[0], drawcount) else z_MultiDrawArrays_ovr_0_anh00110(mode, IntPtr.Zero, IntPtr.Zero, drawcount); private z_MultiDrawArrays_ovr_1_anh00100 := GetProcOrNil&<procedure(mode: PrimitiveType; first: IntPtr; var count: Int32; drawcount: Int32)>(z_MultiDrawArrays_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawArrays(mode: PrimitiveType; first: array of Int32; var count: Int32; drawcount: Int32) := if (first<>nil) and (first.Length<>0) then z_MultiDrawArrays_ovr_0(mode, first[0], count, drawcount) else z_MultiDrawArrays_ovr_0_anh00100(mode, IntPtr.Zero, count, drawcount); private z_MultiDrawArrays_ovr_2 := GetProcOrNil&<procedure(mode: PrimitiveType; var first: Int32; count: IntPtr; drawcount: Int32)>(z_MultiDrawArrays_adr); private z_MultiDrawArrays_ovr_2_anh00100 := GetProcOrNil&<procedure(mode: PrimitiveType; first: IntPtr; count: IntPtr; drawcount: Int32)>(z_MultiDrawArrays_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawArrays(mode: PrimitiveType; first: array of Int32; count: IntPtr; drawcount: Int32) := if (first<>nil) and (first.Length<>0) then z_MultiDrawArrays_ovr_2(mode, first[0], count, drawcount) else z_MultiDrawArrays_ovr_2_anh00100(mode, IntPtr.Zero, count, drawcount); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawArrays(mode: PrimitiveType; var first: Int32; count: array of Int32; drawcount: Int32) := if (count<>nil) and (count.Length<>0) then z_MultiDrawArrays_ovr_0(mode, first, count[0], drawcount) else z_MultiDrawArrays_ovr_0_anh00010(mode, first, IntPtr.Zero, drawcount); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawArrays(mode: PrimitiveType; var first: Int32; var count: Int32; drawcount: Int32) := z_MultiDrawArrays_ovr_0(mode, first, count, drawcount); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawArrays(mode: PrimitiveType; var first: Int32; count: IntPtr; drawcount: Int32) := z_MultiDrawArrays_ovr_2(mode, first, count, drawcount); private z_MultiDrawArrays_ovr_6 := GetProcOrNil&<procedure(mode: PrimitiveType; first: IntPtr; var count: Int32; drawcount: Int32)>(z_MultiDrawArrays_adr); private z_MultiDrawArrays_ovr_6_anh00010 := GetProcOrNil&<procedure(mode: PrimitiveType; first: IntPtr; count: IntPtr; drawcount: Int32)>(z_MultiDrawArrays_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawArrays(mode: PrimitiveType; first: IntPtr; count: array of Int32; drawcount: Int32) := if (count<>nil) and (count.Length<>0) then z_MultiDrawArrays_ovr_6(mode, first, count[0], drawcount) else z_MultiDrawArrays_ovr_6_anh00010(mode, first, IntPtr.Zero, drawcount); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawArrays(mode: PrimitiveType; first: IntPtr; var count: Int32; drawcount: Int32) := z_MultiDrawArrays_ovr_6(mode, first, count, drawcount); private z_MultiDrawArrays_ovr_8 := GetProcOrNil&<procedure(mode: PrimitiveType; first: IntPtr; count: IntPtr; drawcount: Int32)>(z_MultiDrawArrays_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawArrays(mode: PrimitiveType; first: IntPtr; count: IntPtr; drawcount: Int32) := z_MultiDrawArrays_ovr_8(mode, first, count, drawcount); // added in gl4.3 private z_MultiDrawArraysIndirect_adr := GetProcAddress('glMultiDrawArraysIndirect'); private z_MultiDrawArraysIndirect_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; indirect: IntPtr; drawcount: Int32; stride: Int32)>(z_MultiDrawArraysIndirect_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawArraysIndirect(mode: PrimitiveType; indirect: IntPtr; drawcount: Int32; stride: Int32) := z_MultiDrawArraysIndirect_ovr_0(mode, indirect, drawcount, stride); // added in gl4.6 private z_MultiDrawArraysIndirectCount_adr := GetProcAddress('glMultiDrawArraysIndirectCount'); private z_MultiDrawArraysIndirectCount_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; indirect: IntPtr; drawcount: IntPtr; maxdrawcount: Int32; stride: Int32)>(z_MultiDrawArraysIndirectCount_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawArraysIndirectCount(mode: PrimitiveType; indirect: IntPtr; drawcount: IntPtr; maxdrawcount: Int32; stride: Int32) := z_MultiDrawArraysIndirectCount_ovr_0(mode, indirect, drawcount, maxdrawcount, stride); // added in gl1.4 private z_MultiDrawElements_adr := GetProcAddress('glMultiDrawElements'); private z_MultiDrawElements_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32)>(z_MultiDrawElements_adr); private z_MultiDrawElements_ovr_0_anh001000 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32)>(z_MultiDrawElements_adr); private z_MultiDrawElements_ovr_0_anh000010 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: IntPtr; drawcount: Int32)>(z_MultiDrawElements_adr); private z_MultiDrawElements_ovr_0_anh001010 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: IntPtr; drawcount: Int32)>(z_MultiDrawElements_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElements(mode: PrimitiveType; count: array of Int32; &type: DrawElementsType; indices: array of IntPtr; drawcount: Int32) := if (count<>nil) and (count.Length<>0) then if (indices<>nil) and (indices.Length<>0) then z_MultiDrawElements_ovr_0(mode, count[0], &type, indices[0], drawcount) else z_MultiDrawElements_ovr_0_anh000010(mode, count[0], &type, IntPtr.Zero, drawcount) else if (indices<>nil) and (indices.Length<>0) then z_MultiDrawElements_ovr_0_anh001000(mode, IntPtr.Zero, &type, indices[0], drawcount) else z_MultiDrawElements_ovr_0_anh001010(mode, IntPtr.Zero, &type, IntPtr.Zero, drawcount); private z_MultiDrawElements_ovr_1_anh001000 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32)>(z_MultiDrawElements_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElements(mode: PrimitiveType; count: array of Int32; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32) := if (count<>nil) and (count.Length<>0) then z_MultiDrawElements_ovr_0(mode, count[0], &type, indices, drawcount) else z_MultiDrawElements_ovr_0_anh001000(mode, IntPtr.Zero, &type, indices, drawcount); private z_MultiDrawElements_ovr_2 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: pointer; drawcount: Int32)>(z_MultiDrawElements_adr); private z_MultiDrawElements_ovr_2_anh001000 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: pointer; drawcount: Int32)>(z_MultiDrawElements_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElements(mode: PrimitiveType; count: array of Int32; &type: DrawElementsType; indices: pointer; drawcount: Int32) := if (count<>nil) and (count.Length<>0) then z_MultiDrawElements_ovr_2(mode, count[0], &type, indices, drawcount) else z_MultiDrawElements_ovr_2_anh001000(mode, IntPtr.Zero, &type, indices, drawcount); private z_MultiDrawElements_ovr_3_anh000010 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: IntPtr; drawcount: Int32)>(z_MultiDrawElements_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElements(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: array of IntPtr; drawcount: Int32) := if (indices<>nil) and (indices.Length<>0) then z_MultiDrawElements_ovr_0(mode, count, &type, indices[0], drawcount) else z_MultiDrawElements_ovr_0_anh000010(mode, count, &type, IntPtr.Zero, drawcount); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElements(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32) := z_MultiDrawElements_ovr_0(mode, count, &type, indices, drawcount); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElements(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: pointer; drawcount: Int32) := z_MultiDrawElements_ovr_2(mode, count, &type, indices, drawcount); private z_MultiDrawElements_ovr_6 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32)>(z_MultiDrawElements_adr); private z_MultiDrawElements_ovr_6_anh000010 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: IntPtr; drawcount: Int32)>(z_MultiDrawElements_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElements(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: array of IntPtr; drawcount: Int32) := if (indices<>nil) and (indices.Length<>0) then z_MultiDrawElements_ovr_6(mode, count, &type, indices[0], drawcount) else z_MultiDrawElements_ovr_6_anh000010(mode, count, &type, IntPtr.Zero, drawcount); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElements(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32) := z_MultiDrawElements_ovr_6(mode, count, &type, indices, drawcount); private z_MultiDrawElements_ovr_8 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: pointer; drawcount: Int32)>(z_MultiDrawElements_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElements(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: pointer; drawcount: Int32) := z_MultiDrawElements_ovr_8(mode, count, &type, indices, drawcount); // added in gl3.2 private z_MultiDrawElementsBaseVertex_adr := GetProcAddress('glMultiDrawElementsBaseVertex'); private z_MultiDrawElementsBaseVertex_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_0_anh0010000 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_0_anh0000100 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_0_anh0010100 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_0_anh0000001 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_0_anh0010001 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_0_anh0000101 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_0_anh0010101 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: array of Int32; &type: DrawElementsType; indices: array of IntPtr; drawcount: Int32; basevertex: array of Int32) := if (count<>nil) and (count.Length<>0) then if (indices<>nil) and (indices.Length<>0) then if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_0(mode, count[0], &type, indices[0], drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_0_anh0000001(mode, count[0], &type, indices[0], drawcount, IntPtr.Zero) else if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_0_anh0000100(mode, count[0], &type, IntPtr.Zero, drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_0_anh0000101(mode, count[0], &type, IntPtr.Zero, drawcount, IntPtr.Zero) else if (indices<>nil) and (indices.Length<>0) then if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_0_anh0010000(mode, IntPtr.Zero, &type, indices[0], drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_0_anh0010001(mode, IntPtr.Zero, &type, indices[0], drawcount, IntPtr.Zero) else if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_0_anh0010100(mode, IntPtr.Zero, &type, IntPtr.Zero, drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_0_anh0010101(mode, IntPtr.Zero, &type, IntPtr.Zero, drawcount, IntPtr.Zero); private z_MultiDrawElementsBaseVertex_ovr_1_anh0010000 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_1_anh0000100 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_1_anh0010100 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: array of Int32; &type: DrawElementsType; indices: array of IntPtr; drawcount: Int32; var basevertex: Int32) := if (count<>nil) and (count.Length<>0) then if (indices<>nil) and (indices.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_0(mode, count[0], &type, indices[0], drawcount, basevertex) else z_MultiDrawElementsBaseVertex_ovr_0_anh0000100(mode, count[0], &type, IntPtr.Zero, drawcount, basevertex) else if (indices<>nil) and (indices.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_0_anh0010000(mode, IntPtr.Zero, &type, indices[0], drawcount, basevertex) else z_MultiDrawElementsBaseVertex_ovr_0_anh0010100(mode, IntPtr.Zero, &type, IntPtr.Zero, drawcount, basevertex); private z_MultiDrawElementsBaseVertex_ovr_2 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_2_anh0010000 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_2_anh0000100 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_2_anh0010100 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: array of Int32; &type: DrawElementsType; indices: array of IntPtr; drawcount: Int32; basevertex: IntPtr) := if (count<>nil) and (count.Length<>0) then if (indices<>nil) and (indices.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_2(mode, count[0], &type, indices[0], drawcount, basevertex) else z_MultiDrawElementsBaseVertex_ovr_2_anh0000100(mode, count[0], &type, IntPtr.Zero, drawcount, basevertex) else if (indices<>nil) and (indices.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_2_anh0010000(mode, IntPtr.Zero, &type, indices[0], drawcount, basevertex) else z_MultiDrawElementsBaseVertex_ovr_2_anh0010100(mode, IntPtr.Zero, &type, IntPtr.Zero, drawcount, basevertex); private z_MultiDrawElementsBaseVertex_ovr_3_anh0010000 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_3_anh0010001 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: array of Int32; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; basevertex: array of Int32) := if (count<>nil) and (count.Length<>0) then if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_0(mode, count[0], &type, indices, drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_0_anh0000001(mode, count[0], &type, indices, drawcount, IntPtr.Zero) else if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_0_anh0010000(mode, IntPtr.Zero, &type, indices, drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_0_anh0010001(mode, IntPtr.Zero, &type, indices, drawcount, IntPtr.Zero); private z_MultiDrawElementsBaseVertex_ovr_4_anh0010000 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: array of Int32; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; var basevertex: Int32) := if (count<>nil) and (count.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_0(mode, count[0], &type, indices, drawcount, basevertex) else z_MultiDrawElementsBaseVertex_ovr_0_anh0010000(mode, IntPtr.Zero, &type, indices, drawcount, basevertex); private z_MultiDrawElementsBaseVertex_ovr_5_anh0010000 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: array of Int32; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; basevertex: IntPtr) := if (count<>nil) and (count.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_2(mode, count[0], &type, indices, drawcount, basevertex) else z_MultiDrawElementsBaseVertex_ovr_2_anh0010000(mode, IntPtr.Zero, &type, indices, drawcount, basevertex); private z_MultiDrawElementsBaseVertex_ovr_6 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: pointer; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_6_anh0010000 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: pointer; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_6_anh0000001 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: pointer; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_6_anh0010001 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: pointer; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: array of Int32; &type: DrawElementsType; indices: pointer; drawcount: Int32; basevertex: array of Int32) := if (count<>nil) and (count.Length<>0) then if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_6(mode, count[0], &type, indices, drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_6_anh0000001(mode, count[0], &type, indices, drawcount, IntPtr.Zero) else if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_6_anh0010000(mode, IntPtr.Zero, &type, indices, drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_6_anh0010001(mode, IntPtr.Zero, &type, indices, drawcount, IntPtr.Zero); private z_MultiDrawElementsBaseVertex_ovr_7_anh0010000 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: pointer; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: array of Int32; &type: DrawElementsType; indices: pointer; drawcount: Int32; var basevertex: Int32) := if (count<>nil) and (count.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_6(mode, count[0], &type, indices, drawcount, basevertex) else z_MultiDrawElementsBaseVertex_ovr_6_anh0010000(mode, IntPtr.Zero, &type, indices, drawcount, basevertex); private z_MultiDrawElementsBaseVertex_ovr_8 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: pointer; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_8_anh0010000 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: pointer; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: array of Int32; &type: DrawElementsType; indices: pointer; drawcount: Int32; basevertex: IntPtr) := if (count<>nil) and (count.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_8(mode, count[0], &type, indices, drawcount, basevertex) else z_MultiDrawElementsBaseVertex_ovr_8_anh0010000(mode, IntPtr.Zero, &type, indices, drawcount, basevertex); private z_MultiDrawElementsBaseVertex_ovr_9_anh0000100 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_9_anh0000101 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: array of IntPtr; drawcount: Int32; basevertex: array of Int32) := if (indices<>nil) and (indices.Length<>0) then if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_0(mode, count, &type, indices[0], drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_0_anh0000001(mode, count, &type, indices[0], drawcount, IntPtr.Zero) else if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_0_anh0000100(mode, count, &type, IntPtr.Zero, drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_0_anh0000101(mode, count, &type, IntPtr.Zero, drawcount, IntPtr.Zero); private z_MultiDrawElementsBaseVertex_ovr_10_anh0000100 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: array of IntPtr; drawcount: Int32; var basevertex: Int32) := if (indices<>nil) and (indices.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_0(mode, count, &type, indices[0], drawcount, basevertex) else z_MultiDrawElementsBaseVertex_ovr_0_anh0000100(mode, count, &type, IntPtr.Zero, drawcount, basevertex); private z_MultiDrawElementsBaseVertex_ovr_11_anh0000100 := GetProcOrNil&<procedure(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: array of IntPtr; drawcount: Int32; basevertex: IntPtr) := if (indices<>nil) and (indices.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_2(mode, count, &type, indices[0], drawcount, basevertex) else z_MultiDrawElementsBaseVertex_ovr_2_anh0000100(mode, count, &type, IntPtr.Zero, drawcount, basevertex); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; basevertex: array of Int32) := if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_0(mode, count, &type, indices, drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_0_anh0000001(mode, count, &type, indices, drawcount, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; var basevertex: Int32) := z_MultiDrawElementsBaseVertex_ovr_0(mode, count, &type, indices, drawcount, basevertex); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; basevertex: IntPtr) := z_MultiDrawElementsBaseVertex_ovr_2(mode, count, &type, indices, drawcount, basevertex); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: pointer; drawcount: Int32; basevertex: array of Int32) := if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_6(mode, count, &type, indices, drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_6_anh0000001(mode, count, &type, indices, drawcount, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: pointer; drawcount: Int32; var basevertex: Int32) := z_MultiDrawElementsBaseVertex_ovr_6(mode, count, &type, indices, drawcount, basevertex); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; var count: Int32; &type: DrawElementsType; indices: pointer; drawcount: Int32; basevertex: IntPtr) := z_MultiDrawElementsBaseVertex_ovr_8(mode, count, &type, indices, drawcount, basevertex); private z_MultiDrawElementsBaseVertex_ovr_18 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_18_anh0000100 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_18_anh0000001 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_18_anh0000101 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: array of IntPtr; drawcount: Int32; basevertex: array of Int32) := if (indices<>nil) and (indices.Length<>0) then if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_18(mode, count, &type, indices[0], drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_18_anh0000001(mode, count, &type, indices[0], drawcount, IntPtr.Zero) else if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_18_anh0000100(mode, count, &type, IntPtr.Zero, drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_18_anh0000101(mode, count, &type, IntPtr.Zero, drawcount, IntPtr.Zero); private z_MultiDrawElementsBaseVertex_ovr_19_anh0000100 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: array of IntPtr; drawcount: Int32; var basevertex: Int32) := if (indices<>nil) and (indices.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_18(mode, count, &type, indices[0], drawcount, basevertex) else z_MultiDrawElementsBaseVertex_ovr_18_anh0000100(mode, count, &type, IntPtr.Zero, drawcount, basevertex); private z_MultiDrawElementsBaseVertex_ovr_20 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_20_anh0000100 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: IntPtr; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: array of IntPtr; drawcount: Int32; basevertex: IntPtr) := if (indices<>nil) and (indices.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_20(mode, count, &type, indices[0], drawcount, basevertex) else z_MultiDrawElementsBaseVertex_ovr_20_anh0000100(mode, count, &type, IntPtr.Zero, drawcount, basevertex); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; basevertex: array of Int32) := if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_18(mode, count, &type, indices, drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_18_anh0000001(mode, count, &type, indices, drawcount, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; var basevertex: Int32) := z_MultiDrawElementsBaseVertex_ovr_18(mode, count, &type, indices, drawcount, basevertex); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; var indices: IntPtr; drawcount: Int32; basevertex: IntPtr) := z_MultiDrawElementsBaseVertex_ovr_20(mode, count, &type, indices, drawcount, basevertex); private z_MultiDrawElementsBaseVertex_ovr_24 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: pointer; drawcount: Int32; var basevertex: Int32)>(z_MultiDrawElementsBaseVertex_adr); private z_MultiDrawElementsBaseVertex_ovr_24_anh0000001 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: pointer; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: pointer; drawcount: Int32; basevertex: array of Int32) := if (basevertex<>nil) and (basevertex.Length<>0) then z_MultiDrawElementsBaseVertex_ovr_24(mode, count, &type, indices, drawcount, basevertex[0]) else z_MultiDrawElementsBaseVertex_ovr_24_anh0000001(mode, count, &type, indices, drawcount, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: pointer; drawcount: Int32; var basevertex: Int32) := z_MultiDrawElementsBaseVertex_ovr_24(mode, count, &type, indices, drawcount, basevertex); private z_MultiDrawElementsBaseVertex_ovr_26 := GetProcOrNil&<procedure(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: pointer; drawcount: Int32; basevertex: IntPtr)>(z_MultiDrawElementsBaseVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsBaseVertex(mode: PrimitiveType; count: IntPtr; &type: DrawElementsType; indices: pointer; drawcount: Int32; basevertex: IntPtr) := z_MultiDrawElementsBaseVertex_ovr_26(mode, count, &type, indices, drawcount, basevertex); // added in gl4.3 private z_MultiDrawElementsIndirect_adr := GetProcAddress('glMultiDrawElementsIndirect'); private z_MultiDrawElementsIndirect_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; &type: DrawElementsType; indirect: IntPtr; drawcount: Int32; stride: Int32)>(z_MultiDrawElementsIndirect_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsIndirect(mode: PrimitiveType; &type: DrawElementsType; indirect: IntPtr; drawcount: Int32; stride: Int32) := z_MultiDrawElementsIndirect_ovr_0(mode, &type, indirect, drawcount, stride); // added in gl4.6 private z_MultiDrawElementsIndirectCount_adr := GetProcAddress('glMultiDrawElementsIndirectCount'); private z_MultiDrawElementsIndirectCount_ovr_0 := GetProcOrNil&<procedure(mode: PrimitiveType; &type: DrawElementsType; indirect: IntPtr; drawcount: IntPtr; maxdrawcount: Int32; stride: Int32)>(z_MultiDrawElementsIndirectCount_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiDrawElementsIndirectCount(mode: PrimitiveType; &type: DrawElementsType; indirect: IntPtr; drawcount: IntPtr; maxdrawcount: Int32; stride: Int32) := z_MultiDrawElementsIndirectCount_ovr_0(mode, &type, indirect, drawcount, maxdrawcount, stride); // added in gl3.3 private z_MultiTexCoordP1ui_adr := GetProcAddress('glMultiTexCoordP1ui'); private z_MultiTexCoordP1ui_ovr_0 := GetProcOrNil&<procedure(texture: TextureUnit; &type: TexCoordPointerType; coords: UInt32)>(z_MultiTexCoordP1ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiTexCoordP1ui(texture: TextureUnit; &type: TexCoordPointerType; coords: UInt32) := z_MultiTexCoordP1ui_ovr_0(texture, &type, coords); // added in gl3.3 private z_MultiTexCoordP1uiv_adr := GetProcAddress('glMultiTexCoordP1uiv'); private z_MultiTexCoordP1uiv_ovr_0 := GetProcOrNil&<procedure(texture: TextureUnit; &type: TexCoordPointerType; var coords: UInt32)>(z_MultiTexCoordP1uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiTexCoordP1uiv(texture: TextureUnit; &type: TexCoordPointerType; var coords: UInt32) := z_MultiTexCoordP1uiv_ovr_0(texture, &type, coords); private z_MultiTexCoordP1uiv_ovr_1 := GetProcOrNil&<procedure(texture: TextureUnit; &type: TexCoordPointerType; coords: IntPtr)>(z_MultiTexCoordP1uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiTexCoordP1uiv(texture: TextureUnit; &type: TexCoordPointerType; coords: IntPtr) := z_MultiTexCoordP1uiv_ovr_1(texture, &type, coords); // added in gl3.3 private z_MultiTexCoordP2ui_adr := GetProcAddress('glMultiTexCoordP2ui'); private z_MultiTexCoordP2ui_ovr_0 := GetProcOrNil&<procedure(texture: TextureUnit; &type: TexCoordPointerType; coords: UInt32)>(z_MultiTexCoordP2ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiTexCoordP2ui(texture: TextureUnit; &type: TexCoordPointerType; coords: UInt32) := z_MultiTexCoordP2ui_ovr_0(texture, &type, coords); // added in gl3.3 private z_MultiTexCoordP2uiv_adr := GetProcAddress('glMultiTexCoordP2uiv'); private z_MultiTexCoordP2uiv_ovr_0 := GetProcOrNil&<procedure(texture: TextureUnit; &type: TexCoordPointerType; var coords: UInt32)>(z_MultiTexCoordP2uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiTexCoordP2uiv(texture: TextureUnit; &type: TexCoordPointerType; var coords: UInt32) := z_MultiTexCoordP2uiv_ovr_0(texture, &type, coords); private z_MultiTexCoordP2uiv_ovr_1 := GetProcOrNil&<procedure(texture: TextureUnit; &type: TexCoordPointerType; coords: IntPtr)>(z_MultiTexCoordP2uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiTexCoordP2uiv(texture: TextureUnit; &type: TexCoordPointerType; coords: IntPtr) := z_MultiTexCoordP2uiv_ovr_1(texture, &type, coords); // added in gl3.3 private z_MultiTexCoordP3ui_adr := GetProcAddress('glMultiTexCoordP3ui'); private z_MultiTexCoordP3ui_ovr_0 := GetProcOrNil&<procedure(texture: TextureUnit; &type: TexCoordPointerType; coords: UInt32)>(z_MultiTexCoordP3ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiTexCoordP3ui(texture: TextureUnit; &type: TexCoordPointerType; coords: UInt32) := z_MultiTexCoordP3ui_ovr_0(texture, &type, coords); // added in gl3.3 private z_MultiTexCoordP3uiv_adr := GetProcAddress('glMultiTexCoordP3uiv'); private z_MultiTexCoordP3uiv_ovr_0 := GetProcOrNil&<procedure(texture: TextureUnit; &type: TexCoordPointerType; var coords: UInt32)>(z_MultiTexCoordP3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiTexCoordP3uiv(texture: TextureUnit; &type: TexCoordPointerType; var coords: UInt32) := z_MultiTexCoordP3uiv_ovr_0(texture, &type, coords); private z_MultiTexCoordP3uiv_ovr_1 := GetProcOrNil&<procedure(texture: TextureUnit; &type: TexCoordPointerType; coords: IntPtr)>(z_MultiTexCoordP3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiTexCoordP3uiv(texture: TextureUnit; &type: TexCoordPointerType; coords: IntPtr) := z_MultiTexCoordP3uiv_ovr_1(texture, &type, coords); // added in gl3.3 private z_MultiTexCoordP4ui_adr := GetProcAddress('glMultiTexCoordP4ui'); private z_MultiTexCoordP4ui_ovr_0 := GetProcOrNil&<procedure(texture: TextureUnit; &type: TexCoordPointerType; coords: UInt32)>(z_MultiTexCoordP4ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiTexCoordP4ui(texture: TextureUnit; &type: TexCoordPointerType; coords: UInt32) := z_MultiTexCoordP4ui_ovr_0(texture, &type, coords); // added in gl3.3 private z_MultiTexCoordP4uiv_adr := GetProcAddress('glMultiTexCoordP4uiv'); private z_MultiTexCoordP4uiv_ovr_0 := GetProcOrNil&<procedure(texture: TextureUnit; &type: TexCoordPointerType; var coords: UInt32)>(z_MultiTexCoordP4uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiTexCoordP4uiv(texture: TextureUnit; &type: TexCoordPointerType; var coords: UInt32) := z_MultiTexCoordP4uiv_ovr_0(texture, &type, coords); private z_MultiTexCoordP4uiv_ovr_1 := GetProcOrNil&<procedure(texture: TextureUnit; &type: TexCoordPointerType; coords: IntPtr)>(z_MultiTexCoordP4uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure MultiTexCoordP4uiv(texture: TextureUnit; &type: TexCoordPointerType; coords: IntPtr) := z_MultiTexCoordP4uiv_ovr_1(texture, &type, coords); // added in gl4.5 private z_NamedBufferData_adr := GetProcAddress('glNamedBufferData'); private z_NamedBufferData_ovr_0 := GetProcOrNil&<procedure(buffer: gl_buffer; size: IntPtr; var data: Byte; usage: VertexBufferObjectUsage)>(z_NamedBufferData_adr); private [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure temp_NamedBufferData_ovr_0<T>(buffer: gl_buffer; size: IntPtr; var data: T; usage: VertexBufferObjectUsage); where T: record; begin z_NamedBufferData_ovr_0(buffer, size, PByte(pointer(@data))^, usage); end; private [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure temp_NamedBufferData_ovr_0_anh00010(buffer: gl_buffer; size: IntPtr; usage: VertexBufferObjectUsage) := z_NamedBufferData_ovr_0(buffer, size, PByte(nil)^, usage); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedBufferData<T>(buffer: gl_buffer; size: IntPtr; data: array of T; usage: VertexBufferObjectUsage); where T: record; begin if (data<>nil) and (data.Length<>0) then temp_NamedBufferData_ovr_0(buffer, size, data[0], usage) else temp_NamedBufferData_ovr_0_anh00010(buffer, size, usage); end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedBufferData<T>(buffer: gl_buffer; size: IntPtr; var data: T; usage: VertexBufferObjectUsage); where T: record; begin z_NamedBufferData_ovr_0(buffer, size, PByte(pointer(@data))^, usage); end; private z_NamedBufferData_ovr_2 := GetProcOrNil&<procedure(buffer: gl_buffer; size: IntPtr; data: IntPtr; usage: VertexBufferObjectUsage)>(z_NamedBufferData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedBufferData(buffer: gl_buffer; size: IntPtr; data: IntPtr; usage: VertexBufferObjectUsage) := z_NamedBufferData_ovr_2(buffer, size, data, usage); // added in gl4.5 private z_NamedBufferStorage_adr := GetProcAddress('glNamedBufferStorage'); private z_NamedBufferStorage_ovr_0 := GetProcOrNil&<procedure(buffer: gl_buffer; size: IntPtr; data: IntPtr; flags: BufferStorageMask)>(z_NamedBufferStorage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedBufferStorage(buffer: gl_buffer; size: IntPtr; data: IntPtr; flags: BufferStorageMask) := z_NamedBufferStorage_ovr_0(buffer, size, data, flags); // added in gl4.5 private z_NamedBufferSubData_adr := GetProcAddress('glNamedBufferSubData'); private z_NamedBufferSubData_ovr_0 := GetProcOrNil&<procedure(buffer: gl_buffer; offset: IntPtr; size: IntPtr; var data: Byte)>(z_NamedBufferSubData_adr); private [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure temp_NamedBufferSubData_ovr_0<T>(buffer: gl_buffer; offset: IntPtr; size: IntPtr; var data: T); where T: record; begin z_NamedBufferSubData_ovr_0(buffer, offset, size, PByte(pointer(@data))^); end; private [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure temp_NamedBufferSubData_ovr_0_anh00001(buffer: gl_buffer; offset: IntPtr; size: IntPtr) := z_NamedBufferSubData_ovr_0(buffer, offset, size, PByte(nil)^); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedBufferSubData<T>(buffer: gl_buffer; offset: IntPtr; size: IntPtr; data: array of T); where T: record; begin if (data<>nil) and (data.Length<>0) then temp_NamedBufferSubData_ovr_0(buffer, offset, size, data[0]) else temp_NamedBufferSubData_ovr_0_anh00001(buffer, offset, size); end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedBufferSubData<T>(buffer: gl_buffer; offset: IntPtr; size: IntPtr; var data: T); where T: record; begin z_NamedBufferSubData_ovr_0(buffer, offset, size, PByte(pointer(@data))^); end; private z_NamedBufferSubData_ovr_2 := GetProcOrNil&<procedure(buffer: gl_buffer; offset: IntPtr; size: IntPtr; data: IntPtr)>(z_NamedBufferSubData_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedBufferSubData(buffer: gl_buffer; offset: IntPtr; size: IntPtr; data: IntPtr) := z_NamedBufferSubData_ovr_2(buffer, offset, size, data); // added in gl4.5 private z_NamedFramebufferDrawBuffer_adr := GetProcAddress('glNamedFramebufferDrawBuffer'); private z_NamedFramebufferDrawBuffer_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; buf: ColorBuffer)>(z_NamedFramebufferDrawBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedFramebufferDrawBuffer(framebuffer: gl_framebuffer; buf: ColorBuffer) := z_NamedFramebufferDrawBuffer_ovr_0(framebuffer, buf); // added in gl4.5 private z_NamedFramebufferDrawBuffers_adr := GetProcAddress('glNamedFramebufferDrawBuffers'); private z_NamedFramebufferDrawBuffers_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; n: Int32; var bufs: ColorBuffer)>(z_NamedFramebufferDrawBuffers_adr); private z_NamedFramebufferDrawBuffers_ovr_0_anh0001 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; n: Int32; bufs: IntPtr)>(z_NamedFramebufferDrawBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedFramebufferDrawBuffers(framebuffer: gl_framebuffer; n: Int32; bufs: array of ColorBuffer) := if (bufs<>nil) and (bufs.Length<>0) then z_NamedFramebufferDrawBuffers_ovr_0(framebuffer, n, bufs[0]) else z_NamedFramebufferDrawBuffers_ovr_0_anh0001(framebuffer, n, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedFramebufferDrawBuffers(framebuffer: gl_framebuffer; n: Int32; var bufs: ColorBuffer) := z_NamedFramebufferDrawBuffers_ovr_0(framebuffer, n, bufs); private z_NamedFramebufferDrawBuffers_ovr_2 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; n: Int32; bufs: IntPtr)>(z_NamedFramebufferDrawBuffers_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedFramebufferDrawBuffers(framebuffer: gl_framebuffer; n: Int32; bufs: IntPtr) := z_NamedFramebufferDrawBuffers_ovr_2(framebuffer, n, bufs); // added in gl4.5 private z_NamedFramebufferParameteri_adr := GetProcAddress('glNamedFramebufferParameteri'); private z_NamedFramebufferParameteri_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; pname: FramebufferParameterName; param: Int32)>(z_NamedFramebufferParameteri_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedFramebufferParameteri(framebuffer: gl_framebuffer; pname: FramebufferParameterName; param: Int32) := z_NamedFramebufferParameteri_ovr_0(framebuffer, pname, param); // added in gl4.5 private z_NamedFramebufferReadBuffer_adr := GetProcAddress('glNamedFramebufferReadBuffer'); private z_NamedFramebufferReadBuffer_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; src: ColorBuffer)>(z_NamedFramebufferReadBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedFramebufferReadBuffer(framebuffer: gl_framebuffer; src: ColorBuffer) := z_NamedFramebufferReadBuffer_ovr_0(framebuffer, src); // added in gl4.5 private z_NamedFramebufferRenderbuffer_adr := GetProcAddress('glNamedFramebufferRenderbuffer'); private z_NamedFramebufferRenderbuffer_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; attachment: FramebufferAttachment; _renderbuffertarget: RenderbufferTarget; renderbuffer: gl_renderbuffer)>(z_NamedFramebufferRenderbuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedFramebufferRenderbuffer(framebuffer: gl_framebuffer; attachment: FramebufferAttachment; _renderbuffertarget: RenderbufferTarget; renderbuffer: gl_renderbuffer) := z_NamedFramebufferRenderbuffer_ovr_0(framebuffer, attachment, _renderbuffertarget, renderbuffer); // added in gl4.5 private z_NamedFramebufferTexture_adr := GetProcAddress('glNamedFramebufferTexture'); private z_NamedFramebufferTexture_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; attachment: FramebufferAttachment; texture: gl_texture; level: Int32)>(z_NamedFramebufferTexture_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedFramebufferTexture(framebuffer: gl_framebuffer; attachment: FramebufferAttachment; texture: gl_texture; level: Int32) := z_NamedFramebufferTexture_ovr_0(framebuffer, attachment, texture, level); // added in gl4.5 private z_NamedFramebufferTextureLayer_adr := GetProcAddress('glNamedFramebufferTextureLayer'); private z_NamedFramebufferTextureLayer_ovr_0 := GetProcOrNil&<procedure(framebuffer: gl_framebuffer; attachment: FramebufferAttachment; texture: gl_texture; level: Int32; layer: Int32)>(z_NamedFramebufferTextureLayer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedFramebufferTextureLayer(framebuffer: gl_framebuffer; attachment: FramebufferAttachment; texture: gl_texture; level: Int32; layer: Int32) := z_NamedFramebufferTextureLayer_ovr_0(framebuffer, attachment, texture, level, layer); // added in gl4.5 private z_NamedRenderbufferStorage_adr := GetProcAddress('glNamedRenderbufferStorage'); private z_NamedRenderbufferStorage_ovr_0 := GetProcOrNil&<procedure(renderbuffer: gl_renderbuffer; _internalformat: InternalFormat; width: Int32; height: Int32)>(z_NamedRenderbufferStorage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedRenderbufferStorage(renderbuffer: gl_renderbuffer; _internalformat: InternalFormat; width: Int32; height: Int32) := z_NamedRenderbufferStorage_ovr_0(renderbuffer, _internalformat, width, height); // added in gl4.5 private z_NamedRenderbufferStorageMultisample_adr := GetProcAddress('glNamedRenderbufferStorageMultisample'); private z_NamedRenderbufferStorageMultisample_ovr_0 := GetProcOrNil&<procedure(renderbuffer: gl_renderbuffer; samples: Int32; _internalformat: InternalFormat; width: Int32; height: Int32)>(z_NamedRenderbufferStorageMultisample_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NamedRenderbufferStorageMultisample(renderbuffer: gl_renderbuffer; samples: Int32; _internalformat: InternalFormat; width: Int32; height: Int32) := z_NamedRenderbufferStorageMultisample_ovr_0(renderbuffer, samples, _internalformat, width, height); // added in gl3.3 private z_NormalP3ui_adr := GetProcAddress('glNormalP3ui'); private z_NormalP3ui_ovr_0 := GetProcOrNil&<procedure(&type: NormalPointerType; coords: UInt32)>(z_NormalP3ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NormalP3ui(&type: NormalPointerType; coords: UInt32) := z_NormalP3ui_ovr_0(&type, coords); // added in gl3.3 private z_NormalP3uiv_adr := GetProcAddress('glNormalP3uiv'); private z_NormalP3uiv_ovr_0 := GetProcOrNil&<procedure(&type: NormalPointerType; var coords: UInt32)>(z_NormalP3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NormalP3uiv(&type: NormalPointerType; var coords: UInt32) := z_NormalP3uiv_ovr_0(&type, coords); private z_NormalP3uiv_ovr_1 := GetProcOrNil&<procedure(&type: NormalPointerType; coords: IntPtr)>(z_NormalP3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure NormalP3uiv(&type: NormalPointerType; coords: IntPtr) := z_NormalP3uiv_ovr_1(&type, coords); // added in gl4.3 private z_ObjectLabel_adr := GetProcAddress('glObjectLabel'); private z_ObjectLabel_ovr_0 := GetProcOrNil&<procedure(identifier: ObjectIdentifier; name: UInt32; length: Int32; &label: IntPtr)>(z_ObjectLabel_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ObjectLabel(identifier: ObjectIdentifier; name: UInt32; length: Int32; &label: string); begin var par_4_str_ptr: IntPtr; try par_4_str_ptr := Marshal.StringToHGlobalAnsi(&label); z_ObjectLabel_ovr_0(identifier, name, length, par_4_str_ptr); finally Marshal.FreeHGlobal(par_4_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ObjectLabel(identifier: ObjectIdentifier; name: UInt32; length: Int32; &label: IntPtr) := z_ObjectLabel_ovr_0(identifier, name, length, &label); // added in gl4.3 private z_ObjectPtrLabel_adr := GetProcAddress('glObjectPtrLabel'); private z_ObjectPtrLabel_ovr_0 := GetProcOrNil&<procedure(ptr: IntPtr; length: Int32; &label: IntPtr)>(z_ObjectPtrLabel_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ObjectPtrLabel(ptr: IntPtr; length: Int32; &label: string); begin var par_3_str_ptr: IntPtr; try par_3_str_ptr := Marshal.StringToHGlobalAnsi(&label); z_ObjectPtrLabel_ovr_0(ptr, length, par_3_str_ptr); finally Marshal.FreeHGlobal(par_3_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ObjectPtrLabel(ptr: IntPtr; length: Int32; &label: IntPtr) := z_ObjectPtrLabel_ovr_0(ptr, length, &label); // added in gl4.0 private z_PatchParameterfv_adr := GetProcAddress('glPatchParameterfv'); private z_PatchParameterfv_ovr_0 := GetProcOrNil&<procedure(pname: PatchParameterName; var values: single)>(z_PatchParameterfv_adr); private z_PatchParameterfv_ovr_0_anh001 := GetProcOrNil&<procedure(pname: PatchParameterName; values: IntPtr)>(z_PatchParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PatchParameterfv(pname: PatchParameterName; values: array of single) := if (values<>nil) and (values.Length<>0) then z_PatchParameterfv_ovr_0(pname, values[0]) else z_PatchParameterfv_ovr_0_anh001(pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PatchParameterfv(pname: PatchParameterName; var values: single) := z_PatchParameterfv_ovr_0(pname, values); private z_PatchParameterfv_ovr_2 := GetProcOrNil&<procedure(pname: PatchParameterName; values: IntPtr)>(z_PatchParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PatchParameterfv(pname: PatchParameterName; values: IntPtr) := z_PatchParameterfv_ovr_2(pname, values); // added in gl4.0 private z_PatchParameteri_adr := GetProcAddress('glPatchParameteri'); private z_PatchParameteri_ovr_0 := GetProcOrNil&<procedure(pname: PatchParameterName; value: Int32)>(z_PatchParameteri_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PatchParameteri(pname: PatchParameterName; value: Int32) := z_PatchParameteri_ovr_0(pname, value); // added in gl4.0 private z_PauseTransformFeedback_adr := GetProcAddress('glPauseTransformFeedback'); private z_PauseTransformFeedback_ovr_0 := GetProcOrNil&<procedure>(z_PauseTransformFeedback_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PauseTransformFeedback := z_PauseTransformFeedback_ovr_0; // added in gl1.0 private z_PixelStoref_adr := GetProcAddress('glPixelStoref'); private z_PixelStoref_ovr_0 := GetProcOrNil&<procedure(pname: PixelStoreParameter; param: single)>(z_PixelStoref_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PixelStoref(pname: PixelStoreParameter; param: single) := z_PixelStoref_ovr_0(pname, param); // added in gl1.0 private z_PixelStorei_adr := GetProcAddress('glPixelStorei'); private z_PixelStorei_ovr_0 := GetProcOrNil&<procedure(pname: PixelStoreParameter; param: Int32)>(z_PixelStorei_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PixelStorei(pname: PixelStoreParameter; param: Int32) := z_PixelStorei_ovr_0(pname, param); // added in gl1.4 private z_PointParameterf_adr := GetProcAddress('glPointParameterf'); private z_PointParameterf_ovr_0 := GetProcOrNil&<procedure(pname: PointParameterNameARB; param: single)>(z_PointParameterf_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PointParameterf(pname: PointParameterNameARB; param: single) := z_PointParameterf_ovr_0(pname, param); // added in gl1.4 private z_PointParameterfv_adr := GetProcAddress('glPointParameterfv'); private z_PointParameterfv_ovr_0 := GetProcOrNil&<procedure(pname: PointParameterNameARB; var ¶ms: single)>(z_PointParameterfv_adr); private z_PointParameterfv_ovr_0_anh001 := GetProcOrNil&<procedure(pname: PointParameterNameARB; ¶ms: IntPtr)>(z_PointParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PointParameterfv(pname: PointParameterNameARB; ¶ms: array of single) := if (¶ms<>nil) and (¶ms.Length<>0) then z_PointParameterfv_ovr_0(pname, ¶ms[0]) else z_PointParameterfv_ovr_0_anh001(pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PointParameterfv(pname: PointParameterNameARB; var ¶ms: single) := z_PointParameterfv_ovr_0(pname, ¶ms); private z_PointParameterfv_ovr_2 := GetProcOrNil&<procedure(pname: PointParameterNameARB; ¶ms: IntPtr)>(z_PointParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PointParameterfv(pname: PointParameterNameARB; ¶ms: IntPtr) := z_PointParameterfv_ovr_2(pname, ¶ms); // added in gl1.4 private z_PointParameteri_adr := GetProcAddress('glPointParameteri'); private z_PointParameteri_ovr_0 := GetProcOrNil&<procedure(pname: PointParameterNameARB; param: Int32)>(z_PointParameteri_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PointParameteri(pname: PointParameterNameARB; param: Int32) := z_PointParameteri_ovr_0(pname, param); // added in gl1.4 private z_PointParameteriv_adr := GetProcAddress('glPointParameteriv'); private z_PointParameteriv_ovr_0 := GetProcOrNil&<procedure(pname: PointParameterNameARB; var ¶ms: Int32)>(z_PointParameteriv_adr); private z_PointParameteriv_ovr_0_anh001 := GetProcOrNil&<procedure(pname: PointParameterNameARB; ¶ms: IntPtr)>(z_PointParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PointParameteriv(pname: PointParameterNameARB; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_PointParameteriv_ovr_0(pname, ¶ms[0]) else z_PointParameteriv_ovr_0_anh001(pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PointParameteriv(pname: PointParameterNameARB; var ¶ms: Int32) := z_PointParameteriv_ovr_0(pname, ¶ms); private z_PointParameteriv_ovr_2 := GetProcOrNil&<procedure(pname: PointParameterNameARB; ¶ms: IntPtr)>(z_PointParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PointParameteriv(pname: PointParameterNameARB; ¶ms: IntPtr) := z_PointParameteriv_ovr_2(pname, ¶ms); // added in gl1.0 private z_PointSize_adr := GetProcAddress('glPointSize'); private z_PointSize_ovr_0 := GetProcOrNil&<procedure(size: single)>(z_PointSize_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PointSize(size: single) := z_PointSize_ovr_0(size); // added in gl1.0 private z_PolygonMode_adr := GetProcAddress('glPolygonMode'); private z_PolygonMode_ovr_0 := GetProcOrNil&<procedure(face: MaterialFace; mode: OpenGL.PolygonMode)>(z_PolygonMode_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PolygonMode(face: MaterialFace; mode: OpenGL.PolygonMode) := z_PolygonMode_ovr_0(face, mode); // added in gl1.1 private z_PolygonOffset_adr := GetProcAddress('glPolygonOffset'); private z_PolygonOffset_ovr_0 := GetProcOrNil&<procedure(factor: single; units: single)>(z_PolygonOffset_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PolygonOffset(factor: single; units: single) := z_PolygonOffset_ovr_0(factor, units); // added in gl4.6 private z_PolygonOffsetClamp_adr := GetProcAddress('glPolygonOffsetClamp'); private z_PolygonOffsetClamp_ovr_0 := GetProcOrNil&<procedure(factor: single; units: single; clamp: single)>(z_PolygonOffsetClamp_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PolygonOffsetClamp(factor: single; units: single; clamp: single) := z_PolygonOffsetClamp_ovr_0(factor, units, clamp); // added in gl4.3 private z_PopDebugGroup_adr := GetProcAddress('glPopDebugGroup'); private z_PopDebugGroup_ovr_0 := GetProcOrNil&<procedure>(z_PopDebugGroup_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PopDebugGroup := z_PopDebugGroup_ovr_0; // added in gl3.1 private z_PrimitiveRestartIndex_adr := GetProcAddress('glPrimitiveRestartIndex'); private z_PrimitiveRestartIndex_ovr_0 := GetProcOrNil&<procedure(index: UInt32)>(z_PrimitiveRestartIndex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PrimitiveRestartIndex(index: UInt32) := z_PrimitiveRestartIndex_ovr_0(index); // added in gl4.1 private z_ProgramBinary_adr := GetProcAddress('glProgramBinary'); private z_ProgramBinary_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; binaryFormat: DummyEnum; binary: IntPtr; length: Int32)>(z_ProgramBinary_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramBinary(&program: gl_program; binaryFormat: DummyEnum; binary: IntPtr; length: Int32) := z_ProgramBinary_ovr_0(&program, binaryFormat, binary, length); // added in gl4.1 private z_ProgramParameteri_adr := GetProcAddress('glProgramParameteri'); private z_ProgramParameteri_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; pname: ProgramParameterPName; value: Int32)>(z_ProgramParameteri_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramParameteri(&program: gl_program; pname: ProgramParameterPName; value: Int32) := z_ProgramParameteri_ovr_0(&program, pname, value); // added in gl4.1 private z_ProgramUniform1d_adr := GetProcAddress('glProgramUniform1d'); private z_ProgramUniform1d_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: real)>(z_ProgramUniform1d_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1d(&program: gl_program; location: Int32; v0: real) := z_ProgramUniform1d_ovr_0(&program, location, v0); // added in gl4.1 private z_ProgramUniform1dv_adr := GetProcAddress('glProgramUniform1dv'); private z_ProgramUniform1dv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: real)>(z_ProgramUniform1dv_adr); private z_ProgramUniform1dv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform1dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1dv(&program: gl_program; location: Int32; count: Int32; value: array of real) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform1dv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform1dv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1dv(&program: gl_program; location: Int32; count: Int32; var value: real) := z_ProgramUniform1dv_ovr_0(&program, location, count, value); private z_ProgramUniform1dv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform1dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1dv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform1dv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform1f_adr := GetProcAddress('glProgramUniform1f'); private z_ProgramUniform1f_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: single)>(z_ProgramUniform1f_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1f(&program: gl_program; location: Int32; v0: single) := z_ProgramUniform1f_ovr_0(&program, location, v0); // added in gl4.1 private z_ProgramUniform1fv_adr := GetProcAddress('glProgramUniform1fv'); private z_ProgramUniform1fv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: single)>(z_ProgramUniform1fv_adr); private z_ProgramUniform1fv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform1fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1fv(&program: gl_program; location: Int32; count: Int32; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform1fv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform1fv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1fv(&program: gl_program; location: Int32; count: Int32; var value: single) := z_ProgramUniform1fv_ovr_0(&program, location, count, value); private z_ProgramUniform1fv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform1fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1fv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform1fv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform1i_adr := GetProcAddress('glProgramUniform1i'); private z_ProgramUniform1i_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: Int32)>(z_ProgramUniform1i_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1i(&program: gl_program; location: Int32; v0: Int32) := z_ProgramUniform1i_ovr_0(&program, location, v0); // added in gl4.1 private z_ProgramUniform1iv_adr := GetProcAddress('glProgramUniform1iv'); private z_ProgramUniform1iv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: Int32)>(z_ProgramUniform1iv_adr); private z_ProgramUniform1iv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform1iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1iv(&program: gl_program; location: Int32; count: Int32; value: array of Int32) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform1iv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform1iv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1iv(&program: gl_program; location: Int32; count: Int32; var value: Int32) := z_ProgramUniform1iv_ovr_0(&program, location, count, value); private z_ProgramUniform1iv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform1iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1iv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform1iv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform1ui_adr := GetProcAddress('glProgramUniform1ui'); private z_ProgramUniform1ui_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: UInt32)>(z_ProgramUniform1ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1ui(&program: gl_program; location: Int32; v0: UInt32) := z_ProgramUniform1ui_ovr_0(&program, location, v0); // added in gl4.1 private z_ProgramUniform1uiv_adr := GetProcAddress('glProgramUniform1uiv'); private z_ProgramUniform1uiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: UInt32)>(z_ProgramUniform1uiv_adr); private z_ProgramUniform1uiv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform1uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1uiv(&program: gl_program; location: Int32; count: Int32; value: array of UInt32) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform1uiv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform1uiv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1uiv(&program: gl_program; location: Int32; count: Int32; var value: UInt32) := z_ProgramUniform1uiv_ovr_0(&program, location, count, value); private z_ProgramUniform1uiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform1uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform1uiv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform1uiv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform2d_adr := GetProcAddress('glProgramUniform2d'); private z_ProgramUniform2d_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: real; v1: real)>(z_ProgramUniform2d_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2d(&program: gl_program; location: Int32; v0: real; v1: real) := z_ProgramUniform2d_ovr_0(&program, location, v0, v1); // added in gl4.1 private z_ProgramUniform2dv_adr := GetProcAddress('glProgramUniform2dv'); private z_ProgramUniform2dv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: real)>(z_ProgramUniform2dv_adr); private z_ProgramUniform2dv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2dv(&program: gl_program; location: Int32; count: Int32; value: array of real) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform2dv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform2dv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2dv(&program: gl_program; location: Int32; count: Int32; var value: real) := z_ProgramUniform2dv_ovr_0(&program, location, count, value); private z_ProgramUniform2dv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2dv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform2dv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform2f_adr := GetProcAddress('glProgramUniform2f'); private z_ProgramUniform2f_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: single; v1: single)>(z_ProgramUniform2f_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2f(&program: gl_program; location: Int32; v0: single; v1: single) := z_ProgramUniform2f_ovr_0(&program, location, v0, v1); // added in gl4.1 private z_ProgramUniform2fv_adr := GetProcAddress('glProgramUniform2fv'); private z_ProgramUniform2fv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: single)>(z_ProgramUniform2fv_adr); private z_ProgramUniform2fv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2fv(&program: gl_program; location: Int32; count: Int32; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform2fv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform2fv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2fv(&program: gl_program; location: Int32; count: Int32; var value: single) := z_ProgramUniform2fv_ovr_0(&program, location, count, value); private z_ProgramUniform2fv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2fv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform2fv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform2i_adr := GetProcAddress('glProgramUniform2i'); private z_ProgramUniform2i_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: Int32; v1: Int32)>(z_ProgramUniform2i_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2i(&program: gl_program; location: Int32; v0: Int32; v1: Int32) := z_ProgramUniform2i_ovr_0(&program, location, v0, v1); // added in gl4.1 private z_ProgramUniform2iv_adr := GetProcAddress('glProgramUniform2iv'); private z_ProgramUniform2iv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: Int32)>(z_ProgramUniform2iv_adr); private z_ProgramUniform2iv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform2iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2iv(&program: gl_program; location: Int32; count: Int32; value: array of Int32) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform2iv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform2iv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2iv(&program: gl_program; location: Int32; count: Int32; var value: Int32) := z_ProgramUniform2iv_ovr_0(&program, location, count, value); private z_ProgramUniform2iv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform2iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2iv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform2iv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform2ui_adr := GetProcAddress('glProgramUniform2ui'); private z_ProgramUniform2ui_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: UInt32; v1: UInt32)>(z_ProgramUniform2ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2ui(&program: gl_program; location: Int32; v0: UInt32; v1: UInt32) := z_ProgramUniform2ui_ovr_0(&program, location, v0, v1); // added in gl4.1 private z_ProgramUniform2uiv_adr := GetProcAddress('glProgramUniform2uiv'); private z_ProgramUniform2uiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: UInt32)>(z_ProgramUniform2uiv_adr); private z_ProgramUniform2uiv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform2uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2uiv(&program: gl_program; location: Int32; count: Int32; value: array of UInt32) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform2uiv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform2uiv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2uiv(&program: gl_program; location: Int32; count: Int32; var value: UInt32) := z_ProgramUniform2uiv_ovr_0(&program, location, count, value); private z_ProgramUniform2uiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform2uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform2uiv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform2uiv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform3d_adr := GetProcAddress('glProgramUniform3d'); private z_ProgramUniform3d_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: real; v1: real; v2: real)>(z_ProgramUniform3d_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3d(&program: gl_program; location: Int32; v0: real; v1: real; v2: real) := z_ProgramUniform3d_ovr_0(&program, location, v0, v1, v2); // added in gl4.1 private z_ProgramUniform3dv_adr := GetProcAddress('glProgramUniform3dv'); private z_ProgramUniform3dv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: real)>(z_ProgramUniform3dv_adr); private z_ProgramUniform3dv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3dv(&program: gl_program; location: Int32; count: Int32; value: array of real) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform3dv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform3dv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3dv(&program: gl_program; location: Int32; count: Int32; var value: real) := z_ProgramUniform3dv_ovr_0(&program, location, count, value); private z_ProgramUniform3dv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3dv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform3dv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform3f_adr := GetProcAddress('glProgramUniform3f'); private z_ProgramUniform3f_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: single; v1: single; v2: single)>(z_ProgramUniform3f_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3f(&program: gl_program; location: Int32; v0: single; v1: single; v2: single) := z_ProgramUniform3f_ovr_0(&program, location, v0, v1, v2); // added in gl4.1 private z_ProgramUniform3fv_adr := GetProcAddress('glProgramUniform3fv'); private z_ProgramUniform3fv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: single)>(z_ProgramUniform3fv_adr); private z_ProgramUniform3fv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3fv(&program: gl_program; location: Int32; count: Int32; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform3fv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform3fv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3fv(&program: gl_program; location: Int32; count: Int32; var value: single) := z_ProgramUniform3fv_ovr_0(&program, location, count, value); private z_ProgramUniform3fv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3fv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform3fv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform3i_adr := GetProcAddress('glProgramUniform3i'); private z_ProgramUniform3i_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: Int32; v1: Int32; v2: Int32)>(z_ProgramUniform3i_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3i(&program: gl_program; location: Int32; v0: Int32; v1: Int32; v2: Int32) := z_ProgramUniform3i_ovr_0(&program, location, v0, v1, v2); // added in gl4.1 private z_ProgramUniform3iv_adr := GetProcAddress('glProgramUniform3iv'); private z_ProgramUniform3iv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: Int32)>(z_ProgramUniform3iv_adr); private z_ProgramUniform3iv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform3iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3iv(&program: gl_program; location: Int32; count: Int32; value: array of Int32) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform3iv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform3iv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3iv(&program: gl_program; location: Int32; count: Int32; var value: Int32) := z_ProgramUniform3iv_ovr_0(&program, location, count, value); private z_ProgramUniform3iv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform3iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3iv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform3iv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform3ui_adr := GetProcAddress('glProgramUniform3ui'); private z_ProgramUniform3ui_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: UInt32; v1: UInt32; v2: UInt32)>(z_ProgramUniform3ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3ui(&program: gl_program; location: Int32; v0: UInt32; v1: UInt32; v2: UInt32) := z_ProgramUniform3ui_ovr_0(&program, location, v0, v1, v2); // added in gl4.1 private z_ProgramUniform3uiv_adr := GetProcAddress('glProgramUniform3uiv'); private z_ProgramUniform3uiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: UInt32)>(z_ProgramUniform3uiv_adr); private z_ProgramUniform3uiv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3uiv(&program: gl_program; location: Int32; count: Int32; value: array of UInt32) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform3uiv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform3uiv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3uiv(&program: gl_program; location: Int32; count: Int32; var value: UInt32) := z_ProgramUniform3uiv_ovr_0(&program, location, count, value); private z_ProgramUniform3uiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform3uiv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform3uiv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform4d_adr := GetProcAddress('glProgramUniform4d'); private z_ProgramUniform4d_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: real; v1: real; v2: real; v3: real)>(z_ProgramUniform4d_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4d(&program: gl_program; location: Int32; v0: real; v1: real; v2: real; v3: real) := z_ProgramUniform4d_ovr_0(&program, location, v0, v1, v2, v3); // added in gl4.1 private z_ProgramUniform4dv_adr := GetProcAddress('glProgramUniform4dv'); private z_ProgramUniform4dv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: real)>(z_ProgramUniform4dv_adr); private z_ProgramUniform4dv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4dv(&program: gl_program; location: Int32; count: Int32; value: array of real) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform4dv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform4dv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4dv(&program: gl_program; location: Int32; count: Int32; var value: real) := z_ProgramUniform4dv_ovr_0(&program, location, count, value); private z_ProgramUniform4dv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4dv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform4dv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform4f_adr := GetProcAddress('glProgramUniform4f'); private z_ProgramUniform4f_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: single; v1: single; v2: single; v3: single)>(z_ProgramUniform4f_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4f(&program: gl_program; location: Int32; v0: single; v1: single; v2: single; v3: single) := z_ProgramUniform4f_ovr_0(&program, location, v0, v1, v2, v3); // added in gl4.1 private z_ProgramUniform4fv_adr := GetProcAddress('glProgramUniform4fv'); private z_ProgramUniform4fv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: single)>(z_ProgramUniform4fv_adr); private z_ProgramUniform4fv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4fv(&program: gl_program; location: Int32; count: Int32; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform4fv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform4fv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4fv(&program: gl_program; location: Int32; count: Int32; var value: single) := z_ProgramUniform4fv_ovr_0(&program, location, count, value); private z_ProgramUniform4fv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4fv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform4fv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform4i_adr := GetProcAddress('glProgramUniform4i'); private z_ProgramUniform4i_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: Int32; v1: Int32; v2: Int32; v3: Int32)>(z_ProgramUniform4i_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4i(&program: gl_program; location: Int32; v0: Int32; v1: Int32; v2: Int32; v3: Int32) := z_ProgramUniform4i_ovr_0(&program, location, v0, v1, v2, v3); // added in gl4.1 private z_ProgramUniform4iv_adr := GetProcAddress('glProgramUniform4iv'); private z_ProgramUniform4iv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: Int32)>(z_ProgramUniform4iv_adr); private z_ProgramUniform4iv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform4iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4iv(&program: gl_program; location: Int32; count: Int32; value: array of Int32) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform4iv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform4iv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4iv(&program: gl_program; location: Int32; count: Int32; var value: Int32) := z_ProgramUniform4iv_ovr_0(&program, location, count, value); private z_ProgramUniform4iv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform4iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4iv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform4iv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniform4ui_adr := GetProcAddress('glProgramUniform4ui'); private z_ProgramUniform4ui_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; v0: UInt32; v1: UInt32; v2: UInt32; v3: UInt32)>(z_ProgramUniform4ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4ui(&program: gl_program; location: Int32; v0: UInt32; v1: UInt32; v2: UInt32; v3: UInt32) := z_ProgramUniform4ui_ovr_0(&program, location, v0, v1, v2, v3); // added in gl4.1 private z_ProgramUniform4uiv_adr := GetProcAddress('glProgramUniform4uiv'); private z_ProgramUniform4uiv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; var value: UInt32)>(z_ProgramUniform4uiv_adr); private z_ProgramUniform4uiv_ovr_0_anh00001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform4uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4uiv(&program: gl_program; location: Int32; count: Int32; value: array of UInt32) := if (value<>nil) and (value.Length<>0) then z_ProgramUniform4uiv_ovr_0(&program, location, count, value[0]) else z_ProgramUniform4uiv_ovr_0_anh00001(&program, location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4uiv(&program: gl_program; location: Int32; count: Int32; var value: UInt32) := z_ProgramUniform4uiv_ovr_0(&program, location, count, value); private z_ProgramUniform4uiv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; value: IntPtr)>(z_ProgramUniform4uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniform4uiv(&program: gl_program; location: Int32; count: Int32; value: IntPtr) := z_ProgramUniform4uiv_ovr_2(&program, location, count, value); // added in gl4.1 private z_ProgramUniformMatrix2dv_adr := GetProcAddress('glProgramUniformMatrix2dv'); private z_ProgramUniformMatrix2dv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real)>(z_ProgramUniformMatrix2dv_adr); private z_ProgramUniformMatrix2dv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix2dv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix2dv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real) := z_ProgramUniformMatrix2dv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix2dv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix2dv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix2fv_adr := GetProcAddress('glProgramUniformMatrix2fv'); private z_ProgramUniformMatrix2fv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single)>(z_ProgramUniformMatrix2fv_adr); private z_ProgramUniformMatrix2fv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix2fv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix2fv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single) := z_ProgramUniformMatrix2fv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix2fv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix2fv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix2x3dv_adr := GetProcAddress('glProgramUniformMatrix2x3dv'); private z_ProgramUniformMatrix2x3dv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real)>(z_ProgramUniformMatrix2x3dv_adr); private z_ProgramUniformMatrix2x3dv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix2x3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2x3dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix2x3dv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix2x3dv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2x3dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real) := z_ProgramUniformMatrix2x3dv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix2x3dv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix2x3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2x3dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix2x3dv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix2x3fv_adr := GetProcAddress('glProgramUniformMatrix2x3fv'); private z_ProgramUniformMatrix2x3fv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single)>(z_ProgramUniformMatrix2x3fv_adr); private z_ProgramUniformMatrix2x3fv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix2x3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2x3fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix2x3fv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix2x3fv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2x3fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single) := z_ProgramUniformMatrix2x3fv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix2x3fv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix2x3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2x3fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix2x3fv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix2x4dv_adr := GetProcAddress('glProgramUniformMatrix2x4dv'); private z_ProgramUniformMatrix2x4dv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real)>(z_ProgramUniformMatrix2x4dv_adr); private z_ProgramUniformMatrix2x4dv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix2x4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2x4dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix2x4dv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix2x4dv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2x4dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real) := z_ProgramUniformMatrix2x4dv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix2x4dv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix2x4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2x4dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix2x4dv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix2x4fv_adr := GetProcAddress('glProgramUniformMatrix2x4fv'); private z_ProgramUniformMatrix2x4fv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single)>(z_ProgramUniformMatrix2x4fv_adr); private z_ProgramUniformMatrix2x4fv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix2x4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2x4fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix2x4fv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix2x4fv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2x4fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single) := z_ProgramUniformMatrix2x4fv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix2x4fv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix2x4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix2x4fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix2x4fv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix3dv_adr := GetProcAddress('glProgramUniformMatrix3dv'); private z_ProgramUniformMatrix3dv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real)>(z_ProgramUniformMatrix3dv_adr); private z_ProgramUniformMatrix3dv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix3dv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix3dv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real) := z_ProgramUniformMatrix3dv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix3dv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix3dv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix3fv_adr := GetProcAddress('glProgramUniformMatrix3fv'); private z_ProgramUniformMatrix3fv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single)>(z_ProgramUniformMatrix3fv_adr); private z_ProgramUniformMatrix3fv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix3fv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix3fv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single) := z_ProgramUniformMatrix3fv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix3fv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix3fv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix3x2dv_adr := GetProcAddress('glProgramUniformMatrix3x2dv'); private z_ProgramUniformMatrix3x2dv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real)>(z_ProgramUniformMatrix3x2dv_adr); private z_ProgramUniformMatrix3x2dv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix3x2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3x2dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix3x2dv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix3x2dv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3x2dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real) := z_ProgramUniformMatrix3x2dv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix3x2dv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix3x2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3x2dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix3x2dv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix3x2fv_adr := GetProcAddress('glProgramUniformMatrix3x2fv'); private z_ProgramUniformMatrix3x2fv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single)>(z_ProgramUniformMatrix3x2fv_adr); private z_ProgramUniformMatrix3x2fv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix3x2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3x2fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix3x2fv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix3x2fv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3x2fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single) := z_ProgramUniformMatrix3x2fv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix3x2fv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix3x2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3x2fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix3x2fv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix3x4dv_adr := GetProcAddress('glProgramUniformMatrix3x4dv'); private z_ProgramUniformMatrix3x4dv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real)>(z_ProgramUniformMatrix3x4dv_adr); private z_ProgramUniformMatrix3x4dv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix3x4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3x4dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix3x4dv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix3x4dv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3x4dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real) := z_ProgramUniformMatrix3x4dv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix3x4dv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix3x4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3x4dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix3x4dv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix3x4fv_adr := GetProcAddress('glProgramUniformMatrix3x4fv'); private z_ProgramUniformMatrix3x4fv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single)>(z_ProgramUniformMatrix3x4fv_adr); private z_ProgramUniformMatrix3x4fv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix3x4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3x4fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix3x4fv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix3x4fv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3x4fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single) := z_ProgramUniformMatrix3x4fv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix3x4fv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix3x4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix3x4fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix3x4fv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix4dv_adr := GetProcAddress('glProgramUniformMatrix4dv'); private z_ProgramUniformMatrix4dv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real)>(z_ProgramUniformMatrix4dv_adr); private z_ProgramUniformMatrix4dv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix4dv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix4dv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real) := z_ProgramUniformMatrix4dv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix4dv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix4dv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix4fv_adr := GetProcAddress('glProgramUniformMatrix4fv'); private z_ProgramUniformMatrix4fv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single)>(z_ProgramUniformMatrix4fv_adr); private z_ProgramUniformMatrix4fv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix4fv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix4fv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single) := z_ProgramUniformMatrix4fv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix4fv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix4fv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix4x2dv_adr := GetProcAddress('glProgramUniformMatrix4x2dv'); private z_ProgramUniformMatrix4x2dv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real)>(z_ProgramUniformMatrix4x2dv_adr); private z_ProgramUniformMatrix4x2dv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix4x2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4x2dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix4x2dv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix4x2dv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4x2dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real) := z_ProgramUniformMatrix4x2dv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix4x2dv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix4x2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4x2dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix4x2dv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix4x2fv_adr := GetProcAddress('glProgramUniformMatrix4x2fv'); private z_ProgramUniformMatrix4x2fv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single)>(z_ProgramUniformMatrix4x2fv_adr); private z_ProgramUniformMatrix4x2fv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix4x2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4x2fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix4x2fv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix4x2fv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4x2fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single) := z_ProgramUniformMatrix4x2fv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix4x2fv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix4x2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4x2fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix4x2fv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix4x3dv_adr := GetProcAddress('glProgramUniformMatrix4x3dv'); private z_ProgramUniformMatrix4x3dv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real)>(z_ProgramUniformMatrix4x3dv_adr); private z_ProgramUniformMatrix4x3dv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix4x3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4x3dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix4x3dv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix4x3dv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4x3dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: real) := z_ProgramUniformMatrix4x3dv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix4x3dv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix4x3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4x3dv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix4x3dv_ovr_2(&program, location, count, transpose, value); // added in gl4.1 private z_ProgramUniformMatrix4x3fv_adr := GetProcAddress('glProgramUniformMatrix4x3fv'); private z_ProgramUniformMatrix4x3fv_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single)>(z_ProgramUniformMatrix4x3fv_adr); private z_ProgramUniformMatrix4x3fv_ovr_0_anh000001 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix4x3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4x3fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_ProgramUniformMatrix4x3fv_ovr_0(&program, location, count, transpose, value[0]) else z_ProgramUniformMatrix4x3fv_ovr_0_anh000001(&program, location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4x3fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; var value: single) := z_ProgramUniformMatrix4x3fv_ovr_0(&program, location, count, transpose, value); private z_ProgramUniformMatrix4x3fv_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_ProgramUniformMatrix4x3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProgramUniformMatrix4x3fv(&program: gl_program; location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_ProgramUniformMatrix4x3fv_ovr_2(&program, location, count, transpose, value); // added in gl3.2 private z_ProvokingVertex_adr := GetProcAddress('glProvokingVertex'); private z_ProvokingVertex_ovr_0 := GetProcOrNil&<procedure(mode: VertexProvokingMode)>(z_ProvokingVertex_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ProvokingVertex(mode: VertexProvokingMode) := z_ProvokingVertex_ovr_0(mode); // added in gl4.3 private z_PushDebugGroup_adr := GetProcAddress('glPushDebugGroup'); private z_PushDebugGroup_ovr_0 := GetProcOrNil&<procedure(source: DebugSource; id: UInt32; length: Int32; message: IntPtr)>(z_PushDebugGroup_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PushDebugGroup(source: DebugSource; id: UInt32; length: Int32; message: string); begin var par_4_str_ptr: IntPtr; try par_4_str_ptr := Marshal.StringToHGlobalAnsi(message); z_PushDebugGroup_ovr_0(source, id, length, par_4_str_ptr); finally Marshal.FreeHGlobal(par_4_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure PushDebugGroup(source: DebugSource; id: UInt32; length: Int32; message: IntPtr) := z_PushDebugGroup_ovr_0(source, id, length, message); // added in gl3.3 private z_QueryCounter_adr := GetProcAddress('glQueryCounter'); private z_QueryCounter_ovr_0 := GetProcOrNil&<procedure(id: gl_query; target: QueryCounterTarget)>(z_QueryCounter_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure QueryCounter(id: gl_query; target: QueryCounterTarget) := z_QueryCounter_ovr_0(id, target); // added in gl1.0 private z_ReadBuffer_adr := GetProcAddress('glReadBuffer'); private z_ReadBuffer_ovr_0 := GetProcOrNil&<procedure(src: ReadBufferMode)>(z_ReadBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ReadBuffer(src: ReadBufferMode) := z_ReadBuffer_ovr_0(src); // added in gl4.5 private z_ReadnPixels_adr := GetProcAddress('glReadnPixels'); private z_ReadnPixels_ovr_0 := GetProcOrNil&<procedure(x: Int32; y: Int32; width: Int32; height: Int32; format: PixelFormat; &type: PixelType; bufSize: Int32; data: IntPtr)>(z_ReadnPixels_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ReadnPixels(x: Int32; y: Int32; width: Int32; height: Int32; format: PixelFormat; &type: PixelType; bufSize: Int32; data: IntPtr) := z_ReadnPixels_ovr_0(x, y, width, height, format, &type, bufSize, data); // added in gl1.0 private z_ReadPixels_adr := GetProcAddress('glReadPixels'); private z_ReadPixels_ovr_0 := GetProcOrNil&<procedure(x: Int32; y: Int32; width: Int32; height: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr)>(z_ReadPixels_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ReadPixels(x: Int32; y: Int32; width: Int32; height: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr) := z_ReadPixels_ovr_0(x, y, width, height, format, &type, pixels); // added in gl4.1 private z_ReleaseShaderCompiler_adr := GetProcAddress('glReleaseShaderCompiler'); private z_ReleaseShaderCompiler_ovr_0 := GetProcOrNil&<procedure>(z_ReleaseShaderCompiler_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ReleaseShaderCompiler := z_ReleaseShaderCompiler_ovr_0; // added in gl3.0 private z_RenderbufferStorage_adr := GetProcAddress('glRenderbufferStorage'); private z_RenderbufferStorage_ovr_0 := GetProcOrNil&<procedure(target: RenderbufferTarget; _internalformat: InternalFormat; width: Int32; height: Int32)>(z_RenderbufferStorage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure RenderbufferStorage(target: RenderbufferTarget; _internalformat: InternalFormat; width: Int32; height: Int32) := z_RenderbufferStorage_ovr_0(target, _internalformat, width, height); // added in gl3.0 private z_RenderbufferStorageMultisample_adr := GetProcAddress('glRenderbufferStorageMultisample'); private z_RenderbufferStorageMultisample_ovr_0 := GetProcOrNil&<procedure(target: RenderbufferTarget; samples: Int32; _internalformat: InternalFormat; width: Int32; height: Int32)>(z_RenderbufferStorageMultisample_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure RenderbufferStorageMultisample(target: RenderbufferTarget; samples: Int32; _internalformat: InternalFormat; width: Int32; height: Int32) := z_RenderbufferStorageMultisample_ovr_0(target, samples, _internalformat, width, height); // added in gl4.0 private z_ResumeTransformFeedback_adr := GetProcAddress('glResumeTransformFeedback'); private z_ResumeTransformFeedback_ovr_0 := GetProcOrNil&<procedure>(z_ResumeTransformFeedback_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ResumeTransformFeedback := z_ResumeTransformFeedback_ovr_0; // added in gl1.3 private z_SampleCoverage_adr := GetProcAddress('glSampleCoverage'); private z_SampleCoverage_ovr_0 := GetProcOrNil&<procedure(value: single; invert: boolean)>(z_SampleCoverage_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SampleCoverage(value: single; invert: boolean) := z_SampleCoverage_ovr_0(value, invert); // added in gl3.2 private z_SampleMaski_adr := GetProcAddress('glSampleMaski'); private z_SampleMaski_ovr_0 := GetProcOrNil&<procedure(maskNumber: UInt32; mask: DummyFlags)>(z_SampleMaski_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SampleMaski(maskNumber: UInt32; mask: DummyFlags) := z_SampleMaski_ovr_0(maskNumber, mask); // added in gl3.3 private z_SamplerParameterf_adr := GetProcAddress('glSamplerParameterf'); private z_SamplerParameterf_ovr_0 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: OpenGL.SamplerParameterF; param: single)>(z_SamplerParameterf_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SamplerParameterf(sampler: gl_sampler; pname: OpenGL.SamplerParameterF; param: single) := z_SamplerParameterf_ovr_0(sampler, pname, param); // added in gl3.3 private z_SamplerParameterfv_adr := GetProcAddress('glSamplerParameterfv'); private z_SamplerParameterfv_ovr_0 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: OpenGL.SamplerParameterF; var param: single)>(z_SamplerParameterfv_adr); private z_SamplerParameterfv_ovr_0_anh0001 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: OpenGL.SamplerParameterF; param: IntPtr)>(z_SamplerParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SamplerParameterfv(sampler: gl_sampler; pname: OpenGL.SamplerParameterF; param: array of single) := if (param<>nil) and (param.Length<>0) then z_SamplerParameterfv_ovr_0(sampler, pname, param[0]) else z_SamplerParameterfv_ovr_0_anh0001(sampler, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SamplerParameterfv(sampler: gl_sampler; pname: OpenGL.SamplerParameterF; var param: single) := z_SamplerParameterfv_ovr_0(sampler, pname, param); private z_SamplerParameterfv_ovr_2 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: OpenGL.SamplerParameterF; param: IntPtr)>(z_SamplerParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SamplerParameterfv(sampler: gl_sampler; pname: OpenGL.SamplerParameterF; param: IntPtr) := z_SamplerParameterfv_ovr_2(sampler, pname, param); // added in gl3.3 private z_SamplerParameteri_adr := GetProcAddress('glSamplerParameteri'); private z_SamplerParameteri_ovr_0 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; param: Int32)>(z_SamplerParameteri_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SamplerParameteri(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; param: Int32) := z_SamplerParameteri_ovr_0(sampler, pname, param); // added in gl3.3 private z_SamplerParameterIiv_adr := GetProcAddress('glSamplerParameterIiv'); private z_SamplerParameterIiv_ovr_0 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; var param: Int32)>(z_SamplerParameterIiv_adr); private z_SamplerParameterIiv_ovr_0_anh0001 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; param: IntPtr)>(z_SamplerParameterIiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SamplerParameterIiv(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; param: array of Int32) := if (param<>nil) and (param.Length<>0) then z_SamplerParameterIiv_ovr_0(sampler, pname, param[0]) else z_SamplerParameterIiv_ovr_0_anh0001(sampler, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SamplerParameterIiv(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; var param: Int32) := z_SamplerParameterIiv_ovr_0(sampler, pname, param); private z_SamplerParameterIiv_ovr_2 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; param: IntPtr)>(z_SamplerParameterIiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SamplerParameterIiv(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; param: IntPtr) := z_SamplerParameterIiv_ovr_2(sampler, pname, param); // added in gl3.3 private z_SamplerParameterIuiv_adr := GetProcAddress('glSamplerParameterIuiv'); private z_SamplerParameterIuiv_ovr_0 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; var param: UInt32)>(z_SamplerParameterIuiv_adr); private z_SamplerParameterIuiv_ovr_0_anh0001 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; param: IntPtr)>(z_SamplerParameterIuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SamplerParameterIuiv(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; param: array of UInt32) := if (param<>nil) and (param.Length<>0) then z_SamplerParameterIuiv_ovr_0(sampler, pname, param[0]) else z_SamplerParameterIuiv_ovr_0_anh0001(sampler, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SamplerParameterIuiv(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; var param: UInt32) := z_SamplerParameterIuiv_ovr_0(sampler, pname, param); private z_SamplerParameterIuiv_ovr_2 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; param: IntPtr)>(z_SamplerParameterIuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SamplerParameterIuiv(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; param: IntPtr) := z_SamplerParameterIuiv_ovr_2(sampler, pname, param); // added in gl3.3 private z_SamplerParameteriv_adr := GetProcAddress('glSamplerParameteriv'); private z_SamplerParameteriv_ovr_0 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; var param: Int32)>(z_SamplerParameteriv_adr); private z_SamplerParameteriv_ovr_0_anh0001 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; param: IntPtr)>(z_SamplerParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SamplerParameteriv(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; param: array of Int32) := if (param<>nil) and (param.Length<>0) then z_SamplerParameteriv_ovr_0(sampler, pname, param[0]) else z_SamplerParameteriv_ovr_0_anh0001(sampler, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SamplerParameteriv(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; var param: Int32) := z_SamplerParameteriv_ovr_0(sampler, pname, param); private z_SamplerParameteriv_ovr_2 := GetProcOrNil&<procedure(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; param: IntPtr)>(z_SamplerParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SamplerParameteriv(sampler: gl_sampler; pname: OpenGL.SamplerParameterI; param: IntPtr) := z_SamplerParameteriv_ovr_2(sampler, pname, param); // added in gl1.0 private z_Scissor_adr := GetProcAddress('glScissor'); private z_Scissor_ovr_0 := GetProcOrNil&<procedure(x: Int32; y: Int32; width: Int32; height: Int32)>(z_Scissor_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Scissor(x: Int32; y: Int32; width: Int32; height: Int32) := z_Scissor_ovr_0(x, y, width, height); // added in gl4.1 private z_ScissorArrayv_adr := GetProcAddress('glScissorArrayv'); private z_ScissorArrayv_ovr_0 := GetProcOrNil&<procedure(first: UInt32; count: Int32; var v: Int32)>(z_ScissorArrayv_adr); private z_ScissorArrayv_ovr_0_anh0001 := GetProcOrNil&<procedure(first: UInt32; count: Int32; v: IntPtr)>(z_ScissorArrayv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ScissorArrayv(first: UInt32; count: Int32; v: array of Int32) := if (v<>nil) and (v.Length<>0) then z_ScissorArrayv_ovr_0(first, count, v[0]) else z_ScissorArrayv_ovr_0_anh0001(first, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ScissorArrayv(first: UInt32; count: Int32; var v: Int32) := z_ScissorArrayv_ovr_0(first, count, v); private z_ScissorArrayv_ovr_2 := GetProcOrNil&<procedure(first: UInt32; count: Int32; v: IntPtr)>(z_ScissorArrayv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ScissorArrayv(first: UInt32; count: Int32; v: IntPtr) := z_ScissorArrayv_ovr_2(first, count, v); // added in gl4.1 private z_ScissorIndexed_adr := GetProcAddress('glScissorIndexed'); private z_ScissorIndexed_ovr_0 := GetProcOrNil&<procedure(index: UInt32; left: Int32; bottom: Int32; width: Int32; height: Int32)>(z_ScissorIndexed_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ScissorIndexed(index: UInt32; left: Int32; bottom: Int32; width: Int32; height: Int32) := z_ScissorIndexed_ovr_0(index, left, bottom, width, height); // added in gl4.1 private z_ScissorIndexedv_adr := GetProcAddress('glScissorIndexedv'); private z_ScissorIndexedv_ovr_0 := GetProcOrNil&<procedure(index: UInt32; var v: Int32)>(z_ScissorIndexedv_adr); private z_ScissorIndexedv_ovr_0_anh001 := GetProcOrNil&<procedure(index: UInt32; v: IntPtr)>(z_ScissorIndexedv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ScissorIndexedv(index: UInt32; v: array of Int32) := if (v<>nil) and (v.Length<>0) then z_ScissorIndexedv_ovr_0(index, v[0]) else z_ScissorIndexedv_ovr_0_anh001(index, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ScissorIndexedv(index: UInt32; var v: Int32) := z_ScissorIndexedv_ovr_0(index, v); private z_ScissorIndexedv_ovr_2 := GetProcOrNil&<procedure(index: UInt32; v: IntPtr)>(z_ScissorIndexedv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ScissorIndexedv(index: UInt32; v: IntPtr) := z_ScissorIndexedv_ovr_2(index, v); // added in gl3.3 private z_SecondaryColorP3ui_adr := GetProcAddress('glSecondaryColorP3ui'); private z_SecondaryColorP3ui_ovr_0 := GetProcOrNil&<procedure(&type: ColorPointerType; color: UInt32)>(z_SecondaryColorP3ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SecondaryColorP3ui(&type: ColorPointerType; color: UInt32) := z_SecondaryColorP3ui_ovr_0(&type, color); // added in gl3.3 private z_SecondaryColorP3uiv_adr := GetProcAddress('glSecondaryColorP3uiv'); private z_SecondaryColorP3uiv_ovr_0 := GetProcOrNil&<procedure(&type: ColorPointerType; var color: UInt32)>(z_SecondaryColorP3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SecondaryColorP3uiv(&type: ColorPointerType; var color: UInt32) := z_SecondaryColorP3uiv_ovr_0(&type, color); private z_SecondaryColorP3uiv_ovr_1 := GetProcOrNil&<procedure(&type: ColorPointerType; color: IntPtr)>(z_SecondaryColorP3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SecondaryColorP3uiv(&type: ColorPointerType; color: IntPtr) := z_SecondaryColorP3uiv_ovr_1(&type, color); // added in gl4.1 private z_ShaderBinary_adr := GetProcAddress('glShaderBinary'); private z_ShaderBinary_ovr_0 := GetProcOrNil&<procedure(count: Int32; var shaders: gl_shader; binaryFormat: ShaderBinaryFormat; binary: IntPtr; length: Int32)>(z_ShaderBinary_adr); private z_ShaderBinary_ovr_0_anh001000 := GetProcOrNil&<procedure(count: Int32; shaders: IntPtr; binaryFormat: ShaderBinaryFormat; binary: IntPtr; length: Int32)>(z_ShaderBinary_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ShaderBinary(count: Int32; shaders: array of gl_shader; binaryFormat: ShaderBinaryFormat; binary: IntPtr; length: Int32) := if (shaders<>nil) and (shaders.Length<>0) then z_ShaderBinary_ovr_0(count, shaders[0], binaryFormat, binary, length) else z_ShaderBinary_ovr_0_anh001000(count, IntPtr.Zero, binaryFormat, binary, length); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ShaderBinary(count: Int32; var shaders: gl_shader; binaryFormat: ShaderBinaryFormat; binary: IntPtr; length: Int32) := z_ShaderBinary_ovr_0(count, shaders, binaryFormat, binary, length); private z_ShaderBinary_ovr_2 := GetProcOrNil&<procedure(count: Int32; shaders: IntPtr; binaryFormat: ShaderBinaryFormat; binary: IntPtr; length: Int32)>(z_ShaderBinary_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ShaderBinary(count: Int32; shaders: IntPtr; binaryFormat: ShaderBinaryFormat; binary: IntPtr; length: Int32) := z_ShaderBinary_ovr_2(count, shaders, binaryFormat, binary, length); // added in gl2.0 private z_ShaderSource_adr := GetProcAddress('glShaderSource'); private z_ShaderSource_ovr_0 := GetProcOrNil&<procedure(shader: gl_shader; count: Int32; var _string: IntPtr; var length: Int32)>(z_ShaderSource_adr); private z_ShaderSource_ovr_0_anh00010 := GetProcOrNil&<procedure(shader: gl_shader; count: Int32; _string: IntPtr; var length: Int32)>(z_ShaderSource_adr); private z_ShaderSource_ovr_0_anh00001 := GetProcOrNil&<procedure(shader: gl_shader; count: Int32; var _string: IntPtr; length: IntPtr)>(z_ShaderSource_adr); private z_ShaderSource_ovr_0_anh00011 := GetProcOrNil&<procedure(shader: gl_shader; count: Int32; _string: IntPtr; length: IntPtr)>(z_ShaderSource_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ShaderSource(shader: gl_shader; count: Int32; _string: array of string; length: array of Int32); begin var par_3_str_ptr: array of IntPtr; try par_3_str_ptr := _string?.ConvertAll(arr_el1->Marshal.StringToHGlobalAnsi(arr_el1)); if (par_3_str_ptr<>nil) and (par_3_str_ptr.Length<>0) then if (length<>nil) and (length.Length<>0) then z_ShaderSource_ovr_0(shader, count, par_3_str_ptr[0], length[0]) else z_ShaderSource_ovr_0_anh00001(shader, count, par_3_str_ptr[0], IntPtr.Zero) else if (length<>nil) and (length.Length<>0) then z_ShaderSource_ovr_0_anh00010(shader, count, IntPtr.Zero, length[0]) else z_ShaderSource_ovr_0_anh00011(shader, count, IntPtr.Zero, IntPtr.Zero); finally foreach var arr_el1 in par_3_str_ptr do Marshal.FreeHGlobal(arr_el1); end; end; private z_ShaderSource_ovr_1_anh00010 := GetProcOrNil&<procedure(shader: gl_shader; count: Int32; _string: IntPtr; var length: Int32)>(z_ShaderSource_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ShaderSource(shader: gl_shader; count: Int32; _string: array of string; var length: Int32); begin var par_3_str_ptr: array of IntPtr; try par_3_str_ptr := _string?.ConvertAll(arr_el1->Marshal.StringToHGlobalAnsi(arr_el1)); if (par_3_str_ptr<>nil) and (par_3_str_ptr.Length<>0) then z_ShaderSource_ovr_0(shader, count, par_3_str_ptr[0], length) else z_ShaderSource_ovr_0_anh00010(shader, count, IntPtr.Zero, length); finally foreach var arr_el1 in par_3_str_ptr do Marshal.FreeHGlobal(arr_el1); end; end; private z_ShaderSource_ovr_2 := GetProcOrNil&<procedure(shader: gl_shader; count: Int32; var _string: IntPtr; length: IntPtr)>(z_ShaderSource_adr); private z_ShaderSource_ovr_2_anh00010 := GetProcOrNil&<procedure(shader: gl_shader; count: Int32; _string: IntPtr; length: IntPtr)>(z_ShaderSource_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ShaderSource(shader: gl_shader; count: Int32; _string: array of string; length: IntPtr); begin var par_3_str_ptr: array of IntPtr; try par_3_str_ptr := _string?.ConvertAll(arr_el1->Marshal.StringToHGlobalAnsi(arr_el1)); if (par_3_str_ptr<>nil) and (par_3_str_ptr.Length<>0) then z_ShaderSource_ovr_2(shader, count, par_3_str_ptr[0], length) else z_ShaderSource_ovr_2_anh00010(shader, count, IntPtr.Zero, length); finally foreach var arr_el1 in par_3_str_ptr do Marshal.FreeHGlobal(arr_el1); end; end; private z_ShaderSource_ovr_3_anh00010 := GetProcOrNil&<procedure(shader: gl_shader; count: Int32; _string: IntPtr; var length: Int32)>(z_ShaderSource_adr); private z_ShaderSource_ovr_3_anh00011 := GetProcOrNil&<procedure(shader: gl_shader; count: Int32; _string: IntPtr; length: IntPtr)>(z_ShaderSource_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ShaderSource(shader: gl_shader; count: Int32; _string: array of IntPtr; length: array of Int32) := if (_string<>nil) and (_string.Length<>0) then if (length<>nil) and (length.Length<>0) then z_ShaderSource_ovr_0(shader, count, _string[0], length[0]) else z_ShaderSource_ovr_0_anh00001(shader, count, _string[0], IntPtr.Zero) else if (length<>nil) and (length.Length<>0) then z_ShaderSource_ovr_0_anh00010(shader, count, IntPtr.Zero, length[0]) else z_ShaderSource_ovr_0_anh00011(shader, count, IntPtr.Zero, IntPtr.Zero); private z_ShaderSource_ovr_4_anh00010 := GetProcOrNil&<procedure(shader: gl_shader; count: Int32; _string: IntPtr; var length: Int32)>(z_ShaderSource_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ShaderSource(shader: gl_shader; count: Int32; _string: array of IntPtr; var length: Int32) := if (_string<>nil) and (_string.Length<>0) then z_ShaderSource_ovr_0(shader, count, _string[0], length) else z_ShaderSource_ovr_0_anh00010(shader, count, IntPtr.Zero, length); private z_ShaderSource_ovr_5_anh00010 := GetProcOrNil&<procedure(shader: gl_shader; count: Int32; _string: IntPtr; length: IntPtr)>(z_ShaderSource_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ShaderSource(shader: gl_shader; count: Int32; _string: array of IntPtr; length: IntPtr) := if (_string<>nil) and (_string.Length<>0) then z_ShaderSource_ovr_2(shader, count, _string[0], length) else z_ShaderSource_ovr_2_anh00010(shader, count, IntPtr.Zero, length); private z_ShaderSource_ovr_6 := GetProcOrNil&<procedure(shader: gl_shader; count: Int32; _string: IntPtr; var length: Int32)>(z_ShaderSource_adr); private z_ShaderSource_ovr_6_anh00001 := GetProcOrNil&<procedure(shader: gl_shader; count: Int32; _string: IntPtr; length: IntPtr)>(z_ShaderSource_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ShaderSource(shader: gl_shader; count: Int32; _string: IntPtr; length: array of Int32) := if (length<>nil) and (length.Length<>0) then z_ShaderSource_ovr_6(shader, count, _string, length[0]) else z_ShaderSource_ovr_6_anh00001(shader, count, _string, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ShaderSource(shader: gl_shader; count: Int32; _string: IntPtr; var length: Int32) := z_ShaderSource_ovr_6(shader, count, _string, length); private z_ShaderSource_ovr_8 := GetProcOrNil&<procedure(shader: gl_shader; count: Int32; _string: IntPtr; length: IntPtr)>(z_ShaderSource_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ShaderSource(shader: gl_shader; count: Int32; _string: IntPtr; length: IntPtr) := z_ShaderSource_ovr_8(shader, count, _string, length); // added in gl4.3 private z_ShaderStorageBlockBinding_adr := GetProcAddress('glShaderStorageBlockBinding'); private z_ShaderStorageBlockBinding_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; storageBlockIndex: UInt32; storageBlockBinding: UInt32)>(z_ShaderStorageBlockBinding_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ShaderStorageBlockBinding(&program: gl_program; storageBlockIndex: UInt32; storageBlockBinding: UInt32) := z_ShaderStorageBlockBinding_ovr_0(&program, storageBlockIndex, storageBlockBinding); // added in gl4.6 private z_SpecializeShader_adr := GetProcAddress('glSpecializeShader'); private z_SpecializeShader_ovr_0 := GetProcOrNil&<procedure(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; var pConstantIndex: UInt32; var pConstantValue: UInt32)>(z_SpecializeShader_adr); private z_SpecializeShader_ovr_0_anh000010 := GetProcOrNil&<procedure(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; pConstantIndex: IntPtr; var pConstantValue: UInt32)>(z_SpecializeShader_adr); private z_SpecializeShader_ovr_0_anh000001 := GetProcOrNil&<procedure(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; var pConstantIndex: UInt32; pConstantValue: IntPtr)>(z_SpecializeShader_adr); private z_SpecializeShader_ovr_0_anh000011 := GetProcOrNil&<procedure(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; pConstantIndex: IntPtr; pConstantValue: IntPtr)>(z_SpecializeShader_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: string; numSpecializationConstants: UInt32; pConstantIndex: array of UInt32; pConstantValue: array of UInt32); begin var par_2_str_ptr: IntPtr; try par_2_str_ptr := Marshal.StringToHGlobalAnsi(pEntryPoint); if (pConstantIndex<>nil) and (pConstantIndex.Length<>0) then if (pConstantValue<>nil) and (pConstantValue.Length<>0) then z_SpecializeShader_ovr_0(shader, par_2_str_ptr, numSpecializationConstants, pConstantIndex[0], pConstantValue[0]) else z_SpecializeShader_ovr_0_anh000001(shader, par_2_str_ptr, numSpecializationConstants, pConstantIndex[0], IntPtr.Zero) else if (pConstantValue<>nil) and (pConstantValue.Length<>0) then z_SpecializeShader_ovr_0_anh000010(shader, par_2_str_ptr, numSpecializationConstants, IntPtr.Zero, pConstantValue[0]) else z_SpecializeShader_ovr_0_anh000011(shader, par_2_str_ptr, numSpecializationConstants, IntPtr.Zero, IntPtr.Zero); finally Marshal.FreeHGlobal(par_2_str_ptr); end; end; private z_SpecializeShader_ovr_1_anh000010 := GetProcOrNil&<procedure(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; pConstantIndex: IntPtr; var pConstantValue: UInt32)>(z_SpecializeShader_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: string; numSpecializationConstants: UInt32; pConstantIndex: array of UInt32; var pConstantValue: UInt32); begin var par_2_str_ptr: IntPtr; try par_2_str_ptr := Marshal.StringToHGlobalAnsi(pEntryPoint); if (pConstantIndex<>nil) and (pConstantIndex.Length<>0) then z_SpecializeShader_ovr_0(shader, par_2_str_ptr, numSpecializationConstants, pConstantIndex[0], pConstantValue) else z_SpecializeShader_ovr_0_anh000010(shader, par_2_str_ptr, numSpecializationConstants, IntPtr.Zero, pConstantValue); finally Marshal.FreeHGlobal(par_2_str_ptr); end; end; private z_SpecializeShader_ovr_2 := GetProcOrNil&<procedure(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; var pConstantIndex: UInt32; pConstantValue: IntPtr)>(z_SpecializeShader_adr); private z_SpecializeShader_ovr_2_anh000010 := GetProcOrNil&<procedure(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; pConstantIndex: IntPtr; pConstantValue: IntPtr)>(z_SpecializeShader_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: string; numSpecializationConstants: UInt32; pConstantIndex: array of UInt32; pConstantValue: IntPtr); begin var par_2_str_ptr: IntPtr; try par_2_str_ptr := Marshal.StringToHGlobalAnsi(pEntryPoint); if (pConstantIndex<>nil) and (pConstantIndex.Length<>0) then z_SpecializeShader_ovr_2(shader, par_2_str_ptr, numSpecializationConstants, pConstantIndex[0], pConstantValue) else z_SpecializeShader_ovr_2_anh000010(shader, par_2_str_ptr, numSpecializationConstants, IntPtr.Zero, pConstantValue); finally Marshal.FreeHGlobal(par_2_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: string; numSpecializationConstants: UInt32; var pConstantIndex: UInt32; pConstantValue: array of UInt32); begin var par_2_str_ptr: IntPtr; try par_2_str_ptr := Marshal.StringToHGlobalAnsi(pEntryPoint); if (pConstantValue<>nil) and (pConstantValue.Length<>0) then z_SpecializeShader_ovr_0(shader, par_2_str_ptr, numSpecializationConstants, pConstantIndex, pConstantValue[0]) else z_SpecializeShader_ovr_0_anh000001(shader, par_2_str_ptr, numSpecializationConstants, pConstantIndex, IntPtr.Zero); finally Marshal.FreeHGlobal(par_2_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: string; numSpecializationConstants: UInt32; var pConstantIndex: UInt32; var pConstantValue: UInt32); begin var par_2_str_ptr: IntPtr; try par_2_str_ptr := Marshal.StringToHGlobalAnsi(pEntryPoint); z_SpecializeShader_ovr_0(shader, par_2_str_ptr, numSpecializationConstants, pConstantIndex, pConstantValue); finally Marshal.FreeHGlobal(par_2_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: string; numSpecializationConstants: UInt32; var pConstantIndex: UInt32; pConstantValue: IntPtr); begin var par_2_str_ptr: IntPtr; try par_2_str_ptr := Marshal.StringToHGlobalAnsi(pEntryPoint); z_SpecializeShader_ovr_2(shader, par_2_str_ptr, numSpecializationConstants, pConstantIndex, pConstantValue); finally Marshal.FreeHGlobal(par_2_str_ptr); end; end; private z_SpecializeShader_ovr_6 := GetProcOrNil&<procedure(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; pConstantIndex: IntPtr; var pConstantValue: UInt32)>(z_SpecializeShader_adr); private z_SpecializeShader_ovr_6_anh000001 := GetProcOrNil&<procedure(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; pConstantIndex: IntPtr; pConstantValue: IntPtr)>(z_SpecializeShader_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: string; numSpecializationConstants: UInt32; pConstantIndex: IntPtr; pConstantValue: array of UInt32); begin var par_2_str_ptr: IntPtr; try par_2_str_ptr := Marshal.StringToHGlobalAnsi(pEntryPoint); if (pConstantValue<>nil) and (pConstantValue.Length<>0) then z_SpecializeShader_ovr_6(shader, par_2_str_ptr, numSpecializationConstants, pConstantIndex, pConstantValue[0]) else z_SpecializeShader_ovr_6_anh000001(shader, par_2_str_ptr, numSpecializationConstants, pConstantIndex, IntPtr.Zero); finally Marshal.FreeHGlobal(par_2_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: string; numSpecializationConstants: UInt32; pConstantIndex: IntPtr; var pConstantValue: UInt32); begin var par_2_str_ptr: IntPtr; try par_2_str_ptr := Marshal.StringToHGlobalAnsi(pEntryPoint); z_SpecializeShader_ovr_6(shader, par_2_str_ptr, numSpecializationConstants, pConstantIndex, pConstantValue); finally Marshal.FreeHGlobal(par_2_str_ptr); end; end; private z_SpecializeShader_ovr_8 := GetProcOrNil&<procedure(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; pConstantIndex: IntPtr; pConstantValue: IntPtr)>(z_SpecializeShader_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: string; numSpecializationConstants: UInt32; pConstantIndex: IntPtr; pConstantValue: IntPtr); begin var par_2_str_ptr: IntPtr; try par_2_str_ptr := Marshal.StringToHGlobalAnsi(pEntryPoint); z_SpecializeShader_ovr_8(shader, par_2_str_ptr, numSpecializationConstants, pConstantIndex, pConstantValue); finally Marshal.FreeHGlobal(par_2_str_ptr); end; end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; pConstantIndex: array of UInt32; pConstantValue: array of UInt32) := if (pConstantIndex<>nil) and (pConstantIndex.Length<>0) then if (pConstantValue<>nil) and (pConstantValue.Length<>0) then z_SpecializeShader_ovr_0(shader, pEntryPoint, numSpecializationConstants, pConstantIndex[0], pConstantValue[0]) else z_SpecializeShader_ovr_0_anh000001(shader, pEntryPoint, numSpecializationConstants, pConstantIndex[0], IntPtr.Zero) else if (pConstantValue<>nil) and (pConstantValue.Length<>0) then z_SpecializeShader_ovr_0_anh000010(shader, pEntryPoint, numSpecializationConstants, IntPtr.Zero, pConstantValue[0]) else z_SpecializeShader_ovr_0_anh000011(shader, pEntryPoint, numSpecializationConstants, IntPtr.Zero, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; pConstantIndex: array of UInt32; var pConstantValue: UInt32) := if (pConstantIndex<>nil) and (pConstantIndex.Length<>0) then z_SpecializeShader_ovr_0(shader, pEntryPoint, numSpecializationConstants, pConstantIndex[0], pConstantValue) else z_SpecializeShader_ovr_0_anh000010(shader, pEntryPoint, numSpecializationConstants, IntPtr.Zero, pConstantValue); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; pConstantIndex: array of UInt32; pConstantValue: IntPtr) := if (pConstantIndex<>nil) and (pConstantIndex.Length<>0) then z_SpecializeShader_ovr_2(shader, pEntryPoint, numSpecializationConstants, pConstantIndex[0], pConstantValue) else z_SpecializeShader_ovr_2_anh000010(shader, pEntryPoint, numSpecializationConstants, IntPtr.Zero, pConstantValue); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; var pConstantIndex: UInt32; pConstantValue: array of UInt32) := if (pConstantValue<>nil) and (pConstantValue.Length<>0) then z_SpecializeShader_ovr_0(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue[0]) else z_SpecializeShader_ovr_0_anh000001(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; var pConstantIndex: UInt32; var pConstantValue: UInt32) := z_SpecializeShader_ovr_0(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; var pConstantIndex: UInt32; pConstantValue: IntPtr) := z_SpecializeShader_ovr_2(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; pConstantIndex: IntPtr; pConstantValue: array of UInt32) := if (pConstantValue<>nil) and (pConstantValue.Length<>0) then z_SpecializeShader_ovr_6(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue[0]) else z_SpecializeShader_ovr_6_anh000001(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; pConstantIndex: IntPtr; var pConstantValue: UInt32) := z_SpecializeShader_ovr_6(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure SpecializeShader(shader: gl_shader; pEntryPoint: IntPtr; numSpecializationConstants: UInt32; pConstantIndex: IntPtr; pConstantValue: IntPtr) := z_SpecializeShader_ovr_8(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue); // added in gl1.0 private z_StencilFunc_adr := GetProcAddress('glStencilFunc'); private z_StencilFunc_ovr_0 := GetProcOrNil&<procedure(func: StencilFunction; ref: Int32; mask: UInt32)>(z_StencilFunc_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure StencilFunc(func: StencilFunction; ref: Int32; mask: UInt32) := z_StencilFunc_ovr_0(func, ref, mask); // added in gl2.0 private z_StencilFuncSeparate_adr := GetProcAddress('glStencilFuncSeparate'); private z_StencilFuncSeparate_ovr_0 := GetProcOrNil&<procedure(face: StencilFaceDirection; func: StencilFunction; ref: Int32; mask: UInt32)>(z_StencilFuncSeparate_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure StencilFuncSeparate(face: StencilFaceDirection; func: StencilFunction; ref: Int32; mask: UInt32) := z_StencilFuncSeparate_ovr_0(face, func, ref, mask); // added in gl1.0 private z_StencilMask_adr := GetProcAddress('glStencilMask'); private z_StencilMask_ovr_0 := GetProcOrNil&<procedure(mask: UInt32)>(z_StencilMask_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure StencilMask(mask: UInt32) := z_StencilMask_ovr_0(mask); // added in gl2.0 private z_StencilMaskSeparate_adr := GetProcAddress('glStencilMaskSeparate'); private z_StencilMaskSeparate_ovr_0 := GetProcOrNil&<procedure(face: StencilFaceDirection; mask: UInt32)>(z_StencilMaskSeparate_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure StencilMaskSeparate(face: StencilFaceDirection; mask: UInt32) := z_StencilMaskSeparate_ovr_0(face, mask); // added in gl1.0 private z_StencilOp_adr := GetProcAddress('glStencilOp'); private z_StencilOp_ovr_0 := GetProcOrNil&<procedure(fail: OpenGL.StencilOp; zfail: OpenGL.StencilOp; zpass: OpenGL.StencilOp)>(z_StencilOp_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure StencilOp(fail: OpenGL.StencilOp; zfail: OpenGL.StencilOp; zpass: OpenGL.StencilOp) := z_StencilOp_ovr_0(fail, zfail, zpass); // added in gl2.0 private z_StencilOpSeparate_adr := GetProcAddress('glStencilOpSeparate'); private z_StencilOpSeparate_ovr_0 := GetProcOrNil&<procedure(face: StencilFaceDirection; sfail: OpenGL.StencilOp; dpfail: OpenGL.StencilOp; dppass: OpenGL.StencilOp)>(z_StencilOpSeparate_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure StencilOpSeparate(face: StencilFaceDirection; sfail: OpenGL.StencilOp; dpfail: OpenGL.StencilOp; dppass: OpenGL.StencilOp) := z_StencilOpSeparate_ovr_0(face, sfail, dpfail, dppass); // added in gl3.1 private z_TexBuffer_adr := GetProcAddress('glTexBuffer'); private z_TexBuffer_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; internalformat: SizedInternalFormat; buffer: gl_buffer)>(z_TexBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexBuffer(target: TextureTarget; internalformat: SizedInternalFormat; buffer: gl_buffer) := z_TexBuffer_ovr_0(target, internalformat, buffer); // added in gl4.3 private z_TexBufferRange_adr := GetProcAddress('glTexBufferRange'); private z_TexBufferRange_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; internalformat: SizedInternalFormat; buffer: gl_buffer; offset: IntPtr; size: IntPtr)>(z_TexBufferRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexBufferRange(target: TextureTarget; internalformat: SizedInternalFormat; buffer: gl_buffer; offset: IntPtr; size: IntPtr) := z_TexBufferRange_ovr_0(target, internalformat, buffer, offset, size); // added in gl3.3 private z_TexCoordP1ui_adr := GetProcAddress('glTexCoordP1ui'); private z_TexCoordP1ui_ovr_0 := GetProcOrNil&<procedure(&type: TexCoordPointerType; coords: UInt32)>(z_TexCoordP1ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexCoordP1ui(&type: TexCoordPointerType; coords: UInt32) := z_TexCoordP1ui_ovr_0(&type, coords); // added in gl3.3 private z_TexCoordP1uiv_adr := GetProcAddress('glTexCoordP1uiv'); private z_TexCoordP1uiv_ovr_0 := GetProcOrNil&<procedure(&type: TexCoordPointerType; var coords: UInt32)>(z_TexCoordP1uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexCoordP1uiv(&type: TexCoordPointerType; var coords: UInt32) := z_TexCoordP1uiv_ovr_0(&type, coords); private z_TexCoordP1uiv_ovr_1 := GetProcOrNil&<procedure(&type: TexCoordPointerType; coords: IntPtr)>(z_TexCoordP1uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexCoordP1uiv(&type: TexCoordPointerType; coords: IntPtr) := z_TexCoordP1uiv_ovr_1(&type, coords); // added in gl3.3 private z_TexCoordP2ui_adr := GetProcAddress('glTexCoordP2ui'); private z_TexCoordP2ui_ovr_0 := GetProcOrNil&<procedure(&type: TexCoordPointerType; coords: UInt32)>(z_TexCoordP2ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexCoordP2ui(&type: TexCoordPointerType; coords: UInt32) := z_TexCoordP2ui_ovr_0(&type, coords); // added in gl3.3 private z_TexCoordP2uiv_adr := GetProcAddress('glTexCoordP2uiv'); private z_TexCoordP2uiv_ovr_0 := GetProcOrNil&<procedure(&type: TexCoordPointerType; var coords: UInt32)>(z_TexCoordP2uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexCoordP2uiv(&type: TexCoordPointerType; var coords: UInt32) := z_TexCoordP2uiv_ovr_0(&type, coords); private z_TexCoordP2uiv_ovr_1 := GetProcOrNil&<procedure(&type: TexCoordPointerType; coords: IntPtr)>(z_TexCoordP2uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexCoordP2uiv(&type: TexCoordPointerType; coords: IntPtr) := z_TexCoordP2uiv_ovr_1(&type, coords); // added in gl3.3 private z_TexCoordP3ui_adr := GetProcAddress('glTexCoordP3ui'); private z_TexCoordP3ui_ovr_0 := GetProcOrNil&<procedure(&type: TexCoordPointerType; coords: UInt32)>(z_TexCoordP3ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexCoordP3ui(&type: TexCoordPointerType; coords: UInt32) := z_TexCoordP3ui_ovr_0(&type, coords); // added in gl3.3 private z_TexCoordP3uiv_adr := GetProcAddress('glTexCoordP3uiv'); private z_TexCoordP3uiv_ovr_0 := GetProcOrNil&<procedure(&type: TexCoordPointerType; var coords: UInt32)>(z_TexCoordP3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexCoordP3uiv(&type: TexCoordPointerType; var coords: UInt32) := z_TexCoordP3uiv_ovr_0(&type, coords); private z_TexCoordP3uiv_ovr_1 := GetProcOrNil&<procedure(&type: TexCoordPointerType; coords: IntPtr)>(z_TexCoordP3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexCoordP3uiv(&type: TexCoordPointerType; coords: IntPtr) := z_TexCoordP3uiv_ovr_1(&type, coords); // added in gl3.3 private z_TexCoordP4ui_adr := GetProcAddress('glTexCoordP4ui'); private z_TexCoordP4ui_ovr_0 := GetProcOrNil&<procedure(&type: TexCoordPointerType; coords: UInt32)>(z_TexCoordP4ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexCoordP4ui(&type: TexCoordPointerType; coords: UInt32) := z_TexCoordP4ui_ovr_0(&type, coords); // added in gl3.3 private z_TexCoordP4uiv_adr := GetProcAddress('glTexCoordP4uiv'); private z_TexCoordP4uiv_ovr_0 := GetProcOrNil&<procedure(&type: TexCoordPointerType; var coords: UInt32)>(z_TexCoordP4uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexCoordP4uiv(&type: TexCoordPointerType; var coords: UInt32) := z_TexCoordP4uiv_ovr_0(&type, coords); private z_TexCoordP4uiv_ovr_1 := GetProcOrNil&<procedure(&type: TexCoordPointerType; coords: IntPtr)>(z_TexCoordP4uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexCoordP4uiv(&type: TexCoordPointerType; coords: IntPtr) := z_TexCoordP4uiv_ovr_1(&type, coords); // added in gl1.0 private z_TexImage1D_adr := GetProcAddress('glTexImage1D'); private z_TexImage1D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; internalformat: Int32; width: Int32; border: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr)>(z_TexImage1D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexImage1D(target: TextureTarget; level: Int32; internalformat: Int32; width: Int32; border: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr) := z_TexImage1D_ovr_0(target, level, internalformat, width, border, format, &type, pixels); // added in gl1.0 private z_TexImage2D_adr := GetProcAddress('glTexImage2D'); private z_TexImage2D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; internalformat: Int32; width: Int32; height: Int32; border: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr)>(z_TexImage2D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexImage2D(target: TextureTarget; level: Int32; internalformat: Int32; width: Int32; height: Int32; border: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr) := z_TexImage2D_ovr_0(target, level, internalformat, width, height, border, format, &type, pixels); // added in gl3.2 private z_TexImage2DMultisample_adr := GetProcAddress('glTexImage2DMultisample'); private z_TexImage2DMultisample_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; samples: Int32; _internalformat: InternalFormat; width: Int32; height: Int32; fixedsamplelocations: boolean)>(z_TexImage2DMultisample_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexImage2DMultisample(target: TextureTarget; samples: Int32; _internalformat: InternalFormat; width: Int32; height: Int32; fixedsamplelocations: boolean) := z_TexImage2DMultisample_ovr_0(target, samples, _internalformat, width, height, fixedsamplelocations); // added in gl1.2 private z_TexImage3D_adr := GetProcAddress('glTexImage3D'); private z_TexImage3D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; internalformat: Int32; width: Int32; height: Int32; depth: Int32; border: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr)>(z_TexImage3D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexImage3D(target: TextureTarget; level: Int32; internalformat: Int32; width: Int32; height: Int32; depth: Int32; border: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr) := z_TexImage3D_ovr_0(target, level, internalformat, width, height, depth, border, format, &type, pixels); // added in gl3.2 private z_TexImage3DMultisample_adr := GetProcAddress('glTexImage3DMultisample'); private z_TexImage3DMultisample_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; samples: Int32; _internalformat: InternalFormat; width: Int32; height: Int32; depth: Int32; fixedsamplelocations: boolean)>(z_TexImage3DMultisample_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexImage3DMultisample(target: TextureTarget; samples: Int32; _internalformat: InternalFormat; width: Int32; height: Int32; depth: Int32; fixedsamplelocations: boolean) := z_TexImage3DMultisample_ovr_0(target, samples, _internalformat, width, height, depth, fixedsamplelocations); // added in gl1.0 private z_TexParameterf_adr := GetProcAddress('glTexParameterf'); private z_TexParameterf_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; pname: TextureParameterName; param: single)>(z_TexParameterf_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexParameterf(target: TextureTarget; pname: TextureParameterName; param: single) := z_TexParameterf_ovr_0(target, pname, param); // added in gl1.0 private z_TexParameterfv_adr := GetProcAddress('glTexParameterfv'); private z_TexParameterfv_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; pname: TextureParameterName; var ¶ms: single)>(z_TexParameterfv_adr); private z_TexParameterfv_ovr_0_anh0001 := GetProcOrNil&<procedure(target: TextureTarget; pname: TextureParameterName; ¶ms: IntPtr)>(z_TexParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexParameterfv(target: TextureTarget; pname: TextureParameterName; ¶ms: array of single) := if (¶ms<>nil) and (¶ms.Length<>0) then z_TexParameterfv_ovr_0(target, pname, ¶ms[0]) else z_TexParameterfv_ovr_0_anh0001(target, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexParameterfv(target: TextureTarget; pname: TextureParameterName; var ¶ms: single) := z_TexParameterfv_ovr_0(target, pname, ¶ms); private z_TexParameterfv_ovr_2 := GetProcOrNil&<procedure(target: TextureTarget; pname: TextureParameterName; ¶ms: IntPtr)>(z_TexParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexParameterfv(target: TextureTarget; pname: TextureParameterName; ¶ms: IntPtr) := z_TexParameterfv_ovr_2(target, pname, ¶ms); // added in gl1.0 private z_TexParameteri_adr := GetProcAddress('glTexParameteri'); private z_TexParameteri_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; pname: TextureParameterName; param: Int32)>(z_TexParameteri_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexParameteri(target: TextureTarget; pname: TextureParameterName; param: Int32) := z_TexParameteri_ovr_0(target, pname, param); // added in gl3.0 private z_TexParameterIiv_adr := GetProcAddress('glTexParameterIiv'); private z_TexParameterIiv_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; pname: TextureParameterName; var ¶ms: Int32)>(z_TexParameterIiv_adr); private z_TexParameterIiv_ovr_0_anh0001 := GetProcOrNil&<procedure(target: TextureTarget; pname: TextureParameterName; ¶ms: IntPtr)>(z_TexParameterIiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexParameterIiv(target: TextureTarget; pname: TextureParameterName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_TexParameterIiv_ovr_0(target, pname, ¶ms[0]) else z_TexParameterIiv_ovr_0_anh0001(target, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexParameterIiv(target: TextureTarget; pname: TextureParameterName; var ¶ms: Int32) := z_TexParameterIiv_ovr_0(target, pname, ¶ms); private z_TexParameterIiv_ovr_2 := GetProcOrNil&<procedure(target: TextureTarget; pname: TextureParameterName; ¶ms: IntPtr)>(z_TexParameterIiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexParameterIiv(target: TextureTarget; pname: TextureParameterName; ¶ms: IntPtr) := z_TexParameterIiv_ovr_2(target, pname, ¶ms); // added in gl3.0 private z_TexParameterIuiv_adr := GetProcAddress('glTexParameterIuiv'); private z_TexParameterIuiv_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; pname: TextureParameterName; var ¶ms: UInt32)>(z_TexParameterIuiv_adr); private z_TexParameterIuiv_ovr_0_anh0001 := GetProcOrNil&<procedure(target: TextureTarget; pname: TextureParameterName; ¶ms: IntPtr)>(z_TexParameterIuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexParameterIuiv(target: TextureTarget; pname: TextureParameterName; ¶ms: array of UInt32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_TexParameterIuiv_ovr_0(target, pname, ¶ms[0]) else z_TexParameterIuiv_ovr_0_anh0001(target, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexParameterIuiv(target: TextureTarget; pname: TextureParameterName; var ¶ms: UInt32) := z_TexParameterIuiv_ovr_0(target, pname, ¶ms); private z_TexParameterIuiv_ovr_2 := GetProcOrNil&<procedure(target: TextureTarget; pname: TextureParameterName; ¶ms: IntPtr)>(z_TexParameterIuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexParameterIuiv(target: TextureTarget; pname: TextureParameterName; ¶ms: IntPtr) := z_TexParameterIuiv_ovr_2(target, pname, ¶ms); // added in gl1.0 private z_TexParameteriv_adr := GetProcAddress('glTexParameteriv'); private z_TexParameteriv_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; pname: TextureParameterName; var ¶ms: Int32)>(z_TexParameteriv_adr); private z_TexParameteriv_ovr_0_anh0001 := GetProcOrNil&<procedure(target: TextureTarget; pname: TextureParameterName; ¶ms: IntPtr)>(z_TexParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexParameteriv(target: TextureTarget; pname: TextureParameterName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_TexParameteriv_ovr_0(target, pname, ¶ms[0]) else z_TexParameteriv_ovr_0_anh0001(target, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexParameteriv(target: TextureTarget; pname: TextureParameterName; var ¶ms: Int32) := z_TexParameteriv_ovr_0(target, pname, ¶ms); private z_TexParameteriv_ovr_2 := GetProcOrNil&<procedure(target: TextureTarget; pname: TextureParameterName; ¶ms: IntPtr)>(z_TexParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexParameteriv(target: TextureTarget; pname: TextureParameterName; ¶ms: IntPtr) := z_TexParameteriv_ovr_2(target, pname, ¶ms); // added in gl4.2 private z_TexStorage1D_adr := GetProcAddress('glTexStorage1D'); private z_TexStorage1D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; levels: Int32; internalformat: SizedInternalFormat; width: Int32)>(z_TexStorage1D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexStorage1D(target: TextureTarget; levels: Int32; internalformat: SizedInternalFormat; width: Int32) := z_TexStorage1D_ovr_0(target, levels, internalformat, width); // added in gl4.2 private z_TexStorage2D_adr := GetProcAddress('glTexStorage2D'); private z_TexStorage2D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; levels: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32)>(z_TexStorage2D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexStorage2D(target: TextureTarget; levels: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32) := z_TexStorage2D_ovr_0(target, levels, internalformat, width, height); // added in gl4.3 private z_TexStorage2DMultisample_adr := GetProcAddress('glTexStorage2DMultisample'); private z_TexStorage2DMultisample_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; samples: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32; fixedsamplelocations: boolean)>(z_TexStorage2DMultisample_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexStorage2DMultisample(target: TextureTarget; samples: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32; fixedsamplelocations: boolean) := z_TexStorage2DMultisample_ovr_0(target, samples, internalformat, width, height, fixedsamplelocations); // added in gl4.2 private z_TexStorage3D_adr := GetProcAddress('glTexStorage3D'); private z_TexStorage3D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; levels: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32; depth: Int32)>(z_TexStorage3D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexStorage3D(target: TextureTarget; levels: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32; depth: Int32) := z_TexStorage3D_ovr_0(target, levels, internalformat, width, height, depth); // added in gl4.3 private z_TexStorage3DMultisample_adr := GetProcAddress('glTexStorage3DMultisample'); private z_TexStorage3DMultisample_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; samples: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32; depth: Int32; fixedsamplelocations: boolean)>(z_TexStorage3DMultisample_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexStorage3DMultisample(target: TextureTarget; samples: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32; depth: Int32; fixedsamplelocations: boolean) := z_TexStorage3DMultisample_ovr_0(target, samples, internalformat, width, height, depth, fixedsamplelocations); // added in gl1.1 private z_TexSubImage1D_adr := GetProcAddress('glTexSubImage1D'); private z_TexSubImage1D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; xoffset: Int32; width: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr)>(z_TexSubImage1D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexSubImage1D(target: TextureTarget; level: Int32; xoffset: Int32; width: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr) := z_TexSubImage1D_ovr_0(target, level, xoffset, width, format, &type, pixels); // added in gl1.1 private z_TexSubImage2D_adr := GetProcAddress('glTexSubImage2D'); private z_TexSubImage2D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; xoffset: Int32; yoffset: Int32; width: Int32; height: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr)>(z_TexSubImage2D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexSubImage2D(target: TextureTarget; level: Int32; xoffset: Int32; yoffset: Int32; width: Int32; height: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr) := z_TexSubImage2D_ovr_0(target, level, xoffset, yoffset, width, height, format, &type, pixels); // added in gl1.2 private z_TexSubImage3D_adr := GetProcAddress('glTexSubImage3D'); private z_TexSubImage3D_ovr_0 := GetProcOrNil&<procedure(target: TextureTarget; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr)>(z_TexSubImage3D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TexSubImage3D(target: TextureTarget; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr) := z_TexSubImage3D_ovr_0(target, level, xoffset, yoffset, zoffset, width, height, depth, format, &type, pixels); // added in gl4.5 private z_TextureBarrier_adr := GetProcAddress('glTextureBarrier'); private z_TextureBarrier_ovr_0 := GetProcOrNil&<procedure>(z_TextureBarrier_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureBarrier := z_TextureBarrier_ovr_0; // added in gl4.5 private z_TextureBuffer_adr := GetProcAddress('glTextureBuffer'); private z_TextureBuffer_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; internalformat: SizedInternalFormat; buffer: gl_buffer)>(z_TextureBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureBuffer(texture: gl_texture; internalformat: SizedInternalFormat; buffer: gl_buffer) := z_TextureBuffer_ovr_0(texture, internalformat, buffer); // added in gl4.5 private z_TextureBufferRange_adr := GetProcAddress('glTextureBufferRange'); private z_TextureBufferRange_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; internalformat: SizedInternalFormat; buffer: gl_buffer; offset: IntPtr; size: IntPtr)>(z_TextureBufferRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureBufferRange(texture: gl_texture; internalformat: SizedInternalFormat; buffer: gl_buffer; offset: IntPtr; size: IntPtr) := z_TextureBufferRange_ovr_0(texture, internalformat, buffer, offset, size); // added in gl4.5 private z_TextureParameterf_adr := GetProcAddress('glTextureParameterf'); private z_TextureParameterf_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; pname: TextureParameterName; param: single)>(z_TextureParameterf_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureParameterf(texture: gl_texture; pname: TextureParameterName; param: single) := z_TextureParameterf_ovr_0(texture, pname, param); // added in gl4.5 private z_TextureParameterfv_adr := GetProcAddress('glTextureParameterfv'); private z_TextureParameterfv_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; pname: TextureParameterName; var param: single)>(z_TextureParameterfv_adr); private z_TextureParameterfv_ovr_0_anh0001 := GetProcOrNil&<procedure(texture: gl_texture; pname: TextureParameterName; param: IntPtr)>(z_TextureParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureParameterfv(texture: gl_texture; pname: TextureParameterName; param: array of single) := if (param<>nil) and (param.Length<>0) then z_TextureParameterfv_ovr_0(texture, pname, param[0]) else z_TextureParameterfv_ovr_0_anh0001(texture, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureParameterfv(texture: gl_texture; pname: TextureParameterName; var param: single) := z_TextureParameterfv_ovr_0(texture, pname, param); private z_TextureParameterfv_ovr_2 := GetProcOrNil&<procedure(texture: gl_texture; pname: TextureParameterName; param: IntPtr)>(z_TextureParameterfv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureParameterfv(texture: gl_texture; pname: TextureParameterName; param: IntPtr) := z_TextureParameterfv_ovr_2(texture, pname, param); // added in gl4.5 private z_TextureParameteri_adr := GetProcAddress('glTextureParameteri'); private z_TextureParameteri_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; pname: TextureParameterName; param: Int32)>(z_TextureParameteri_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureParameteri(texture: gl_texture; pname: TextureParameterName; param: Int32) := z_TextureParameteri_ovr_0(texture, pname, param); // added in gl4.5 private z_TextureParameterIiv_adr := GetProcAddress('glTextureParameterIiv'); private z_TextureParameterIiv_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; pname: TextureParameterName; var ¶ms: Int32)>(z_TextureParameterIiv_adr); private z_TextureParameterIiv_ovr_0_anh0001 := GetProcOrNil&<procedure(texture: gl_texture; pname: TextureParameterName; ¶ms: IntPtr)>(z_TextureParameterIiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureParameterIiv(texture: gl_texture; pname: TextureParameterName; ¶ms: array of Int32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_TextureParameterIiv_ovr_0(texture, pname, ¶ms[0]) else z_TextureParameterIiv_ovr_0_anh0001(texture, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureParameterIiv(texture: gl_texture; pname: TextureParameterName; var ¶ms: Int32) := z_TextureParameterIiv_ovr_0(texture, pname, ¶ms); private z_TextureParameterIiv_ovr_2 := GetProcOrNil&<procedure(texture: gl_texture; pname: TextureParameterName; ¶ms: IntPtr)>(z_TextureParameterIiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureParameterIiv(texture: gl_texture; pname: TextureParameterName; ¶ms: IntPtr) := z_TextureParameterIiv_ovr_2(texture, pname, ¶ms); // added in gl4.5 private z_TextureParameterIuiv_adr := GetProcAddress('glTextureParameterIuiv'); private z_TextureParameterIuiv_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; pname: TextureParameterName; var ¶ms: UInt32)>(z_TextureParameterIuiv_adr); private z_TextureParameterIuiv_ovr_0_anh0001 := GetProcOrNil&<procedure(texture: gl_texture; pname: TextureParameterName; ¶ms: IntPtr)>(z_TextureParameterIuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureParameterIuiv(texture: gl_texture; pname: TextureParameterName; ¶ms: array of UInt32) := if (¶ms<>nil) and (¶ms.Length<>0) then z_TextureParameterIuiv_ovr_0(texture, pname, ¶ms[0]) else z_TextureParameterIuiv_ovr_0_anh0001(texture, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureParameterIuiv(texture: gl_texture; pname: TextureParameterName; var ¶ms: UInt32) := z_TextureParameterIuiv_ovr_0(texture, pname, ¶ms); private z_TextureParameterIuiv_ovr_2 := GetProcOrNil&<procedure(texture: gl_texture; pname: TextureParameterName; ¶ms: IntPtr)>(z_TextureParameterIuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureParameterIuiv(texture: gl_texture; pname: TextureParameterName; ¶ms: IntPtr) := z_TextureParameterIuiv_ovr_2(texture, pname, ¶ms); // added in gl4.5 private z_TextureParameteriv_adr := GetProcAddress('glTextureParameteriv'); private z_TextureParameteriv_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; pname: TextureParameterName; var param: Int32)>(z_TextureParameteriv_adr); private z_TextureParameteriv_ovr_0_anh0001 := GetProcOrNil&<procedure(texture: gl_texture; pname: TextureParameterName; param: IntPtr)>(z_TextureParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureParameteriv(texture: gl_texture; pname: TextureParameterName; param: array of Int32) := if (param<>nil) and (param.Length<>0) then z_TextureParameteriv_ovr_0(texture, pname, param[0]) else z_TextureParameteriv_ovr_0_anh0001(texture, pname, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureParameteriv(texture: gl_texture; pname: TextureParameterName; var param: Int32) := z_TextureParameteriv_ovr_0(texture, pname, param); private z_TextureParameteriv_ovr_2 := GetProcOrNil&<procedure(texture: gl_texture; pname: TextureParameterName; param: IntPtr)>(z_TextureParameteriv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureParameteriv(texture: gl_texture; pname: TextureParameterName; param: IntPtr) := z_TextureParameteriv_ovr_2(texture, pname, param); // added in gl4.5 private z_TextureStorage1D_adr := GetProcAddress('glTextureStorage1D'); private z_TextureStorage1D_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; levels: Int32; internalformat: SizedInternalFormat; width: Int32)>(z_TextureStorage1D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureStorage1D(texture: gl_texture; levels: Int32; internalformat: SizedInternalFormat; width: Int32) := z_TextureStorage1D_ovr_0(texture, levels, internalformat, width); // added in gl4.5 private z_TextureStorage2D_adr := GetProcAddress('glTextureStorage2D'); private z_TextureStorage2D_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; levels: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32)>(z_TextureStorage2D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureStorage2D(texture: gl_texture; levels: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32) := z_TextureStorage2D_ovr_0(texture, levels, internalformat, width, height); // added in gl4.5 private z_TextureStorage2DMultisample_adr := GetProcAddress('glTextureStorage2DMultisample'); private z_TextureStorage2DMultisample_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; samples: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32; fixedsamplelocations: boolean)>(z_TextureStorage2DMultisample_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureStorage2DMultisample(texture: gl_texture; samples: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32; fixedsamplelocations: boolean) := z_TextureStorage2DMultisample_ovr_0(texture, samples, internalformat, width, height, fixedsamplelocations); // added in gl4.5 private z_TextureStorage3D_adr := GetProcAddress('glTextureStorage3D'); private z_TextureStorage3D_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; levels: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32; depth: Int32)>(z_TextureStorage3D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureStorage3D(texture: gl_texture; levels: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32; depth: Int32) := z_TextureStorage3D_ovr_0(texture, levels, internalformat, width, height, depth); // added in gl4.5 private z_TextureStorage3DMultisample_adr := GetProcAddress('glTextureStorage3DMultisample'); private z_TextureStorage3DMultisample_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; samples: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32; depth: Int32; fixedsamplelocations: boolean)>(z_TextureStorage3DMultisample_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureStorage3DMultisample(texture: gl_texture; samples: Int32; internalformat: SizedInternalFormat; width: Int32; height: Int32; depth: Int32; fixedsamplelocations: boolean) := z_TextureStorage3DMultisample_ovr_0(texture, samples, internalformat, width, height, depth, fixedsamplelocations); // added in gl4.5 private z_TextureSubImage1D_adr := GetProcAddress('glTextureSubImage1D'); private z_TextureSubImage1D_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; xoffset: Int32; width: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr)>(z_TextureSubImage1D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureSubImage1D(texture: gl_texture; level: Int32; xoffset: Int32; width: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr) := z_TextureSubImage1D_ovr_0(texture, level, xoffset, width, format, &type, pixels); // added in gl4.5 private z_TextureSubImage2D_adr := GetProcAddress('glTextureSubImage2D'); private z_TextureSubImage2D_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; width: Int32; height: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr)>(z_TextureSubImage2D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureSubImage2D(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; width: Int32; height: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr) := z_TextureSubImage2D_ovr_0(texture, level, xoffset, yoffset, width, height, format, &type, pixels); // added in gl4.5 private z_TextureSubImage3D_adr := GetProcAddress('glTextureSubImage3D'); private z_TextureSubImage3D_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr)>(z_TextureSubImage3D_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureSubImage3D(texture: gl_texture; level: Int32; xoffset: Int32; yoffset: Int32; zoffset: Int32; width: Int32; height: Int32; depth: Int32; format: PixelFormat; &type: PixelType; pixels: IntPtr) := z_TextureSubImage3D_ovr_0(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, &type, pixels); // added in gl4.3 private z_TextureView_adr := GetProcAddress('glTextureView'); private z_TextureView_ovr_0 := GetProcOrNil&<procedure(texture: gl_texture; target: TextureTarget; origtexture: gl_texture; internalformat: SizedInternalFormat; minlevel: UInt32; numlevels: UInt32; minlayer: UInt32; numlayers: UInt32)>(z_TextureView_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TextureView(texture: gl_texture; target: TextureTarget; origtexture: gl_texture; internalformat: SizedInternalFormat; minlevel: UInt32; numlevels: UInt32; minlayer: UInt32; numlayers: UInt32) := z_TextureView_ovr_0(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers); // added in gl4.5 private z_TransformFeedbackBufferBase_adr := GetProcAddress('glTransformFeedbackBufferBase'); private z_TransformFeedbackBufferBase_ovr_0 := GetProcOrNil&<procedure(xfb: gl_transform_feedback; index: UInt32; buffer: gl_buffer)>(z_TransformFeedbackBufferBase_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TransformFeedbackBufferBase(xfb: gl_transform_feedback; index: UInt32; buffer: gl_buffer) := z_TransformFeedbackBufferBase_ovr_0(xfb, index, buffer); // added in gl4.5 private z_TransformFeedbackBufferRange_adr := GetProcAddress('glTransformFeedbackBufferRange'); private z_TransformFeedbackBufferRange_ovr_0 := GetProcOrNil&<procedure(xfb: gl_transform_feedback; index: UInt32; buffer: gl_buffer; offset: IntPtr; size: IntPtr)>(z_TransformFeedbackBufferRange_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TransformFeedbackBufferRange(xfb: gl_transform_feedback; index: UInt32; buffer: gl_buffer; offset: IntPtr; size: IntPtr) := z_TransformFeedbackBufferRange_ovr_0(xfb, index, buffer, offset, size); // added in gl3.0 private z_TransformFeedbackVaryings_adr := GetProcAddress('glTransformFeedbackVaryings'); private z_TransformFeedbackVaryings_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; count: Int32; var varyings: IntPtr; bufferMode: TransformFeedbackBufferMode)>(z_TransformFeedbackVaryings_adr); private z_TransformFeedbackVaryings_ovr_0_anh00010 := GetProcOrNil&<procedure(&program: gl_program; count: Int32; varyings: IntPtr; bufferMode: TransformFeedbackBufferMode)>(z_TransformFeedbackVaryings_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TransformFeedbackVaryings(&program: gl_program; count: Int32; varyings: array of string; bufferMode: TransformFeedbackBufferMode); begin var par_3_str_ptr: array of IntPtr; try par_3_str_ptr := varyings?.ConvertAll(arr_el1->Marshal.StringToHGlobalAnsi(arr_el1)); if (par_3_str_ptr<>nil) and (par_3_str_ptr.Length<>0) then z_TransformFeedbackVaryings_ovr_0(&program, count, par_3_str_ptr[0], bufferMode) else z_TransformFeedbackVaryings_ovr_0_anh00010(&program, count, IntPtr.Zero, bufferMode); finally foreach var arr_el1 in par_3_str_ptr do Marshal.FreeHGlobal(arr_el1); end; end; private z_TransformFeedbackVaryings_ovr_1_anh00010 := GetProcOrNil&<procedure(&program: gl_program; count: Int32; varyings: IntPtr; bufferMode: TransformFeedbackBufferMode)>(z_TransformFeedbackVaryings_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TransformFeedbackVaryings(&program: gl_program; count: Int32; varyings: array of IntPtr; bufferMode: TransformFeedbackBufferMode) := if (varyings<>nil) and (varyings.Length<>0) then z_TransformFeedbackVaryings_ovr_0(&program, count, varyings[0], bufferMode) else z_TransformFeedbackVaryings_ovr_0_anh00010(&program, count, IntPtr.Zero, bufferMode); private z_TransformFeedbackVaryings_ovr_2 := GetProcOrNil&<procedure(&program: gl_program; count: Int32; varyings: IntPtr; bufferMode: TransformFeedbackBufferMode)>(z_TransformFeedbackVaryings_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure TransformFeedbackVaryings(&program: gl_program; count: Int32; varyings: IntPtr; bufferMode: TransformFeedbackBufferMode) := z_TransformFeedbackVaryings_ovr_2(&program, count, varyings, bufferMode); // added in gl4.0 private z_Uniform1d_adr := GetProcAddress('glUniform1d'); private z_Uniform1d_ovr_0 := GetProcOrNil&<procedure(location: Int32; x: real)>(z_Uniform1d_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1d(location: Int32; x: real) := z_Uniform1d_ovr_0(location, x); // added in gl4.0 private z_Uniform1dv_adr := GetProcAddress('glUniform1dv'); private z_Uniform1dv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: real)>(z_Uniform1dv_adr); private z_Uniform1dv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform1dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1dv(location: Int32; count: Int32; value: array of real) := if (value<>nil) and (value.Length<>0) then z_Uniform1dv_ovr_0(location, count, value[0]) else z_Uniform1dv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1dv(location: Int32; count: Int32; var value: real) := z_Uniform1dv_ovr_0(location, count, value); private z_Uniform1dv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec1d)>(z_Uniform1dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1dv(location: Int32; count: Int32; var value: Vec1d) := z_Uniform1dv_ovr_2(location, count, value); private z_Uniform1dv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform1dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1dv(location: Int32; count: Int32; value: IntPtr) := z_Uniform1dv_ovr_3(location, count, value); // added in gl2.0 private z_Uniform1f_adr := GetProcAddress('glUniform1f'); private z_Uniform1f_ovr_0 := GetProcOrNil&<procedure(location: Int32; v0: single)>(z_Uniform1f_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1f(location: Int32; v0: single) := z_Uniform1f_ovr_0(location, v0); // added in gl2.0 private z_Uniform1fv_adr := GetProcAddress('glUniform1fv'); private z_Uniform1fv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: single)>(z_Uniform1fv_adr); private z_Uniform1fv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform1fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1fv(location: Int32; count: Int32; value: array of single) := if (value<>nil) and (value.Length<>0) then z_Uniform1fv_ovr_0(location, count, value[0]) else z_Uniform1fv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1fv(location: Int32; count: Int32; var value: single) := z_Uniform1fv_ovr_0(location, count, value); private z_Uniform1fv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec1f)>(z_Uniform1fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1fv(location: Int32; count: Int32; var value: Vec1f) := z_Uniform1fv_ovr_2(location, count, value); private z_Uniform1fv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform1fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1fv(location: Int32; count: Int32; value: IntPtr) := z_Uniform1fv_ovr_3(location, count, value); // added in gl2.0 private z_Uniform1i_adr := GetProcAddress('glUniform1i'); private z_Uniform1i_ovr_0 := GetProcOrNil&<procedure(location: Int32; v0: Int32)>(z_Uniform1i_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1i(location: Int32; v0: Int32) := z_Uniform1i_ovr_0(location, v0); // added in gl2.0 private z_Uniform1iv_adr := GetProcAddress('glUniform1iv'); private z_Uniform1iv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Int32)>(z_Uniform1iv_adr); private z_Uniform1iv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform1iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1iv(location: Int32; count: Int32; value: array of Int32) := if (value<>nil) and (value.Length<>0) then z_Uniform1iv_ovr_0(location, count, value[0]) else z_Uniform1iv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1iv(location: Int32; count: Int32; var value: Int32) := z_Uniform1iv_ovr_0(location, count, value); private z_Uniform1iv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec1i)>(z_Uniform1iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1iv(location: Int32; count: Int32; var value: Vec1i) := z_Uniform1iv_ovr_2(location, count, value); private z_Uniform1iv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform1iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1iv(location: Int32; count: Int32; value: IntPtr) := z_Uniform1iv_ovr_3(location, count, value); // added in gl3.0 private z_Uniform1ui_adr := GetProcAddress('glUniform1ui'); private z_Uniform1ui_ovr_0 := GetProcOrNil&<procedure(location: Int32; v0: UInt32)>(z_Uniform1ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1ui(location: Int32; v0: UInt32) := z_Uniform1ui_ovr_0(location, v0); // added in gl3.0 private z_Uniform1uiv_adr := GetProcAddress('glUniform1uiv'); private z_Uniform1uiv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: UInt32)>(z_Uniform1uiv_adr); private z_Uniform1uiv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform1uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1uiv(location: Int32; count: Int32; value: array of UInt32) := if (value<>nil) and (value.Length<>0) then z_Uniform1uiv_ovr_0(location, count, value[0]) else z_Uniform1uiv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1uiv(location: Int32; count: Int32; var value: UInt32) := z_Uniform1uiv_ovr_0(location, count, value); private z_Uniform1uiv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec1ui)>(z_Uniform1uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1uiv(location: Int32; count: Int32; var value: Vec1ui) := z_Uniform1uiv_ovr_2(location, count, value); private z_Uniform1uiv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform1uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform1uiv(location: Int32; count: Int32; value: IntPtr) := z_Uniform1uiv_ovr_3(location, count, value); // added in gl4.0 private z_Uniform2d_adr := GetProcAddress('glUniform2d'); private z_Uniform2d_ovr_0 := GetProcOrNil&<procedure(location: Int32; x: real; y: real)>(z_Uniform2d_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2d(location: Int32; x: real; y: real) := z_Uniform2d_ovr_0(location, x, y); // added in gl4.0 private z_Uniform2dv_adr := GetProcAddress('glUniform2dv'); private z_Uniform2dv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: real)>(z_Uniform2dv_adr); private z_Uniform2dv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2dv(location: Int32; count: Int32; value: array of real) := if (value<>nil) and (value.Length<>0) then z_Uniform2dv_ovr_0(location, count, value[0]) else z_Uniform2dv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2dv(location: Int32; count: Int32; var value: real) := z_Uniform2dv_ovr_0(location, count, value); private z_Uniform2dv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec2d)>(z_Uniform2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2dv(location: Int32; count: Int32; var value: Vec2d) := z_Uniform2dv_ovr_2(location, count, value); private z_Uniform2dv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2dv(location: Int32; count: Int32; value: IntPtr) := z_Uniform2dv_ovr_3(location, count, value); // added in gl2.0 private z_Uniform2f_adr := GetProcAddress('glUniform2f'); private z_Uniform2f_ovr_0 := GetProcOrNil&<procedure(location: Int32; v0: single; v1: single)>(z_Uniform2f_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2f(location: Int32; v0: single; v1: single) := z_Uniform2f_ovr_0(location, v0, v1); // added in gl2.0 private z_Uniform2fv_adr := GetProcAddress('glUniform2fv'); private z_Uniform2fv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: single)>(z_Uniform2fv_adr); private z_Uniform2fv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2fv(location: Int32; count: Int32; value: array of single) := if (value<>nil) and (value.Length<>0) then z_Uniform2fv_ovr_0(location, count, value[0]) else z_Uniform2fv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2fv(location: Int32; count: Int32; var value: single) := z_Uniform2fv_ovr_0(location, count, value); private z_Uniform2fv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec2f)>(z_Uniform2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2fv(location: Int32; count: Int32; var value: Vec2f) := z_Uniform2fv_ovr_2(location, count, value); private z_Uniform2fv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2fv(location: Int32; count: Int32; value: IntPtr) := z_Uniform2fv_ovr_3(location, count, value); // added in gl2.0 private z_Uniform2i_adr := GetProcAddress('glUniform2i'); private z_Uniform2i_ovr_0 := GetProcOrNil&<procedure(location: Int32; v0: Int32; v1: Int32)>(z_Uniform2i_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2i(location: Int32; v0: Int32; v1: Int32) := z_Uniform2i_ovr_0(location, v0, v1); // added in gl2.0 private z_Uniform2iv_adr := GetProcAddress('glUniform2iv'); private z_Uniform2iv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Int32)>(z_Uniform2iv_adr); private z_Uniform2iv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform2iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2iv(location: Int32; count: Int32; value: array of Int32) := if (value<>nil) and (value.Length<>0) then z_Uniform2iv_ovr_0(location, count, value[0]) else z_Uniform2iv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2iv(location: Int32; count: Int32; var value: Int32) := z_Uniform2iv_ovr_0(location, count, value); private z_Uniform2iv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec2i)>(z_Uniform2iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2iv(location: Int32; count: Int32; var value: Vec2i) := z_Uniform2iv_ovr_2(location, count, value); private z_Uniform2iv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform2iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2iv(location: Int32; count: Int32; value: IntPtr) := z_Uniform2iv_ovr_3(location, count, value); // added in gl3.0 private z_Uniform2ui_adr := GetProcAddress('glUniform2ui'); private z_Uniform2ui_ovr_0 := GetProcOrNil&<procedure(location: Int32; v0: UInt32; v1: UInt32)>(z_Uniform2ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2ui(location: Int32; v0: UInt32; v1: UInt32) := z_Uniform2ui_ovr_0(location, v0, v1); // added in gl3.0 private z_Uniform2uiv_adr := GetProcAddress('glUniform2uiv'); private z_Uniform2uiv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: UInt32)>(z_Uniform2uiv_adr); private z_Uniform2uiv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform2uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2uiv(location: Int32; count: Int32; value: array of UInt32) := if (value<>nil) and (value.Length<>0) then z_Uniform2uiv_ovr_0(location, count, value[0]) else z_Uniform2uiv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2uiv(location: Int32; count: Int32; var value: UInt32) := z_Uniform2uiv_ovr_0(location, count, value); private z_Uniform2uiv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec2ui)>(z_Uniform2uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2uiv(location: Int32; count: Int32; var value: Vec2ui) := z_Uniform2uiv_ovr_2(location, count, value); private z_Uniform2uiv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform2uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform2uiv(location: Int32; count: Int32; value: IntPtr) := z_Uniform2uiv_ovr_3(location, count, value); // added in gl4.0 private z_Uniform3d_adr := GetProcAddress('glUniform3d'); private z_Uniform3d_ovr_0 := GetProcOrNil&<procedure(location: Int32; x: real; y: real; z: real)>(z_Uniform3d_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3d(location: Int32; x: real; y: real; z: real) := z_Uniform3d_ovr_0(location, x, y, z); // added in gl4.0 private z_Uniform3dv_adr := GetProcAddress('glUniform3dv'); private z_Uniform3dv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: real)>(z_Uniform3dv_adr); private z_Uniform3dv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3dv(location: Int32; count: Int32; value: array of real) := if (value<>nil) and (value.Length<>0) then z_Uniform3dv_ovr_0(location, count, value[0]) else z_Uniform3dv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3dv(location: Int32; count: Int32; var value: real) := z_Uniform3dv_ovr_0(location, count, value); private z_Uniform3dv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec3d)>(z_Uniform3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3dv(location: Int32; count: Int32; var value: Vec3d) := z_Uniform3dv_ovr_2(location, count, value); private z_Uniform3dv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3dv(location: Int32; count: Int32; value: IntPtr) := z_Uniform3dv_ovr_3(location, count, value); // added in gl2.0 private z_Uniform3f_adr := GetProcAddress('glUniform3f'); private z_Uniform3f_ovr_0 := GetProcOrNil&<procedure(location: Int32; v0: single; v1: single; v2: single)>(z_Uniform3f_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3f(location: Int32; v0: single; v1: single; v2: single) := z_Uniform3f_ovr_0(location, v0, v1, v2); // added in gl2.0 private z_Uniform3fv_adr := GetProcAddress('glUniform3fv'); private z_Uniform3fv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: single)>(z_Uniform3fv_adr); private z_Uniform3fv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3fv(location: Int32; count: Int32; value: array of single) := if (value<>nil) and (value.Length<>0) then z_Uniform3fv_ovr_0(location, count, value[0]) else z_Uniform3fv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3fv(location: Int32; count: Int32; var value: single) := z_Uniform3fv_ovr_0(location, count, value); private z_Uniform3fv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec3f)>(z_Uniform3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3fv(location: Int32; count: Int32; var value: Vec3f) := z_Uniform3fv_ovr_2(location, count, value); private z_Uniform3fv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3fv(location: Int32; count: Int32; value: IntPtr) := z_Uniform3fv_ovr_3(location, count, value); // added in gl2.0 private z_Uniform3i_adr := GetProcAddress('glUniform3i'); private z_Uniform3i_ovr_0 := GetProcOrNil&<procedure(location: Int32; v0: Int32; v1: Int32; v2: Int32)>(z_Uniform3i_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3i(location: Int32; v0: Int32; v1: Int32; v2: Int32) := z_Uniform3i_ovr_0(location, v0, v1, v2); // added in gl2.0 private z_Uniform3iv_adr := GetProcAddress('glUniform3iv'); private z_Uniform3iv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Int32)>(z_Uniform3iv_adr); private z_Uniform3iv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform3iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3iv(location: Int32; count: Int32; value: array of Int32) := if (value<>nil) and (value.Length<>0) then z_Uniform3iv_ovr_0(location, count, value[0]) else z_Uniform3iv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3iv(location: Int32; count: Int32; var value: Int32) := z_Uniform3iv_ovr_0(location, count, value); private z_Uniform3iv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec3i)>(z_Uniform3iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3iv(location: Int32; count: Int32; var value: Vec3i) := z_Uniform3iv_ovr_2(location, count, value); private z_Uniform3iv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform3iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3iv(location: Int32; count: Int32; value: IntPtr) := z_Uniform3iv_ovr_3(location, count, value); // added in gl3.0 private z_Uniform3ui_adr := GetProcAddress('glUniform3ui'); private z_Uniform3ui_ovr_0 := GetProcOrNil&<procedure(location: Int32; v0: UInt32; v1: UInt32; v2: UInt32)>(z_Uniform3ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3ui(location: Int32; v0: UInt32; v1: UInt32; v2: UInt32) := z_Uniform3ui_ovr_0(location, v0, v1, v2); // added in gl3.0 private z_Uniform3uiv_adr := GetProcAddress('glUniform3uiv'); private z_Uniform3uiv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: UInt32)>(z_Uniform3uiv_adr); private z_Uniform3uiv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3uiv(location: Int32; count: Int32; value: array of UInt32) := if (value<>nil) and (value.Length<>0) then z_Uniform3uiv_ovr_0(location, count, value[0]) else z_Uniform3uiv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3uiv(location: Int32; count: Int32; var value: UInt32) := z_Uniform3uiv_ovr_0(location, count, value); private z_Uniform3uiv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec3ui)>(z_Uniform3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3uiv(location: Int32; count: Int32; var value: Vec3ui) := z_Uniform3uiv_ovr_2(location, count, value); private z_Uniform3uiv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform3uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform3uiv(location: Int32; count: Int32; value: IntPtr) := z_Uniform3uiv_ovr_3(location, count, value); // added in gl4.0 private z_Uniform4d_adr := GetProcAddress('glUniform4d'); private z_Uniform4d_ovr_0 := GetProcOrNil&<procedure(location: Int32; x: real; y: real; z: real; w: real)>(z_Uniform4d_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4d(location: Int32; x: real; y: real; z: real; w: real) := z_Uniform4d_ovr_0(location, x, y, z, w); // added in gl4.0 private z_Uniform4dv_adr := GetProcAddress('glUniform4dv'); private z_Uniform4dv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: real)>(z_Uniform4dv_adr); private z_Uniform4dv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4dv(location: Int32; count: Int32; value: array of real) := if (value<>nil) and (value.Length<>0) then z_Uniform4dv_ovr_0(location, count, value[0]) else z_Uniform4dv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4dv(location: Int32; count: Int32; var value: real) := z_Uniform4dv_ovr_0(location, count, value); private z_Uniform4dv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec4d)>(z_Uniform4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4dv(location: Int32; count: Int32; var value: Vec4d) := z_Uniform4dv_ovr_2(location, count, value); private z_Uniform4dv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4dv(location: Int32; count: Int32; value: IntPtr) := z_Uniform4dv_ovr_3(location, count, value); // added in gl2.0 private z_Uniform4f_adr := GetProcAddress('glUniform4f'); private z_Uniform4f_ovr_0 := GetProcOrNil&<procedure(location: Int32; v0: single; v1: single; v2: single; v3: single)>(z_Uniform4f_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4f(location: Int32; v0: single; v1: single; v2: single; v3: single) := z_Uniform4f_ovr_0(location, v0, v1, v2, v3); // added in gl2.0 private z_Uniform4fv_adr := GetProcAddress('glUniform4fv'); private z_Uniform4fv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: single)>(z_Uniform4fv_adr); private z_Uniform4fv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4fv(location: Int32; count: Int32; value: array of single) := if (value<>nil) and (value.Length<>0) then z_Uniform4fv_ovr_0(location, count, value[0]) else z_Uniform4fv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4fv(location: Int32; count: Int32; var value: single) := z_Uniform4fv_ovr_0(location, count, value); private z_Uniform4fv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec4f)>(z_Uniform4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4fv(location: Int32; count: Int32; var value: Vec4f) := z_Uniform4fv_ovr_2(location, count, value); private z_Uniform4fv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4fv(location: Int32; count: Int32; value: IntPtr) := z_Uniform4fv_ovr_3(location, count, value); // added in gl2.0 private z_Uniform4i_adr := GetProcAddress('glUniform4i'); private z_Uniform4i_ovr_0 := GetProcOrNil&<procedure(location: Int32; v0: Int32; v1: Int32; v2: Int32; v3: Int32)>(z_Uniform4i_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4i(location: Int32; v0: Int32; v1: Int32; v2: Int32; v3: Int32) := z_Uniform4i_ovr_0(location, v0, v1, v2, v3); // added in gl2.0 private z_Uniform4iv_adr := GetProcAddress('glUniform4iv'); private z_Uniform4iv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Int32)>(z_Uniform4iv_adr); private z_Uniform4iv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform4iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4iv(location: Int32; count: Int32; value: array of Int32) := if (value<>nil) and (value.Length<>0) then z_Uniform4iv_ovr_0(location, count, value[0]) else z_Uniform4iv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4iv(location: Int32; count: Int32; var value: Int32) := z_Uniform4iv_ovr_0(location, count, value); private z_Uniform4iv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec4i)>(z_Uniform4iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4iv(location: Int32; count: Int32; var value: Vec4i) := z_Uniform4iv_ovr_2(location, count, value); private z_Uniform4iv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform4iv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4iv(location: Int32; count: Int32; value: IntPtr) := z_Uniform4iv_ovr_3(location, count, value); // added in gl3.0 private z_Uniform4ui_adr := GetProcAddress('glUniform4ui'); private z_Uniform4ui_ovr_0 := GetProcOrNil&<procedure(location: Int32; v0: UInt32; v1: UInt32; v2: UInt32; v3: UInt32)>(z_Uniform4ui_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4ui(location: Int32; v0: UInt32; v1: UInt32; v2: UInt32; v3: UInt32) := z_Uniform4ui_ovr_0(location, v0, v1, v2, v3); // added in gl3.0 private z_Uniform4uiv_adr := GetProcAddress('glUniform4uiv'); private z_Uniform4uiv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: UInt32)>(z_Uniform4uiv_adr); private z_Uniform4uiv_ovr_0_anh0001 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform4uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4uiv(location: Int32; count: Int32; value: array of UInt32) := if (value<>nil) and (value.Length<>0) then z_Uniform4uiv_ovr_0(location, count, value[0]) else z_Uniform4uiv_ovr_0_anh0001(location, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4uiv(location: Int32; count: Int32; var value: UInt32) := z_Uniform4uiv_ovr_0(location, count, value); private z_Uniform4uiv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; var value: Vec4ui)>(z_Uniform4uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4uiv(location: Int32; count: Int32; var value: Vec4ui) := z_Uniform4uiv_ovr_2(location, count, value); private z_Uniform4uiv_ovr_3 := GetProcOrNil&<procedure(location: Int32; count: Int32; value: IntPtr)>(z_Uniform4uiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure Uniform4uiv(location: Int32; count: Int32; value: IntPtr) := z_Uniform4uiv_ovr_3(location, count, value); // added in gl3.1 private z_UniformBlockBinding_adr := GetProcAddress('glUniformBlockBinding'); private z_UniformBlockBinding_ovr_0 := GetProcOrNil&<procedure(&program: gl_program; uniformBlockIndex: UInt32; uniformBlockBinding: UInt32)>(z_UniformBlockBinding_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformBlockBinding(&program: gl_program; uniformBlockIndex: UInt32; uniformBlockBinding: UInt32) := z_UniformBlockBinding_ovr_0(&program, uniformBlockIndex, uniformBlockBinding); // added in gl4.0 private z_UniformMatrix2dv_adr := GetProcAddress('glUniformMatrix2dv'); private z_UniformMatrix2dv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: real)>(z_UniformMatrix2dv_adr); private z_UniformMatrix2dv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2dv(location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix2dv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix2dv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2dv(location: Int32; count: Int32; transpose: boolean; var value: real) := z_UniformMatrix2dv_ovr_0(location, count, transpose, value); private z_UniformMatrix2dv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2dv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix2dv_ovr_2(location, count, transpose, value); // added in gl2.0 private z_UniformMatrix2fv_adr := GetProcAddress('glUniformMatrix2fv'); private z_UniformMatrix2fv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: single)>(z_UniformMatrix2fv_adr); private z_UniformMatrix2fv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2fv(location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix2fv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix2fv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2fv(location: Int32; count: Int32; transpose: boolean; var value: single) := z_UniformMatrix2fv_ovr_0(location, count, transpose, value); private z_UniformMatrix2fv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2fv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix2fv_ovr_2(location, count, transpose, value); // added in gl4.0 private z_UniformMatrix2x3dv_adr := GetProcAddress('glUniformMatrix2x3dv'); private z_UniformMatrix2x3dv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: real)>(z_UniformMatrix2x3dv_adr); private z_UniformMatrix2x3dv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix2x3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2x3dv(location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix2x3dv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix2x3dv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2x3dv(location: Int32; count: Int32; transpose: boolean; var value: real) := z_UniformMatrix2x3dv_ovr_0(location, count, transpose, value); private z_UniformMatrix2x3dv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix2x3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2x3dv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix2x3dv_ovr_2(location, count, transpose, value); // added in gl2.1 private z_UniformMatrix2x3fv_adr := GetProcAddress('glUniformMatrix2x3fv'); private z_UniformMatrix2x3fv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: single)>(z_UniformMatrix2x3fv_adr); private z_UniformMatrix2x3fv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix2x3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2x3fv(location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix2x3fv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix2x3fv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2x3fv(location: Int32; count: Int32; transpose: boolean; var value: single) := z_UniformMatrix2x3fv_ovr_0(location, count, transpose, value); private z_UniformMatrix2x3fv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix2x3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2x3fv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix2x3fv_ovr_2(location, count, transpose, value); // added in gl4.0 private z_UniformMatrix2x4dv_adr := GetProcAddress('glUniformMatrix2x4dv'); private z_UniformMatrix2x4dv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: real)>(z_UniformMatrix2x4dv_adr); private z_UniformMatrix2x4dv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix2x4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2x4dv(location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix2x4dv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix2x4dv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2x4dv(location: Int32; count: Int32; transpose: boolean; var value: real) := z_UniformMatrix2x4dv_ovr_0(location, count, transpose, value); private z_UniformMatrix2x4dv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix2x4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2x4dv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix2x4dv_ovr_2(location, count, transpose, value); // added in gl2.1 private z_UniformMatrix2x4fv_adr := GetProcAddress('glUniformMatrix2x4fv'); private z_UniformMatrix2x4fv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: single)>(z_UniformMatrix2x4fv_adr); private z_UniformMatrix2x4fv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix2x4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2x4fv(location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix2x4fv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix2x4fv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2x4fv(location: Int32; count: Int32; transpose: boolean; var value: single) := z_UniformMatrix2x4fv_ovr_0(location, count, transpose, value); private z_UniformMatrix2x4fv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix2x4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix2x4fv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix2x4fv_ovr_2(location, count, transpose, value); // added in gl4.0 private z_UniformMatrix3dv_adr := GetProcAddress('glUniformMatrix3dv'); private z_UniformMatrix3dv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: real)>(z_UniformMatrix3dv_adr); private z_UniformMatrix3dv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3dv(location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix3dv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix3dv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3dv(location: Int32; count: Int32; transpose: boolean; var value: real) := z_UniformMatrix3dv_ovr_0(location, count, transpose, value); private z_UniformMatrix3dv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3dv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix3dv_ovr_2(location, count, transpose, value); // added in gl2.0 private z_UniformMatrix3fv_adr := GetProcAddress('glUniformMatrix3fv'); private z_UniformMatrix3fv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: single)>(z_UniformMatrix3fv_adr); private z_UniformMatrix3fv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3fv(location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix3fv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix3fv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3fv(location: Int32; count: Int32; transpose: boolean; var value: single) := z_UniformMatrix3fv_ovr_0(location, count, transpose, value); private z_UniformMatrix3fv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3fv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix3fv_ovr_2(location, count, transpose, value); // added in gl4.0 private z_UniformMatrix3x2dv_adr := GetProcAddress('glUniformMatrix3x2dv'); private z_UniformMatrix3x2dv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: real)>(z_UniformMatrix3x2dv_adr); private z_UniformMatrix3x2dv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix3x2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3x2dv(location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix3x2dv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix3x2dv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3x2dv(location: Int32; count: Int32; transpose: boolean; var value: real) := z_UniformMatrix3x2dv_ovr_0(location, count, transpose, value); private z_UniformMatrix3x2dv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix3x2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3x2dv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix3x2dv_ovr_2(location, count, transpose, value); // added in gl2.1 private z_UniformMatrix3x2fv_adr := GetProcAddress('glUniformMatrix3x2fv'); private z_UniformMatrix3x2fv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: single)>(z_UniformMatrix3x2fv_adr); private z_UniformMatrix3x2fv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix3x2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3x2fv(location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix3x2fv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix3x2fv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3x2fv(location: Int32; count: Int32; transpose: boolean; var value: single) := z_UniformMatrix3x2fv_ovr_0(location, count, transpose, value); private z_UniformMatrix3x2fv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix3x2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3x2fv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix3x2fv_ovr_2(location, count, transpose, value); // added in gl4.0 private z_UniformMatrix3x4dv_adr := GetProcAddress('glUniformMatrix3x4dv'); private z_UniformMatrix3x4dv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: real)>(z_UniformMatrix3x4dv_adr); private z_UniformMatrix3x4dv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix3x4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3x4dv(location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix3x4dv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix3x4dv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3x4dv(location: Int32; count: Int32; transpose: boolean; var value: real) := z_UniformMatrix3x4dv_ovr_0(location, count, transpose, value); private z_UniformMatrix3x4dv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix3x4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3x4dv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix3x4dv_ovr_2(location, count, transpose, value); // added in gl2.1 private z_UniformMatrix3x4fv_adr := GetProcAddress('glUniformMatrix3x4fv'); private z_UniformMatrix3x4fv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: single)>(z_UniformMatrix3x4fv_adr); private z_UniformMatrix3x4fv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix3x4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3x4fv(location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix3x4fv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix3x4fv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3x4fv(location: Int32; count: Int32; transpose: boolean; var value: single) := z_UniformMatrix3x4fv_ovr_0(location, count, transpose, value); private z_UniformMatrix3x4fv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix3x4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix3x4fv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix3x4fv_ovr_2(location, count, transpose, value); // added in gl4.0 private z_UniformMatrix4dv_adr := GetProcAddress('glUniformMatrix4dv'); private z_UniformMatrix4dv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: real)>(z_UniformMatrix4dv_adr); private z_UniformMatrix4dv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4dv(location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix4dv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix4dv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4dv(location: Int32; count: Int32; transpose: boolean; var value: real) := z_UniformMatrix4dv_ovr_0(location, count, transpose, value); private z_UniformMatrix4dv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix4dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4dv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix4dv_ovr_2(location, count, transpose, value); // added in gl2.0 private z_UniformMatrix4fv_adr := GetProcAddress('glUniformMatrix4fv'); private z_UniformMatrix4fv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: single)>(z_UniformMatrix4fv_adr); private z_UniformMatrix4fv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4fv(location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix4fv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix4fv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4fv(location: Int32; count: Int32; transpose: boolean; var value: single) := z_UniformMatrix4fv_ovr_0(location, count, transpose, value); private z_UniformMatrix4fv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix4fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4fv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix4fv_ovr_2(location, count, transpose, value); // added in gl4.0 private z_UniformMatrix4x2dv_adr := GetProcAddress('glUniformMatrix4x2dv'); private z_UniformMatrix4x2dv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: real)>(z_UniformMatrix4x2dv_adr); private z_UniformMatrix4x2dv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix4x2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4x2dv(location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix4x2dv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix4x2dv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4x2dv(location: Int32; count: Int32; transpose: boolean; var value: real) := z_UniformMatrix4x2dv_ovr_0(location, count, transpose, value); private z_UniformMatrix4x2dv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix4x2dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4x2dv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix4x2dv_ovr_2(location, count, transpose, value); // added in gl2.1 private z_UniformMatrix4x2fv_adr := GetProcAddress('glUniformMatrix4x2fv'); private z_UniformMatrix4x2fv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: single)>(z_UniformMatrix4x2fv_adr); private z_UniformMatrix4x2fv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix4x2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4x2fv(location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix4x2fv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix4x2fv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4x2fv(location: Int32; count: Int32; transpose: boolean; var value: single) := z_UniformMatrix4x2fv_ovr_0(location, count, transpose, value); private z_UniformMatrix4x2fv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix4x2fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4x2fv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix4x2fv_ovr_2(location, count, transpose, value); // added in gl4.0 private z_UniformMatrix4x3dv_adr := GetProcAddress('glUniformMatrix4x3dv'); private z_UniformMatrix4x3dv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: real)>(z_UniformMatrix4x3dv_adr); private z_UniformMatrix4x3dv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix4x3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4x3dv(location: Int32; count: Int32; transpose: boolean; value: array of real) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix4x3dv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix4x3dv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4x3dv(location: Int32; count: Int32; transpose: boolean; var value: real) := z_UniformMatrix4x3dv_ovr_0(location, count, transpose, value); private z_UniformMatrix4x3dv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix4x3dv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4x3dv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix4x3dv_ovr_2(location, count, transpose, value); // added in gl2.1 private z_UniformMatrix4x3fv_adr := GetProcAddress('glUniformMatrix4x3fv'); private z_UniformMatrix4x3fv_ovr_0 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; var value: single)>(z_UniformMatrix4x3fv_adr); private z_UniformMatrix4x3fv_ovr_0_anh00001 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix4x3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4x3fv(location: Int32; count: Int32; transpose: boolean; value: array of single) := if (value<>nil) and (value.Length<>0) then z_UniformMatrix4x3fv_ovr_0(location, count, transpose, value[0]) else z_UniformMatrix4x3fv_ovr_0_anh00001(location, count, transpose, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4x3fv(location: Int32; count: Int32; transpose: boolean; var value: single) := z_UniformMatrix4x3fv_ovr_0(location, count, transpose, value); private z_UniformMatrix4x3fv_ovr_2 := GetProcOrNil&<procedure(location: Int32; count: Int32; transpose: boolean; value: IntPtr)>(z_UniformMatrix4x3fv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformMatrix4x3fv(location: Int32; count: Int32; transpose: boolean; value: IntPtr) := z_UniformMatrix4x3fv_ovr_2(location, count, transpose, value); // added in gl4.0 private z_UniformSubroutinesuiv_adr := GetProcAddress('glUniformSubroutinesuiv'); private z_UniformSubroutinesuiv_ovr_0 := GetProcOrNil&<procedure(_shadertype: ShaderType; count: Int32; var indices: UInt32)>(z_UniformSubroutinesuiv_adr); private z_UniformSubroutinesuiv_ovr_0_anh0001 := GetProcOrNil&<procedure(_shadertype: ShaderType; count: Int32; indices: IntPtr)>(z_UniformSubroutinesuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformSubroutinesuiv(_shadertype: ShaderType; count: Int32; indices: array of UInt32) := if (indices<>nil) and (indices.Length<>0) then z_UniformSubroutinesuiv_ovr_0(_shadertype, count, indices[0]) else z_UniformSubroutinesuiv_ovr_0_anh0001(_shadertype, count, IntPtr.Zero); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformSubroutinesuiv(_shadertype: ShaderType; count: Int32; var indices: UInt32) := z_UniformSubroutinesuiv_ovr_0(_shadertype, count, indices); private z_UniformSubroutinesuiv_ovr_2 := GetProcOrNil&<procedure(_shadertype: ShaderType; count: Int32; indices: IntPtr)>(z_UniformSubroutinesuiv_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UniformSubroutinesuiv(_shadertype: ShaderType; count: Int32; indices: IntPtr) := z_UniformSubroutinesuiv_ovr_2(_shadertype, count, indices); // added in gl1.5 private z_UnmapBuffer_adr := GetProcAddress('glUnmapBuffer'); private z_UnmapBuffer_ovr_0 := GetProcOrNil&<function(target: BufferTarget): boolean>(z_UnmapBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function UnmapBuffer(target: BufferTarget): boolean := z_UnmapBuffer_ovr_0(target); // added in gl4.5 private z_UnmapNamedBuffer_adr := GetProcAddress('glUnmapNamedBuffer'); private z_UnmapNamedBuffer_ovr_0 := GetProcOrNil&<function(buffer: gl_buffer): boolean>(z_UnmapNamedBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] function UnmapNamedBuffer(buffer: gl_buffer): boolean := z_UnmapNamedBuffer_ovr_0(buffer); // added in gl2.0 private z_UseProgram_adr := GetProcAddress('glUseProgram'); private z_UseProgram_ovr_0 := GetProcOrNil&<procedure(&program: gl_program)>(z_UseProgram_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UseProgram(&program: gl_program) := z_UseProgram_ovr_0(&program); // added in gl4.1 private z_UseProgramStages_adr := GetProcAddress('glUseProgramStages'); private z_UseProgramStages_ovr_0 := GetProcOrNil&<procedure(pipeline: gl_program_pipeline; stages: UseProgramStageMask; &program: gl_program)>(z_UseProgramStages_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure UseProgramStages(pipeline: gl_program_pipeline; stages: UseProgramStageMask; &program: gl_program) := z_UseProgramStages_ovr_0(pipeline, stages, &program); // added in gl2.0 private z_ValidateProgram_adr := GetProcAddress('glValidateProgram'); private z_ValidateProgram_ovr_0 := GetProcOrNil&<procedure(&program: gl_program)>(z_ValidateProgram_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ValidateProgram(&program: gl_program) := z_ValidateProgram_ovr_0(&program); // added in gl4.1 private z_ValidateProgramPipeline_adr := GetProcAddress('glValidateProgramPipeline'); private z_ValidateProgramPipeline_ovr_0 := GetProcOrNil&<procedure(pipeline: gl_program_pipeline)>(z_ValidateProgramPipeline_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure ValidateProgramPipeline(pipeline: gl_program_pipeline) := z_ValidateProgramPipeline_ovr_0(pipeline); // added in gl4.5 private z_VertexArrayAttribBinding_adr := GetProcAddress('glVertexArrayAttribBinding'); private z_VertexArrayAttribBinding_ovr_0 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; attribindex: UInt32; bindingindex: UInt32)>(z_VertexArrayAttribBinding_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure VertexArrayAttribBinding(vaobj: gl_vertex_array; attribindex: UInt32; bindingindex: UInt32) := z_VertexArrayAttribBinding_ovr_0(vaobj, attribindex, bindingindex); // added in gl4.5 private z_VertexArrayAttribFormat_adr := GetProcAddress('glVertexArrayAttribFormat'); private z_VertexArrayAttribFormat_ovr_0 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; attribindex: UInt32; size: Int32; &type: VertexAttribType; normalized: boolean; relativeoffset: UInt32)>(z_VertexArrayAttribFormat_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure VertexArrayAttribFormat(vaobj: gl_vertex_array; attribindex: UInt32; size: Int32; &type: VertexAttribType; normalized: boolean; relativeoffset: UInt32) := z_VertexArrayAttribFormat_ovr_0(vaobj, attribindex, size, &type, normalized, relativeoffset); // added in gl4.5 private z_VertexArrayAttribIFormat_adr := GetProcAddress('glVertexArrayAttribIFormat'); private z_VertexArrayAttribIFormat_ovr_0 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; attribindex: UInt32; size: Int32; &type: VertexAttribIType; relativeoffset: UInt32)>(z_VertexArrayAttribIFormat_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure VertexArrayAttribIFormat(vaobj: gl_vertex_array; attribindex: UInt32; size: Int32; &type: VertexAttribIType; relativeoffset: UInt32) := z_VertexArrayAttribIFormat_ovr_0(vaobj, attribindex, size, &type, relativeoffset); // added in gl4.5 private z_VertexArrayAttribLFormat_adr := GetProcAddress('glVertexArrayAttribLFormat'); private z_VertexArrayAttribLFormat_ovr_0 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; attribindex: UInt32; size: Int32; &type: VertexAttribLType; relativeoffset: UInt32)>(z_VertexArrayAttribLFormat_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure VertexArrayAttribLFormat(vaobj: gl_vertex_array; attribindex: UInt32; size: Int32; &type: VertexAttribLType; relativeoffset: UInt32) := z_VertexArrayAttribLFormat_ovr_0(vaobj, attribindex, size, &type, relativeoffset); // added in gl4.5 private z_VertexArrayBindingDivisor_adr := GetProcAddress('glVertexArrayBindingDivisor'); private z_VertexArrayBindingDivisor_ovr_0 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; bindingindex: UInt32; divisor: UInt32)>(z_VertexArrayBindingDivisor_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure VertexArrayBindingDivisor(vaobj: gl_vertex_array; bindingindex: UInt32; divisor: UInt32) := z_VertexArrayBindingDivisor_ovr_0(vaobj, bindingindex, divisor); // added in gl4.5 private z_VertexArrayElementBuffer_adr := GetProcAddress('glVertexArrayElementBuffer'); private z_VertexArrayElementBuffer_ovr_0 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; buffer: gl_buffer)>(z_VertexArrayElementBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure VertexArrayElementBuffer(vaobj: gl_vertex_array; buffer: gl_buffer) := z_VertexArrayElementBuffer_ovr_0(vaobj, buffer); // added in gl4.5 private z_VertexArrayVertexBuffer_adr := GetProcAddress('glVertexArrayVertexBuffer'); private z_VertexArrayVertexBuffer_ovr_0 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; bindingindex: UInt32; buffer: gl_buffer; offset: IntPtr; stride: Int32)>(z_VertexArrayVertexBuffer_adr); public [MethodImpl(MethodImplOptions.AggressiveInlining)] procedure VertexArrayVertexBuffer(vaobj: gl_vertex_array; bindingindex: UInt32; buffer: gl_buffer; offset: IntPtr; stride: Int32) := z_VertexArrayVertexBuffer_ovr_0(vaobj, bindingindex, buffer, offset, stride); // added in gl4.5 private z_VertexArrayVertexBuffers_adr := GetProcAddress('glVertexArrayVertexBuffers'); private z_VertexArrayVertexBuffers_ovr_0 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; first: UInt32; count: Int32; var buffers: gl_buffer; var offsets: IntPtr; var strides: Int32)>(z_VertexArrayVertexBuffers_adr); private z_VertexArrayVertexBuffers_ovr_0_anh0000100 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; first: UInt32; count: Int32; buffers: IntPtr; var offsets: IntPtr; var strides: Int32)>(z_VertexArrayVertexBuffers_adr); private z_VertexArrayVertexBuffers_ovr_0_anh0000010 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; first: UInt32; count: Int32; var buffers: gl_buffer; offsets: IntPtr; var strides: Int32)>(z_VertexArrayVertexBuffers_adr); private z_VertexArrayVertexBuffers_ovr_0_anh0000110 := GetProcOrNil&<procedure(vaobj: gl_vertex_array; first: UInt32; count: Int32; buffers: IntPtr; offsets: IntPtr; v