[fpc-pascal] pas2js Webgl unit committed

Ryan Joseph ryan at thealchemistguild.com
Thu May 3 04:16:35 CEST 2018



> On May 2, 2018, at 11:36 PM, Sven Barth via fpc-pascal <fpc-pascal at lists.freepascal.org> wrote:
> 
> It's "Typename = class external name 'foobar' (Basetype)", not "class Typename = external name 'foobar' (Basetype)". We're not in C++ after all :P
> 
>   public
>     const READ_BUFFER: nativeint;
>     const UNPACK_ROW_LENGTH: nativeint;
> 
> Just in case you aren't aware of it: "const", "type" and "var" start sections, even inside classes/records, so you don't need to repeat the "const". Instead it is common to write "public const" and then write all constant members. 
> 

Not paying attention at all yesterday going from PHP to Pascal. It’s fixed now and looks better but the formatting is not standard perhaps.

The .idls still had those lines I wasn’t sure what to do with so I ignored them. I think enums should be string types followed by constants (if that’s allowed by the parser).

enum WebGLPowerPreference should probably be:

type
  TWebGLPowerPreference = string;
const
  TWebGLPowerPreferenceDefault = ‘default’;
  etc…

Who knows about or’d typedefs though. better to do those by hand or dump them as comments.

enum WebGLPowerPreference { "default", "low-power", "high-performance" };

typedef (ImageBitmap or
         ImageData or
         HTMLImageElement or
         HTMLCanvasElement or
         HTMLVideoElement) TexImageSource;

typedef ([AllowShared] Float32Array or sequence<GLfloat>) Float32List;
typedef ([AllowShared] Int32Array or sequence<GLint>) Int32List;

==========

unit webgl2;

{$mode objfpc}
{$modeswitch externalclass}

interface
uses
  JS, Web;

  type
    GLint64 = nativeint;
    GLuint64 = longword;
  type
    TJSWebGLQuery = class external name 'WebGLQuery' (TJSWebGLObject);
    TJSWebGLSampler = class external name 'WebGLSampler' (TJSWebGLObject);
    TJSWebGLSync = class external name 'WebGLSync' (TJSWebGLObject);
    TJSWebGLTransformFeedback = class external name 'WebGLTransformFeedback' (TJSWebGLObject);
    TJSWebGLVertexArrayObject = class external name 'WebGLVertexArrayObject' (TJSWebGLObject);
  type  
    TJSWebGL2RenderingContextBase = class external name 'WebGL2RenderingContextBase' (TJSObject)
    public
    const
      READ_BUFFER: nativeint;
      UNPACK_ROW_LENGTH: nativeint;
      UNPACK_SKIP_ROWS: nativeint;
      UNPACK_SKIP_PIXELS: nativeint;
      PACK_ROW_LENGTH: nativeint;
      PACK_SKIP_ROWS: nativeint;
      PACK_SKIP_PIXELS: nativeint;
      COLOR: nativeint;
      DEPTH: nativeint;
      STENCIL: nativeint;
      RED: nativeint;
      RGB8: nativeint;
      RGBA8: nativeint;
      RGB10_A2: nativeint;
      TEXTURE_BINDING_3D: nativeint;
      UNPACK_SKIP_IMAGES: nativeint;
      UNPACK_IMAGE_HEIGHT: nativeint;
      TEXTURE_3D: nativeint;
      TEXTURE_WRAP_R: nativeint;
      MAX_3D_TEXTURE_SIZE: nativeint;
      UNSIGNED_INT_2_10_10_10_REV: nativeint;
      MAX_ELEMENTS_VERTICES: nativeint;
      MAX_ELEMENTS_INDICES: nativeint;
      TEXTURE_MIN_LOD: nativeint;
      TEXTURE_MAX_LOD: nativeint;
      TEXTURE_BASE_LEVEL: nativeint;
      TEXTURE_MAX_LEVEL: nativeint;
      MIN: nativeint;
      MAX: nativeint;
      DEPTH_COMPONENT24: nativeint;
      MAX_TEXTURE_LOD_BIAS: nativeint;
      TEXTURE_COMPARE_MODE: nativeint;
      TEXTURE_COMPARE_FUNC: nativeint;
      CURRENT_QUERY: nativeint;
      QUERY_RESULT: nativeint;
      QUERY_RESULT_AVAILABLE: nativeint;
      STREAM_READ: nativeint;
      STREAM_COPY: nativeint;
      STATIC_READ: nativeint;
      STATIC_COPY: nativeint;
      DYNAMIC_READ: nativeint;
      DYNAMIC_COPY: nativeint;
      MAX_DRAW_BUFFERS: nativeint;
      DRAW_BUFFER0: nativeint;
      DRAW_BUFFER1: nativeint;
      DRAW_BUFFER2: nativeint;
      DRAW_BUFFER3: nativeint;
      DRAW_BUFFER4: nativeint;
      DRAW_BUFFER5: nativeint;
      DRAW_BUFFER6: nativeint;
      DRAW_BUFFER7: nativeint;
      DRAW_BUFFER8: nativeint;
      DRAW_BUFFER9: nativeint;
      DRAW_BUFFER10: nativeint;
      DRAW_BUFFER11: nativeint;
      DRAW_BUFFER12: nativeint;
      DRAW_BUFFER13: nativeint;
      DRAW_BUFFER14: nativeint;
      DRAW_BUFFER15: nativeint;
      MAX_FRAGMENT_UNIFORM_COMPONENTS: nativeint;
      MAX_VERTEX_UNIFORM_COMPONENTS: nativeint;
      SAMPLER_3D: nativeint;
      SAMPLER_2D_SHADOW: nativeint;
      FRAGMENT_SHADER_DERIVATIVE_HINT: nativeint;
      PIXEL_PACK_BUFFER: nativeint;
      PIXEL_UNPACK_BUFFER: nativeint;
      PIXEL_PACK_BUFFER_BINDING: nativeint;
      PIXEL_UNPACK_BUFFER_BINDING: nativeint;
      FLOAT_MAT2x3: nativeint;
      FLOAT_MAT2x4: nativeint;
      FLOAT_MAT3x2: nativeint;
      FLOAT_MAT3x4: nativeint;
      FLOAT_MAT4x2: nativeint;
      FLOAT_MAT4x3: nativeint;
      SRGB: nativeint;
      SRGB8: nativeint;
      SRGB8_ALPHA8: nativeint;
      COMPARE_REF_TO_TEXTURE: nativeint;
      RGBA32F: nativeint;
      RGB32F: nativeint;
      RGBA16F: nativeint;
      RGB16F: nativeint;
      VERTEX_ATTRIB_ARRAY_INTEGER: nativeint;
      MAX_ARRAY_TEXTURE_LAYERS: nativeint;
      MIN_PROGRAM_TEXEL_OFFSET: nativeint;
      MAX_PROGRAM_TEXEL_OFFSET: nativeint;
      MAX_VARYING_COMPONENTS: nativeint;
      TEXTURE_2D_ARRAY: nativeint;
      TEXTURE_BINDING_2D_ARRAY: nativeint;
      R11F_G11F_B10F: nativeint;
      UNSIGNED_INT_10F_11F_11F_REV: nativeint;
      RGB9_E5: nativeint;
      UNSIGNED_INT_5_9_9_9_REV: nativeint;
      TRANSFORM_FEEDBACK_BUFFER_MODE: nativeint;
      MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: nativeint;
      TRANSFORM_FEEDBACK_VARYINGS: nativeint;
      TRANSFORM_FEEDBACK_BUFFER_START: nativeint;
      TRANSFORM_FEEDBACK_BUFFER_SIZE: nativeint;
      TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: nativeint;
      RASTERIZER_DISCARD: nativeint;
      MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: nativeint;
      MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: nativeint;
      INTERLEAVED_ATTRIBS: nativeint;
      SEPARATE_ATTRIBS: nativeint;
      TRANSFORM_FEEDBACK_BUFFER: nativeint;
      TRANSFORM_FEEDBACK_BUFFER_BINDING: nativeint;
      RGBA32UI: nativeint;
      RGB32UI: nativeint;
      RGBA16UI: nativeint;
      RGB16UI: nativeint;
      RGBA8UI: nativeint;
      RGB8UI: nativeint;
      RGBA32I: nativeint;
      RGB32I: nativeint;
      RGBA16I: nativeint;
      RGB16I: nativeint;
      RGBA8I: nativeint;
      RGB8I: nativeint;
      RED_INTEGER: nativeint;
      RGB_INTEGER: nativeint;
      RGBA_INTEGER: nativeint;
      SAMPLER_2D_ARRAY: nativeint;
      SAMPLER_2D_ARRAY_SHADOW: nativeint;
      SAMPLER_CUBE_SHADOW: nativeint;
      UNSIGNED_INT_VEC2: nativeint;
      UNSIGNED_INT_VEC3: nativeint;
      UNSIGNED_INT_VEC4: nativeint;
      INT_SAMPLER_2D: nativeint;
      INT_SAMPLER_3D: nativeint;
      INT_SAMPLER_CUBE: nativeint;
      INT_SAMPLER_2D_ARRAY: nativeint;
      UNSIGNED_INT_SAMPLER_2D: nativeint;
      UNSIGNED_INT_SAMPLER_3D: nativeint;
      UNSIGNED_INT_SAMPLER_CUBE: nativeint;
      UNSIGNED_INT_SAMPLER_2D_ARRAY: nativeint;
      DEPTH_COMPONENT32F: nativeint;
      DEPTH32F_STENCIL8: nativeint;
      FLOAT_32_UNSIGNED_INT_24_8_REV: nativeint;
      FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: nativeint;
      FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: nativeint;
      FRAMEBUFFER_ATTACHMENT_RED_SIZE: nativeint;
      FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: nativeint;
      FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: nativeint;
      FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: nativeint;
      FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: nativeint;
      FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: nativeint;
      FRAMEBUFFER_DEFAULT: nativeint;
      DEPTH_STENCIL_ATTACHMENT: nativeint;
      DEPTH_STENCIL: nativeint;
      UNSIGNED_INT_24_8: nativeint;
      DEPTH24_STENCIL8: nativeint;
      UNSIGNED_NORMALIZED: nativeint;
      DRAW_FRAMEBUFFER_BINDING: nativeint;
      READ_FRAMEBUFFER: nativeint;
      DRAW_FRAMEBUFFER: nativeint;
      READ_FRAMEBUFFER_BINDING: nativeint;
      RENDERBUFFER_SAMPLES: nativeint;
      FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: nativeint;
      MAX_COLOR_ATTACHMENTS: nativeint;
      COLOR_ATTACHMENT1: nativeint;
      COLOR_ATTACHMENT2: nativeint;
      COLOR_ATTACHMENT3: nativeint;
      COLOR_ATTACHMENT4: nativeint;
      COLOR_ATTACHMENT5: nativeint;
      COLOR_ATTACHMENT6: nativeint;
      COLOR_ATTACHMENT7: nativeint;
      COLOR_ATTACHMENT8: nativeint;
      COLOR_ATTACHMENT9: nativeint;
      COLOR_ATTACHMENT10: nativeint;
      COLOR_ATTACHMENT11: nativeint;
      COLOR_ATTACHMENT12: nativeint;
      COLOR_ATTACHMENT13: nativeint;
      COLOR_ATTACHMENT14: nativeint;
      COLOR_ATTACHMENT15: nativeint;
      FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: nativeint;
      MAX_SAMPLES: nativeint;
      HALF_FLOAT: nativeint;
      RG: nativeint;
      RG_INTEGER: nativeint;
      R8: nativeint;
      RG8: nativeint;
      R16F: nativeint;
      R32F: nativeint;
      RG16F: nativeint;
      RG32F: nativeint;
      R8I: nativeint;
      R8UI: nativeint;
      R16I: nativeint;
      R16UI: nativeint;
      R32I: nativeint;
      R32UI: nativeint;
      RG8I: nativeint;
      RG8UI: nativeint;
      RG16I: nativeint;
      RG16UI: nativeint;
      RG32I: nativeint;
      RG32UI: nativeint;
      VERTEX_ARRAY_BINDING: nativeint;
      R8_SNORM: nativeint;
      RG8_SNORM: nativeint;
      RGB8_SNORM: nativeint;
      RGBA8_SNORM: nativeint;
      SIGNED_NORMALIZED: nativeint;
      COPY_READ_BUFFER: nativeint;
      COPY_WRITE_BUFFER: nativeint;
      COPY_READ_BUFFER_BINDING: nativeint;
      COPY_WRITE_BUFFER_BINDING: nativeint;
      UNIFORM_BUFFER: nativeint;
      UNIFORM_BUFFER_BINDING: nativeint;
      UNIFORM_BUFFER_START: nativeint;
      UNIFORM_BUFFER_SIZE: nativeint;
      MAX_VERTEX_UNIFORM_BLOCKS: nativeint;
      MAX_FRAGMENT_UNIFORM_BLOCKS: nativeint;
      MAX_COMBINED_UNIFORM_BLOCKS: nativeint;
      MAX_UNIFORM_BUFFER_BINDINGS: nativeint;
      MAX_UNIFORM_BLOCK_SIZE: nativeint;
      MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: nativeint;
      MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: nativeint;
      UNIFORM_BUFFER_OFFSET_ALIGNMENT: nativeint;
      ACTIVE_UNIFORM_BLOCKS: nativeint;
      UNIFORM_TYPE: nativeint;
      UNIFORM_SIZE: nativeint;
      UNIFORM_BLOCK_INDEX: nativeint;
      UNIFORM_OFFSET: nativeint;
      UNIFORM_ARRAY_STRIDE: nativeint;
      UNIFORM_MATRIX_STRIDE: nativeint;
      UNIFORM_IS_ROW_MAJOR: nativeint;
      UNIFORM_BLOCK_BINDING: nativeint;
      UNIFORM_BLOCK_DATA_SIZE: nativeint;
      UNIFORM_BLOCK_ACTIVE_UNIFORMS: nativeint;
      UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: nativeint;
      UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: nativeint;
      UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: nativeint;
      INVALID_INDEX: nativeint;
      MAX_VERTEX_OUTPUT_COMPONENTS: nativeint;
      MAX_FRAGMENT_INPUT_COMPONENTS: nativeint;
      MAX_SERVER_WAIT_TIMEOUT: nativeint;
      OBJECT_TYPE: nativeint;
      SYNC_CONDITION: nativeint;
      SYNC_STATUS: nativeint;
      SYNC_FLAGS: nativeint;
      SYNC_FENCE: nativeint;
      SYNC_GPU_COMMANDS_COMPLETE: nativeint;
      UNSIGNALED: nativeint;
      SIGNALED: nativeint;
      ALREADY_SIGNALED: nativeint;
      TIMEOUT_EXPIRED: nativeint;
      CONDITION_SATISFIED: nativeint;
      WAIT_FAILED: nativeint;
      SYNC_FLUSH_COMMANDS_BIT: nativeint;
      VERTEX_ATTRIB_ARRAY_DIVISOR: nativeint;
      ANY_SAMPLES_PASSED: nativeint;
      ANY_SAMPLES_PASSED_CONSERVATIVE: nativeint;
      SAMPLER_BINDING: nativeint;
      RGB10_A2UI: nativeint;
      INT_2_10_10_10_REV: nativeint;
      TRANSFORM_FEEDBACK: nativeint;
      TRANSFORM_FEEDBACK_PAUSED: nativeint;
      TRANSFORM_FEEDBACK_ACTIVE: nativeint;
      TRANSFORM_FEEDBACK_BINDING: nativeint;
      TEXTURE_IMMUTABLE_FORMAT: nativeint;
      MAX_ELEMENT_INDEX: nativeint;
      TEXTURE_IMMUTABLE_LEVELS: nativeint;
      MAX_CLIENT_WAIT_TIMEOUT_WEBGL: nativeint;
    public
      procedure bufferData (target: GLenum; size: GLsizeiptr; usage: GLenum);
      procedure bufferData (target: GLenum; srcData: BufferSource; usage: GLenum);
      procedure bufferSubData (target: GLenum; dstByteOffset: GLintptr; srcData: BufferSource);
      procedure bufferData (target: GLenum; srcData: ArrayBufferView; usage: GLenum; srcOffset: GLuint; length: GLuint);
      procedure bufferSubData (target: GLenum; dstByteOffset: GLintptr; srcData: ArrayBufferView; length: GLuint);
      procedure copyBufferSubData (readTarget: GLenum; writeTarget: GLenum; readOffset: GLintptr; size: GLsizeiptr);
      procedure getBufferSubData (target: GLenum; srcByteOffset: GLintptr; dstBuffer: ArrayBufferView; dstOffset: GLuint; length: GLuint);
      procedure blitFramebuffer (srcX0: GLint; srcY0: GLint; srcX1: GLint; srcY1: GLint; dstX0: GLint; dstY0: GLint; dstY1: GLint; mask: GLbitfield; filter: GLenum);
      procedure framebufferTextureLayer (target: GLenum; attachment: GLenum; texture: TJSWebGLTexture; level: GLint);
      procedure invalidateFramebuffer (target: GLenum; attachments: GLenumDynArray);
      procedure invalidateSubFramebuffer (target: GLenum; attachments: GLenumDynArray; y: GLint; width: GLsizei; height: GLsizei);
      procedure readBuffer (src: GLenum);
      function getInternalformatParameter (target: GLenum; internalformat: GLenum; pname: GLenum): JSValue;
      procedure renderbufferStorageMultisample (target: GLenum; samples: GLsizei; internalformat: GLenum; height: GLsizei);
      procedure texStorage2D (target: GLenum; levels: GLsizei; internalformat: GLenum; width: GLsizei);
      procedure texStorage3D (target: GLenum; levels: GLsizei; internalformat: GLenum; width: GLsizei; depth: GLsizei);
      procedure texImage2D (target: GLenum; level: GLint; internalformat: GLint; height: GLsizei; border: GLint; format: GLenum; pixels: ArrayBufferView);
      procedure texImage2D (target: GLenum; level: GLint; internalformat: GLint; type: GLenum; source: TexImageSource);
      procedure texSubImage2D (target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; height: GLsizei; type: GLenum; pixels: ArrayBufferView);
      procedure texSubImage2D (target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; type: GLenum; source: TexImageSource);
      procedure texImage2D (target: GLenum; level: GLint; internalformat: GLint; width: GLsizei; height: GLsizei; format: GLenum; type: GLenum; pboOffset: GLintptr);
      procedure texImage2D (target: GLenum; level: GLint; internalformat: GLint; width: GLsizei; height: GLsizei; format: GLenum; type: GLenum);
      procedure texImage2D (target: GLenum; level: GLint; internalformat: GLint; width: GLsizei; height: GLsizei; format: GLenum; type: GLenum; srcData: ArrayBufferView);
      procedure texImage3D (target: GLenum; level: GLint; internalformat: GLint; width: GLsizei; height: GLsizei; border: GLint; format: GLenum; type: GLenum; pboOffset: GLintptr);
      procedure texImage3D (target: GLenum; level: GLint; internalformat: GLint; width: GLsizei; height: GLsizei; border: GLint; format: GLenum; type: GLenum);
      procedure texImage3D (target: GLenum; level: GLint; internalformat: GLint; width: GLsizei; height: GLsizei; border: GLint; format: GLenum; type: GLenum; srcData: ArrayBufferView);
      procedure texImage3D (target: GLenum; level: GLint; internalformat: GLint; width: GLsizei; height: GLsizei; border: GLint; format: GLenum; type: GLenum; srcData: ArrayBufferView);
      procedure texSubImage2D (target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; width: GLsizei; format: GLenum; type: GLenum; pboOffset: GLintptr);
      procedure texSubImage2D (target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; width: GLsizei; format: GLenum; type: GLenum);
      procedure texSubImage2D (target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; width: GLsizei; format: GLenum; type: GLenum; srcData: ArrayBufferView);
      procedure texSubImage3D (target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; height: GLsizei; depth: GLsizei; format: GLenum; type: GLenum);
      procedure texSubImage3D (target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; height: GLsizei; depth: GLsizei; format: GLenum; type: GLenum);
      procedure texSubImage3D (target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; height: GLsizei; depth: GLsizei; format: GLenum; type: GLenum; srcOffset: GLuint);
      procedure copyTexSubImage3D (target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; y: GLint; width: GLsizei; height: GLsizei);
      procedure compressedTexImage2D (target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; border: GLint; imageSize: GLsizei; offset: GLintptr);
      procedure compressedTexImage2D (target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; border: GLint; srcData: ArrayBufferView; srcOffset: GLuint; srcLengthOverride: GLuint);
      procedure compressedTexImage3D (target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; depth: GLsizei; border: GLint; imageSize: GLsizei; offset: GLintptr);
      procedure compressedTexImage3D (target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; depth: GLsizei; border: GLint; srcData: ArrayBufferView; srcOffset: GLuint; srcLengthOverride: GLuint);
      procedure compressedTexSubImage2D (target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; height: GLsizei; format: GLenum; imageSize: GLsizei; offset: GLintptr);
      procedure compressedTexSubImage2D (target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; height: GLsizei; format: GLenum; srcOffset: GLuint; srcLengthOverride: GLuint);
      procedure compressedTexSubImage3D (target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; imageSize: GLsizei; offset: GLintptr);
      procedure compressedTexSubImage3D (target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; srcData: ArrayBufferView; srcOffset: GLuint; srcLengthOverride: GLuint);
      function getFragDataLocation (program: WebGLProgram; name: DOMString): GLint;
      procedure uniform1ui (location: TJSWebGLUniformLocation; v0: GLuint);
      procedure uniform2ui (location: TJSWebGLUniformLocation; v0: GLuint; v1: GLuint);
      procedure uniform3ui (location: TJSWebGLUniformLocation; v0: GLuint; v1: GLuint; v2: GLuint);
      procedure uniform4ui (location: TJSWebGLUniformLocation; v0: GLuint; v1: GLuint; v2: GLuint; v3: GLuint);
      procedure uniform1fv (location: TJSWebGLUniformLocation; data: Float32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniform2fv (location: TJSWebGLUniformLocation; data: Float32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniform3fv (location: TJSWebGLUniformLocation; data: Float32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniform4fv (location: TJSWebGLUniformLocation; data: Float32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniform1iv (location: TJSWebGLUniformLocation; data: Int32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniform2iv (location: TJSWebGLUniformLocation; data: Int32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniform3iv (location: TJSWebGLUniformLocation; data: Int32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniform4iv (location: TJSWebGLUniformLocation; data: Int32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniform1uiv (location: TJSWebGLUniformLocation; data: Uint32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniform2uiv (location: TJSWebGLUniformLocation; data: Uint32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniform3uiv (location: TJSWebGLUniformLocation; data: Uint32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniform4uiv (location: TJSWebGLUniformLocation; data: Uint32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniformMatrix2fv (location: TJSWebGLUniformLocation; transpose: GLboolean; data: Float32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniformMatrix3x2fv (location: TJSWebGLUniformLocation; transpose: GLboolean; data: Float32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniformMatrix4x2fv (location: TJSWebGLUniformLocation; transpose: GLboolean; data: Float32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniformMatrix2x3fv (location: TJSWebGLUniformLocation; transpose: GLboolean; data: Float32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniformMatrix3fv (location: TJSWebGLUniformLocation; transpose: GLboolean; data: Float32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniformMatrix4x3fv (location: TJSWebGLUniformLocation; transpose: GLboolean; data: Float32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniformMatrix2x4fv (location: TJSWebGLUniformLocation; transpose: GLboolean; data: Float32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniformMatrix3x4fv (location: TJSWebGLUniformLocation; transpose: GLboolean; data: Float32List; srcOffset: GLuint; srcLength: GLuint);
      procedure uniformMatrix4fv (location: TJSWebGLUniformLocation; transpose: GLboolean; data: Float32List; srcOffset: GLuint; srcLength: GLuint);
      procedure vertexAttribI4i (index: GLuint; x: GLint; y: GLint; z: GLint; w: GLint);
      procedure vertexAttribI4iv (index: GLuint; values: Int32List);
      procedure vertexAttribI4ui (index: GLuint; x: GLuint; y: GLuint; z: GLuint; w: GLuint);
      procedure vertexAttribI4uiv (index: GLuint; values: Uint32List);
      procedure vertexAttribIPointer (index: GLuint; size: GLint; type: GLenum; stride: GLsizei; offset: GLintptr);
      procedure vertexAttribDivisor (index: GLuint; divisor: GLuint);
      procedure drawArraysInstanced (mode: GLenum; first: GLint; count: GLsizei; instanceCount: GLsizei);
      procedure drawElementsInstanced (mode: GLenum; count: GLsizei; type: GLenum; offset: GLintptr; instanceCount: GLsizei);
      procedure drawRangeElements (mode: GLenum; start: GLuint; end: GLuint; count: GLsizei; type: GLenum; offset: GLintptr);
      procedure readPixels (x: GLint; y: GLint; width: GLsizei; height: GLsizei; format: GLenum; type: GLenum);
      procedure readPixels (x: GLint; y: GLint; width: GLsizei; height: GLsizei; format: GLenum; type: GLenum);
      procedure readPixels (x: GLint; y: GLint; width: GLsizei; height: GLsizei; format: GLenum; type: GLenum; dstOffset: GLuint);
      procedure drawBuffers (buffers: GLenumDynArray);
      procedure clearBufferfv (buffer: GLenum; drawbuffer: GLint; values: Float32List; srcOffset: GLuint);
      procedure clearBufferiv (buffer: GLenum; drawbuffer: GLint; values: Int32List; srcOffset: GLuint);
      procedure clearBufferuiv (buffer: GLenum; drawbuffer: GLint; values: Uint32List; srcOffset: GLuint);
      procedure clearBufferfi (buffer: GLenum; drawbuffer: GLint; depth: GLfloat; stencil: GLint);
      function createQuery: TJSWebGLQuery;
      procedure deleteQuery (query: TJSWebGLQuery);
      function isQuery (query: TJSWebGLQuery): GLboolean;
      procedure beginQuery (target: GLenum; query: WebGLQuery);
      procedure endQuery (target: GLenum);
      function getQuery (target: GLenum; pname: GLenum): TJSWebGLQuery;
      function getQueryParameter (query: WebGLQuery; pname: GLenum): JSValue;
      function createSampler: TJSWebGLSampler;
      procedure deleteSampler (sampler: TJSWebGLSampler);
      function isSampler (sampler: TJSWebGLSampler): GLboolean;
      procedure bindSampler (unit: GLuint; sampler: TJSWebGLSampler);
      procedure samplerParameteri (sampler: WebGLSampler; pname: GLenum; param: GLint);
      procedure samplerParameterf (sampler: WebGLSampler; pname: GLenum; param: GLfloat);
      function getSamplerParameter (sampler: WebGLSampler; pname: GLenum): JSValue;
      function fenceSync (condition: GLenum; flags: GLbitfield): TJSWebGLSync;
      function isSync (sync: TJSWebGLSync): GLboolean;
      procedure deleteSync (sync: TJSWebGLSync);
      function clientWaitSync (sync: WebGLSync; flags: GLbitfield; timeout: GLuint64): GLenum;
      procedure waitSync (sync: WebGLSync; flags: GLbitfield; timeout: GLint64);
      function getSyncParameter (sync: WebGLSync; pname: GLenum): JSValue;
      function createTransformFeedback: TJSWebGLTransformFeedback;
      procedure deleteTransformFeedback (tf: TJSWebGLTransformFeedback);
      function isTransformFeedback (tf: TJSWebGLTransformFeedback): GLboolean;
      procedure bindTransformFeedback (target: GLenum; tf: TJSWebGLTransformFeedback);
      procedure beginTransformFeedback (primitiveMode: GLenum);
      procedure endTransformFeedback;
      procedure transformFeedbackVaryings (program: WebGLProgram; varyings: DOMStringDynArray; bufferMode: GLenum);
      function getTransformFeedbackVarying (program: WebGLProgram; index: GLuint): TJSWebGLActiveInfo;
      procedure pauseTransformFeedback;
      procedure resumeTransformFeedback;
      procedure bindBufferBase (target: GLenum; index: GLuint; buffer: TJSWebGLBuffer);
      procedure bindBufferRange (target: GLenum; index: GLuint; buffer: TJSWebGLBuffer; offset: GLintptr; size: GLsizeiptr);
      function getIndexedParameter (target: GLenum; index: GLuint): JSValue;
      function getUniformIndices (program: WebGLProgram; uniformNames: DOMStringDynArray): GLuintDynArray;
      function getActiveUniforms (program: WebGLProgram; uniformIndices: GLuintDynArray; pname: GLenum): JSValue;
      function getUniformBlockIndex (program: WebGLProgram; uniformBlockName: DOMString): GLuint;
      function getActiveUniformBlockParameter (program: WebGLProgram; uniformBlockIndex: GLuint; pname: GLenum): JSValue;
      function getActiveUniformBlockName (program: WebGLProgram; uniformBlockIndex: GLuint): TJSDOMString;
      procedure uniformBlockBinding (program: WebGLProgram; uniformBlockIndex: GLuint; uniformBlockBinding: GLuint);
      function createVertexArray: TJSWebGLVertexArrayObject;
      procedure deleteVertexArray (vertexArray: TJSWebGLVertexArrayObject);
      function isVertexArray (vertexArray: TJSWebGLVertexArrayObject): GLboolean;
      procedure bindVertexArray (array: TJSWebGLVertexArrayObject);
  end;

  TJSWebGL2RenderingContext = class external name 'WebGL2RenderingContext' (TJSWebGL2RenderingContextBase);

implementation
end;


Regards,
	Ryan Joseph




More information about the fpc-pascal mailing list