| // Copyright (C) 2015 The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGet.xhtml","OpenGL ES 3.1") |
| cmd void glGetBooleani_v(GLenum target, GLuint index, GLboolean* data) { |
| minRequiredVersion(3, 1) |
| switch (target) { |
| case GL_ACTIVE_TEXTURE, GL_ALIASED_LINE_WIDTH_RANGE, GL_ALIASED_POINT_SIZE_RANGE, |
| GL_ALPHA_BITS, GL_ARRAY_BUFFER_BINDING, GL_BLEND, GL_BLEND_COLOR, GL_BLEND_DST_ALPHA, |
| GL_BLEND_DST_RGB, GL_BLEND_EQUATION_ALPHA, GL_BLEND_EQUATION_RGB, GL_BLEND_SRC_ALPHA, |
| GL_BLEND_SRC_RGB, GL_BLUE_BITS, GL_COLOR_CLEAR_VALUE, GL_COLOR_WRITEMASK, |
| GL_COMPRESSED_TEXTURE_FORMATS, GL_COPY_READ_BUFFER_BINDING, GL_COPY_WRITE_BUFFER_BINDING, |
| GL_CULL_FACE, GL_CULL_FACE_MODE, GL_CURRENT_PROGRAM, GL_DEPTH_BITS, GL_DEPTH_CLEAR_VALUE, |
| GL_DEPTH_FUNC, GL_DEPTH_RANGE, GL_DEPTH_TEST, GL_DEPTH_WRITEMASK, |
| GL_DISPATCH_INDIRECT_BUFFER_BINDING, GL_DITHER, GL_DRAW_BUFFER, |
| GL_DRAW_FRAMEBUFFER_BINDING, GL_ELEMENT_ARRAY_BUFFER_BINDING, |
| GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_FRONT_FACE, GL_GENERATE_MIPMAP_HINT, GL_GREEN_BITS, |
| GL_IMAGE_BINDING_LAYERED, GL_IMPLEMENTATION_COLOR_READ_FORMAT, |
| GL_IMPLEMENTATION_COLOR_READ_TYPE, GL_LINE_WIDTH, GL_MAJOR_VERSION, GL_MAX_3D_TEXTURE_SIZE, |
| GL_MAX_ARRAY_TEXTURE_LAYERS, GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, |
| GL_MAX_COLOR_ATTACHMENTS, GL_MAX_COLOR_TEXTURE_SAMPLES, GL_MAX_COMBINED_ATOMIC_COUNTERS, |
| GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, |
| GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, |
| GL_MAX_COMBINED_UNIFORM_BLOCKS, GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, |
| GL_MAX_COMPUTE_ATOMIC_COUNTERS, GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, |
| GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS, GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, |
| GL_MAX_COMPUTE_UNIFORM_BLOCKS, GL_MAX_COMPUTE_UNIFORM_COMPONENTS, |
| GL_MAX_COMPUTE_WORK_GROUP_COUNT, GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, |
| GL_MAX_COMPUTE_WORK_GROUP_SIZE, GL_MAX_CUBE_MAP_TEXTURE_SIZE, GL_MAX_DRAW_BUFFERS, |
| GL_MAX_ELEMENTS_INDICES, GL_MAX_ELEMENTS_VERTICES, GL_MAX_ELEMENT_INDEX, |
| GL_MAX_FRAGMENT_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_INPUT_COMPONENTS, |
| GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, GL_MAX_FRAGMENT_UNIFORM_BLOCKS, |
| GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_VECTORS, |
| GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_SAMPLES, GL_MAX_FRAMEBUFFER_WIDTH, |
| GL_MAX_INTEGER_SAMPLES, GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAX_RENDERBUFFER_SIZE, |
| GL_MAX_SAMPLES, GL_MAX_SAMPLE_MASK_WORDS, GL_MAX_SERVER_WAIT_TIMEOUT, |
| GL_MAX_SHADER_STORAGE_BLOCK_SIZE, GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, |
| GL_MAX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_LOD_BIAS, GL_MAX_TEXTURE_SIZE, |
| GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, |
| GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, |
| GL_MAX_UNIFORM_BLOCK_SIZE, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_UNIFORM_LOCATIONS, |
| GL_MAX_VARYING_COMPONENTS, GL_MAX_VARYING_VECTORS, GL_MAX_VERTEX_ATOMIC_COUNTERS, |
| GL_MAX_VERTEX_ATTRIBS, GL_MAX_VERTEX_ATTRIB_BINDINGS, GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, |
| GL_MAX_VERTEX_OUTPUT_COMPONENTS, GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, |
| GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_VERTEX_UNIFORM_BLOCKS, |
| GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MAX_VERTEX_UNIFORM_VECTORS, GL_MAX_VIEWPORT_DIMS, |
| GL_MINOR_VERSION, GL_MIN_PROGRAM_TEXEL_OFFSET, GL_NUM_COMPRESSED_TEXTURE_FORMATS, |
| GL_NUM_EXTENSIONS, GL_NUM_PROGRAM_BINARY_FORMATS, GL_NUM_SHADER_BINARY_FORMATS, |
| GL_PACK_ALIGNMENT, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS, GL_PACK_SKIP_ROWS, |
| GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_UNPACK_BUFFER_BINDING, GL_POLYGON_OFFSET_FACTOR, |
| GL_POLYGON_OFFSET_FILL, GL_POLYGON_OFFSET_UNITS, GL_PRIMITIVE_RESTART_FIXED_INDEX, |
| GL_PROGRAM_BINARY_FORMATS, GL_PROGRAM_PIPELINE_BINDING, GL_RASTERIZER_DISCARD, |
| GL_READ_BUFFER, GL_READ_FRAMEBUFFER_BINDING, GL_RED_BITS, GL_RENDERBUFFER_BINDING, |
| GL_SAMPLER_BINDING, GL_SAMPLES, GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_BUFFERS, |
| GL_SAMPLE_COVERAGE, GL_SAMPLE_COVERAGE_INVERT, GL_SAMPLE_COVERAGE_VALUE, GL_SCISSOR_BOX, |
| GL_SCISSOR_TEST, GL_SHADER_BINARY_FORMATS, GL_SHADER_COMPILER, |
| GL_SHADER_STORAGE_BUFFER_BINDING, GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, |
| GL_SHADER_STORAGE_BUFFER_SIZE, GL_SHADER_STORAGE_BUFFER_START, GL_STENCIL_BACK_FAIL, |
| GL_STENCIL_BACK_FUNC, GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_STENCIL_BACK_PASS_DEPTH_PASS, |
| GL_STENCIL_BACK_REF, GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_BACK_WRITEMASK, |
| GL_STENCIL_BITS, GL_STENCIL_CLEAR_VALUE, GL_STENCIL_FAIL, GL_STENCIL_FUNC, |
| GL_STENCIL_PASS_DEPTH_FAIL, GL_STENCIL_PASS_DEPTH_PASS, GL_STENCIL_REF, GL_STENCIL_TEST, |
| GL_STENCIL_VALUE_MASK, GL_STENCIL_WRITEMASK, GL_SUBPIXEL_BITS, GL_TEXTURE_BINDING_2D, |
| GL_TEXTURE_BINDING_2D_ARRAY, GL_TEXTURE_BINDING_2D_MULTISAMPLE, GL_TEXTURE_BINDING_3D, |
| GL_TEXTURE_BINDING_CUBE_MAP, GL_TRANSFORM_FEEDBACK_ACTIVE, GL_TRANSFORM_FEEDBACK_BINDING, |
| GL_TRANSFORM_FEEDBACK_BUFFER_BINDING, GL_TRANSFORM_FEEDBACK_BUFFER_SIZE, |
| GL_TRANSFORM_FEEDBACK_BUFFER_START, GL_TRANSFORM_FEEDBACK_PAUSED, |
| GL_UNIFORM_BUFFER_BINDING, GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_UNIFORM_BUFFER_SIZE, |
| GL_UNIFORM_BUFFER_START, GL_UNPACK_ALIGNMENT, GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH, |
| GL_UNPACK_SKIP_IMAGES, GL_UNPACK_SKIP_PIXELS, GL_UNPACK_SKIP_ROWS, GL_VERTEX_ARRAY_BINDING, |
| GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE, GL_VIEWPORT: |
| { |
| // version 3.1 |
| } |
| default: { |
| glErrorInvalidEnum(target) |
| } |
| } |
| // TODO |
| } |
| |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml","OpenGL ES 2.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml","OpenGL ES 3.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGet.xhtml","OpenGL ES 3.1") |
| cmd void glGetBooleanv(GLenum param, GLboolean* values) { |
| minRequiredVersion(2, 0) |
| switch (param) { |
| // GL_FRAMEBUFFER_BINDING was renamed to GL_DRAW_FRAMEBUFFER_BINDING in 3.0 |
| case GL_ACTIVE_TEXTURE, GL_ALIASED_LINE_WIDTH_RANGE, GL_ALIASED_POINT_SIZE_RANGE, |
| GL_ALPHA_BITS, GL_ARRAY_BUFFER_BINDING, GL_BLEND, GL_BLEND_COLOR, GL_BLEND_DST_ALPHA, |
| GL_BLEND_DST_RGB, GL_BLEND_EQUATION_ALPHA, GL_BLEND_EQUATION_RGB, GL_BLEND_SRC_ALPHA, |
| GL_BLEND_SRC_RGB, GL_BLUE_BITS, GL_COLOR_CLEAR_VALUE, GL_COLOR_WRITEMASK, |
| GL_COMPRESSED_TEXTURE_FORMATS, GL_CULL_FACE, GL_CULL_FACE_MODE, GL_CURRENT_PROGRAM, |
| GL_DEPTH_BITS, GL_DEPTH_CLEAR_VALUE, GL_DEPTH_FUNC, GL_DEPTH_RANGE, GL_DEPTH_TEST, |
| GL_DEPTH_WRITEMASK, GL_DITHER, GL_ELEMENT_ARRAY_BUFFER_BINDING, GL_DRAW_FRAMEBUFFER_BINDING, |
| GL_FRONT_FACE, GL_GENERATE_MIPMAP_HINT, GL_GREEN_BITS, GL_IMPLEMENTATION_COLOR_READ_FORMAT, |
| GL_IMPLEMENTATION_COLOR_READ_TYPE, GL_LINE_WIDTH, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, |
| GL_MAX_CUBE_MAP_TEXTURE_SIZE, GL_MAX_FRAGMENT_UNIFORM_VECTORS, GL_MAX_RENDERBUFFER_SIZE, |
| GL_MAX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_SIZE, GL_MAX_VARYING_VECTORS, |
| GL_MAX_VERTEX_ATTRIBS, GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_VERTEX_UNIFORM_VECTORS, |
| GL_MAX_VIEWPORT_DIMS, GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_NUM_SHADER_BINARY_FORMATS, |
| GL_PACK_ALIGNMENT, GL_POLYGON_OFFSET_FACTOR, GL_POLYGON_OFFSET_FILL, |
| GL_POLYGON_OFFSET_UNITS, GL_RED_BITS, GL_RENDERBUFFER_BINDING, GL_SAMPLES, |
| GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_BUFFERS, GL_SAMPLE_COVERAGE, |
| GL_SAMPLE_COVERAGE_INVERT, GL_SAMPLE_COVERAGE_VALUE, GL_SCISSOR_BOX, GL_SCISSOR_TEST, |
| GL_SHADER_BINARY_FORMATS, GL_SHADER_COMPILER, GL_STENCIL_BACK_FAIL, GL_STENCIL_BACK_FUNC, |
| GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_STENCIL_BACK_PASS_DEPTH_PASS, GL_STENCIL_BACK_REF, |
| GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_BACK_WRITEMASK, GL_STENCIL_BITS, |
| GL_STENCIL_CLEAR_VALUE, GL_STENCIL_FAIL, GL_STENCIL_FUNC, GL_STENCIL_PASS_DEPTH_FAIL, |
| GL_STENCIL_PASS_DEPTH_PASS, GL_STENCIL_REF, GL_STENCIL_TEST, GL_STENCIL_VALUE_MASK, |
| GL_STENCIL_WRITEMASK, GL_SUBPIXEL_BITS, GL_TEXTURE_BINDING_2D, GL_TEXTURE_BINDING_CUBE_MAP, |
| GL_UNPACK_ALIGNMENT, GL_VIEWPORT: { |
| // version 2.0 |
| } |
| case GL_COPY_READ_BUFFER_BINDING, GL_COPY_WRITE_BUFFER_BINDING, GL_DRAW_BUFFER, |
| GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_MAJOR_VERSION, |
| GL_MAX_3D_TEXTURE_SIZE, GL_MAX_ARRAY_TEXTURE_LAYERS, GL_MAX_COLOR_ATTACHMENTS, |
| GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_COMBINED_UNIFORM_BLOCKS, |
| GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, GL_MAX_DRAW_BUFFERS, GL_MAX_ELEMENTS_INDICES, |
| GL_MAX_ELEMENTS_VERTICES, GL_MAX_ELEMENT_INDEX, GL_MAX_FRAGMENT_INPUT_COMPONENTS, |
| GL_MAX_FRAGMENT_UNIFORM_BLOCKS, GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, |
| GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAX_SAMPLES, GL_MAX_SERVER_WAIT_TIMEOUT, |
| GL_MAX_TEXTURE_LOD_BIAS, GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, |
| GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, |
| GL_MAX_UNIFORM_BLOCK_SIZE, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_VARYING_COMPONENTS, |
| GL_MAX_VERTEX_OUTPUT_COMPONENTS, GL_MAX_VERTEX_UNIFORM_BLOCKS, |
| GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MINOR_VERSION, GL_MIN_PROGRAM_TEXEL_OFFSET, |
| GL_NUM_EXTENSIONS, GL_NUM_PROGRAM_BINARY_FORMATS, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS, |
| GL_PACK_SKIP_ROWS, GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_UNPACK_BUFFER_BINDING, |
| GL_PRIMITIVE_RESTART_FIXED_INDEX, GL_PROGRAM_BINARY_FORMATS, GL_RASTERIZER_DISCARD, |
| GL_READ_BUFFER, GL_READ_FRAMEBUFFER_BINDING, GL_SAMPLER_BINDING, |
| GL_TEXTURE_BINDING_2D_ARRAY, GL_TEXTURE_BINDING_3D, GL_TRANSFORM_FEEDBACK_ACTIVE, |
| GL_TRANSFORM_FEEDBACK_BINDING, GL_TRANSFORM_FEEDBACK_BUFFER_BINDING, |
| GL_TRANSFORM_FEEDBACK_BUFFER_SIZE, GL_TRANSFORM_FEEDBACK_BUFFER_START, |
| GL_TRANSFORM_FEEDBACK_PAUSED, GL_UNIFORM_BUFFER_BINDING, |
| GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_UNIFORM_BUFFER_SIZE, GL_UNIFORM_BUFFER_START, |
| GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_IMAGES, GL_UNPACK_SKIP_PIXELS, |
| GL_UNPACK_SKIP_ROWS, GL_VERTEX_ARRAY_BINDING: { |
| minRequiredVersion(3, 0) |
| } |
| case GL_DISPATCH_INDIRECT_BUFFER_BINDING, GL_IMAGE_BINDING_LAYERED, |
| GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, GL_MAX_COLOR_TEXTURE_SAMPLES, |
| GL_MAX_COMBINED_ATOMIC_COUNTERS, GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS, |
| GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, GL_MAX_COMPUTE_ATOMIC_COUNTERS, |
| GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS, |
| GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, GL_MAX_COMPUTE_UNIFORM_BLOCKS, |
| GL_MAX_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMPUTE_WORK_GROUP_COUNT, |
| GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, GL_MAX_COMPUTE_WORK_GROUP_SIZE, |
| GL_MAX_FRAGMENT_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, |
| GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_SAMPLES, GL_MAX_FRAMEBUFFER_WIDTH, |
| GL_MAX_INTEGER_SAMPLES, GL_MAX_SAMPLE_MASK_WORDS, GL_MAX_SHADER_STORAGE_BLOCK_SIZE, |
| GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, GL_MAX_UNIFORM_LOCATIONS, |
| GL_MAX_VERTEX_ATOMIC_COUNTERS, GL_MAX_VERTEX_ATTRIB_BINDINGS, |
| GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, |
| GL_PROGRAM_PIPELINE_BINDING, GL_SHADER_STORAGE_BUFFER_BINDING, |
| GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, GL_SHADER_STORAGE_BUFFER_SIZE, |
| GL_SHADER_STORAGE_BUFFER_START, GL_TEXTURE_BINDING_2D_MULTISAMPLE, |
| GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE: { |
| minRequiredVersion(3, 1) |
| } |
| default: { |
| glErrorInvalidEnum(param) |
| } |
| } |
| |
| v := values[0:stateVariableSize(param)] |
| ctx := GetContext() |
| switch (param) { |
| case GL_BLEND: |
| v[0] = as!GLboolean(ctx.Capabilities[GL_BLEND]) |
| case GL_CULL_FACE: |
| v[0] = as!GLboolean(ctx.Capabilities[GL_CULL_FACE]) |
| case GL_DEPTH_TEST: |
| v[0] = as!GLboolean(ctx.Capabilities[GL_DEPTH_TEST]) |
| case GL_DITHER: |
| v[0] = as!GLboolean(ctx.Capabilities[GL_DITHER]) |
| case GL_POLYGON_OFFSET_FILL: |
| v[0] = as!GLboolean(ctx.Capabilities[GL_POLYGON_OFFSET_FILL]) |
| case GL_SAMPLE_ALPHA_TO_COVERAGE: |
| v[0] = as!GLboolean(ctx.Capabilities[GL_SAMPLE_ALPHA_TO_COVERAGE]) |
| case GL_SAMPLE_COVERAGE: |
| v[0] = as!GLboolean(ctx.Capabilities[GL_SAMPLE_COVERAGE]) |
| case GL_SCISSOR_TEST: |
| v[0] = as!GLboolean(ctx.Capabilities[GL_SCISSOR_TEST]) |
| case GL_STENCIL_TEST: |
| v[0] = as!GLboolean(ctx.Capabilities[GL_STENCIL_TEST]) |
| |
| case GL_DEPTH_WRITEMASK: |
| v[0] = as!GLboolean(ctx.Rasterizing.DepthMask) |
| case GL_COLOR_WRITEMASK: { |
| v[0] = as!GLboolean(ctx.Rasterizing.ColorMaskRed) |
| v[1] = as!GLboolean(ctx.Rasterizing.ColorMaskGreen) |
| v[2] = as!GLboolean(ctx.Rasterizing.ColorMaskBlue) |
| v[3] = as!GLboolean(ctx.Rasterizing.ColorMaskAlpha) |
| } |
| case GL_SAMPLE_COVERAGE_INVERT: |
| v[0] = as!GLboolean(ctx.Rasterizing.SampleCoverageInvert) |
| case GL_SHADER_COMPILER: |
| v[0] = ? |
| case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: |
| v[0] = ? |
| |
| // TODO: all the values returned by glGetFloatv and glGetIntegerv can |
| // be returned here with a type conversion where GL_FALSE is only returned |
| // if the value is 0.0 (or 0). |
| } |
| } |
| |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml","OpenGL ES 2.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml","OpenGL ES 3.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGet.xhtml","OpenGL ES 3.1") |
| cmd void glGetFloatv(GLenum param, GLfloat* values) { |
| minRequiredVersion(2, 0) |
| switch (param) { |
| // GL_FRAMEBUFFER_BINDING was renamed to GL_DRAW_FRAMEBUFFER_BINDING in 3.0 |
| case GL_ACTIVE_TEXTURE, GL_ALIASED_LINE_WIDTH_RANGE, GL_ALIASED_POINT_SIZE_RANGE, |
| GL_ALPHA_BITS, GL_ARRAY_BUFFER_BINDING, GL_BLEND, GL_BLEND_COLOR, GL_BLEND_DST_ALPHA, |
| GL_BLEND_DST_RGB, GL_BLEND_EQUATION_ALPHA, GL_BLEND_EQUATION_RGB, GL_BLEND_SRC_ALPHA, |
| GL_BLEND_SRC_RGB, GL_BLUE_BITS, GL_COLOR_CLEAR_VALUE, GL_COLOR_WRITEMASK, |
| GL_COMPRESSED_TEXTURE_FORMATS, GL_CULL_FACE, GL_CULL_FACE_MODE, GL_CURRENT_PROGRAM, |
| GL_DEPTH_BITS, GL_DEPTH_CLEAR_VALUE, GL_DEPTH_FUNC, GL_DEPTH_RANGE, GL_DEPTH_TEST, |
| GL_DEPTH_WRITEMASK, GL_DITHER, GL_ELEMENT_ARRAY_BUFFER_BINDING, GL_DRAW_FRAMEBUFFER_BINDING, |
| GL_FRONT_FACE, GL_GENERATE_MIPMAP_HINT, GL_GREEN_BITS, GL_IMPLEMENTATION_COLOR_READ_FORMAT, |
| GL_IMPLEMENTATION_COLOR_READ_TYPE, GL_LINE_WIDTH, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, |
| GL_MAX_CUBE_MAP_TEXTURE_SIZE, GL_MAX_FRAGMENT_UNIFORM_VECTORS, GL_MAX_RENDERBUFFER_SIZE, |
| GL_MAX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_SIZE, GL_MAX_VARYING_VECTORS, |
| GL_MAX_VERTEX_ATTRIBS, GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_VERTEX_UNIFORM_VECTORS, |
| GL_MAX_VIEWPORT_DIMS, GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_NUM_SHADER_BINARY_FORMATS, |
| GL_PACK_ALIGNMENT, GL_POLYGON_OFFSET_FACTOR, GL_POLYGON_OFFSET_FILL, |
| GL_POLYGON_OFFSET_UNITS, GL_RED_BITS, GL_RENDERBUFFER_BINDING, GL_SAMPLES, |
| GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_BUFFERS, GL_SAMPLE_COVERAGE, |
| GL_SAMPLE_COVERAGE_INVERT, GL_SAMPLE_COVERAGE_VALUE, GL_SCISSOR_BOX, GL_SCISSOR_TEST, |
| GL_SHADER_BINARY_FORMATS, GL_SHADER_COMPILER, GL_STENCIL_BACK_FAIL, GL_STENCIL_BACK_FUNC, |
| GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_STENCIL_BACK_PASS_DEPTH_PASS, GL_STENCIL_BACK_REF, |
| GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_BACK_WRITEMASK, GL_STENCIL_BITS, |
| GL_STENCIL_CLEAR_VALUE, GL_STENCIL_FAIL, GL_STENCIL_FUNC, GL_STENCIL_PASS_DEPTH_FAIL, |
| GL_STENCIL_PASS_DEPTH_PASS, GL_STENCIL_REF, GL_STENCIL_TEST, GL_STENCIL_VALUE_MASK, |
| GL_STENCIL_WRITEMASK, GL_SUBPIXEL_BITS, GL_TEXTURE_BINDING_2D, GL_TEXTURE_BINDING_CUBE_MAP, |
| GL_UNPACK_ALIGNMENT, GL_VIEWPORT: { |
| // version 2.0 |
| } |
| case GL_COPY_READ_BUFFER_BINDING, GL_COPY_WRITE_BUFFER_BINDING, GL_DRAW_BUFFER, |
| GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_MAJOR_VERSION, |
| GL_MAX_3D_TEXTURE_SIZE, GL_MAX_ARRAY_TEXTURE_LAYERS, GL_MAX_COLOR_ATTACHMENTS, |
| GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_COMBINED_UNIFORM_BLOCKS, |
| GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, GL_MAX_DRAW_BUFFERS, GL_MAX_ELEMENTS_INDICES, |
| GL_MAX_ELEMENTS_VERTICES, GL_MAX_ELEMENT_INDEX, GL_MAX_FRAGMENT_INPUT_COMPONENTS, |
| GL_MAX_FRAGMENT_UNIFORM_BLOCKS, GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, |
| GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAX_SAMPLES, GL_MAX_SERVER_WAIT_TIMEOUT, |
| GL_MAX_TEXTURE_LOD_BIAS, GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, |
| GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, |
| GL_MAX_UNIFORM_BLOCK_SIZE, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_VARYING_COMPONENTS, |
| GL_MAX_VERTEX_OUTPUT_COMPONENTS, GL_MAX_VERTEX_UNIFORM_BLOCKS, |
| GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MINOR_VERSION, GL_MIN_PROGRAM_TEXEL_OFFSET, |
| GL_NUM_EXTENSIONS, GL_NUM_PROGRAM_BINARY_FORMATS, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS, |
| GL_PACK_SKIP_ROWS, GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_UNPACK_BUFFER_BINDING, |
| GL_PRIMITIVE_RESTART_FIXED_INDEX, GL_PROGRAM_BINARY_FORMATS, GL_RASTERIZER_DISCARD, |
| GL_READ_BUFFER, GL_READ_FRAMEBUFFER_BINDING, GL_SAMPLER_BINDING, |
| GL_TEXTURE_BINDING_2D_ARRAY, GL_TEXTURE_BINDING_3D, GL_TRANSFORM_FEEDBACK_ACTIVE, |
| GL_TRANSFORM_FEEDBACK_BINDING, GL_TRANSFORM_FEEDBACK_BUFFER_BINDING, |
| GL_TRANSFORM_FEEDBACK_BUFFER_SIZE, GL_TRANSFORM_FEEDBACK_BUFFER_START, |
| GL_TRANSFORM_FEEDBACK_PAUSED, GL_UNIFORM_BUFFER_BINDING, |
| GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_UNIFORM_BUFFER_SIZE, GL_UNIFORM_BUFFER_START, |
| GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_IMAGES, GL_UNPACK_SKIP_PIXELS, |
| GL_UNPACK_SKIP_ROWS, GL_VERTEX_ARRAY_BINDING: { |
| minRequiredVersion(3, 0) |
| } |
| case GL_DISPATCH_INDIRECT_BUFFER_BINDING, GL_IMAGE_BINDING_LAYERED, |
| GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, GL_MAX_COLOR_TEXTURE_SAMPLES, |
| GL_MAX_COMBINED_ATOMIC_COUNTERS, GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS, |
| GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, GL_MAX_COMPUTE_ATOMIC_COUNTERS, |
| GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS, |
| GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, GL_MAX_COMPUTE_UNIFORM_BLOCKS, |
| GL_MAX_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMPUTE_WORK_GROUP_COUNT, |
| GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, GL_MAX_COMPUTE_WORK_GROUP_SIZE, |
| GL_MAX_FRAGMENT_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, |
| GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_SAMPLES, GL_MAX_FRAMEBUFFER_WIDTH, |
| GL_MAX_INTEGER_SAMPLES, GL_MAX_SAMPLE_MASK_WORDS, GL_MAX_SHADER_STORAGE_BLOCK_SIZE, |
| GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, GL_MAX_UNIFORM_LOCATIONS, |
| GL_MAX_VERTEX_ATOMIC_COUNTERS, GL_MAX_VERTEX_ATTRIB_BINDINGS, |
| GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, |
| GL_PROGRAM_PIPELINE_BINDING, GL_SHADER_STORAGE_BUFFER_BINDING, |
| GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, GL_SHADER_STORAGE_BUFFER_SIZE, |
| GL_SHADER_STORAGE_BUFFER_START, GL_TEXTURE_BINDING_2D_MULTISAMPLE, |
| GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE: { |
| minRequiredVersion(3, 1) |
| } |
| default: { |
| glErrorInvalidEnum(param) |
| } |
| } |
| |
| v := values[0:stateVariableSize(param)] |
| ctx := GetContext() |
| switch (param) { |
| case GL_DEPTH_RANGE: { |
| v[0] = ctx.Rasterizing.DepthNear |
| v[1] = ctx.Rasterizing.DepthFar |
| } |
| case GL_LINE_WIDTH: |
| v[0] = ctx.Rasterizing.LineWidth |
| case GL_POLYGON_OFFSET_FACTOR: |
| v[0] = ctx.Rasterizing.PolygonOffsetFactor |
| case GL_POLYGON_OFFSET_UNITS: |
| v[0] = ctx.Rasterizing.PolygonOffsetUnits |
| case GL_SAMPLE_COVERAGE_VALUE: |
| v[0] = ctx.Rasterizing.SampleCoverageValue |
| case GL_COLOR_CLEAR_VALUE: { |
| v[0] = ctx.Clearing.ClearColor.Red |
| v[1] = ctx.Clearing.ClearColor.Green |
| v[2] = ctx.Clearing.ClearColor.Blue |
| v[3] = ctx.Clearing.ClearColor.Alpha |
| } |
| case GL_DEPTH_CLEAR_VALUE: |
| v[0] = ctx.Clearing.ClearDepth |
| case GL_ALIASED_LINE_WIDTH_RANGE: { |
| v[0] = ? /* smallest */ |
| v[1] = ? /* largest */ |
| } |
| case GL_ALIASED_POINT_SIZE_RANGE: { |
| v[0] = ? /* smallest */ |
| v[1] = ? /* largest */ |
| } |
| case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: |
| v[0] = ? |
| |
| // TODO: all the values returned by glGetBooleanv and glGetIntegerv can |
| // be returned here with a type conversion. |
| } |
| } |
| |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml","OpenGL ES 3.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGet.xhtml","OpenGL ES 3.1") |
| cmd void glGetInteger64i_v(GLenum target, GLuint index, GLint64* data) { |
| minRequiredVersion(3, 0) |
| switch (target) { |
| case GL_ACTIVE_TEXTURE, GL_ALIASED_LINE_WIDTH_RANGE, GL_ALIASED_POINT_SIZE_RANGE, |
| GL_ALPHA_BITS, GL_ARRAY_BUFFER_BINDING, GL_BLEND, GL_BLEND_COLOR, GL_BLEND_DST_ALPHA, |
| GL_BLEND_DST_RGB, GL_BLEND_EQUATION_ALPHA, GL_BLEND_EQUATION_RGB, GL_BLEND_SRC_ALPHA, |
| GL_BLEND_SRC_RGB, GL_BLUE_BITS, GL_COLOR_CLEAR_VALUE, GL_COLOR_WRITEMASK, |
| GL_COMPRESSED_TEXTURE_FORMATS, GL_COPY_READ_BUFFER_BINDING, GL_COPY_WRITE_BUFFER_BINDING, |
| GL_CULL_FACE, GL_CULL_FACE_MODE, GL_CURRENT_PROGRAM, GL_DEPTH_BITS, GL_DEPTH_CLEAR_VALUE, |
| GL_DEPTH_FUNC, GL_DEPTH_RANGE, GL_DEPTH_TEST, GL_DEPTH_WRITEMASK, GL_DITHER, |
| GL_DRAW_BUFFER, GL_DRAW_FRAMEBUFFER_BINDING, GL_ELEMENT_ARRAY_BUFFER_BINDING, |
| GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_FRONT_FACE, GL_GENERATE_MIPMAP_HINT, GL_GREEN_BITS, |
| GL_IMPLEMENTATION_COLOR_READ_FORMAT, GL_IMPLEMENTATION_COLOR_READ_TYPE, GL_LINE_WIDTH, |
| GL_MAJOR_VERSION, GL_MAX_3D_TEXTURE_SIZE, GL_MAX_ARRAY_TEXTURE_LAYERS, |
| GL_MAX_COLOR_ATTACHMENTS, GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, |
| GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, GL_MAX_COMBINED_UNIFORM_BLOCKS, |
| GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, GL_MAX_CUBE_MAP_TEXTURE_SIZE, |
| GL_MAX_DRAW_BUFFERS, GL_MAX_ELEMENTS_INDICES, GL_MAX_ELEMENTS_VERTICES, |
| GL_MAX_ELEMENT_INDEX, GL_MAX_FRAGMENT_INPUT_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_BLOCKS, |
| GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_VECTORS, |
| GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAX_RENDERBUFFER_SIZE, GL_MAX_SAMPLES, |
| GL_MAX_SERVER_WAIT_TIMEOUT, GL_MAX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_LOD_BIAS, |
| GL_MAX_TEXTURE_SIZE, GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, |
| GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, |
| GL_MAX_UNIFORM_BLOCK_SIZE, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_VARYING_COMPONENTS, |
| GL_MAX_VARYING_VECTORS, GL_MAX_VERTEX_ATTRIBS, GL_MAX_VERTEX_OUTPUT_COMPONENTS, |
| GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_VERTEX_UNIFORM_BLOCKS, |
| GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MAX_VERTEX_UNIFORM_VECTORS, GL_MAX_VIEWPORT_DIMS, |
| GL_MINOR_VERSION, GL_MIN_PROGRAM_TEXEL_OFFSET, GL_NUM_COMPRESSED_TEXTURE_FORMATS, |
| GL_NUM_EXTENSIONS, GL_NUM_PROGRAM_BINARY_FORMATS, GL_NUM_SHADER_BINARY_FORMATS, |
| GL_PACK_ALIGNMENT, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS, GL_PACK_SKIP_ROWS, |
| GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_UNPACK_BUFFER_BINDING, GL_POLYGON_OFFSET_FACTOR, |
| GL_POLYGON_OFFSET_FILL, GL_POLYGON_OFFSET_UNITS, GL_PRIMITIVE_RESTART_FIXED_INDEX, |
| GL_PROGRAM_BINARY_FORMATS, GL_RASTERIZER_DISCARD, GL_READ_BUFFER, |
| GL_READ_FRAMEBUFFER_BINDING, GL_RED_BITS, GL_RENDERBUFFER_BINDING, GL_SAMPLER_BINDING, |
| GL_SAMPLES, GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_BUFFERS, GL_SAMPLE_COVERAGE, |
| GL_SAMPLE_COVERAGE_INVERT, GL_SAMPLE_COVERAGE_VALUE, GL_SCISSOR_BOX, GL_SCISSOR_TEST, |
| GL_SHADER_BINARY_FORMATS, GL_SHADER_COMPILER, GL_STENCIL_BACK_FAIL, GL_STENCIL_BACK_FUNC, |
| GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_STENCIL_BACK_PASS_DEPTH_PASS, GL_STENCIL_BACK_REF, |
| GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_BACK_WRITEMASK, GL_STENCIL_BITS, |
| GL_STENCIL_CLEAR_VALUE, GL_STENCIL_FAIL, GL_STENCIL_FUNC, GL_STENCIL_PASS_DEPTH_FAIL, |
| GL_STENCIL_PASS_DEPTH_PASS, GL_STENCIL_REF, GL_STENCIL_TEST, GL_STENCIL_VALUE_MASK, |
| GL_STENCIL_WRITEMASK, GL_SUBPIXEL_BITS, GL_TEXTURE_BINDING_2D, GL_TEXTURE_BINDING_2D_ARRAY, |
| GL_TEXTURE_BINDING_3D, GL_TEXTURE_BINDING_CUBE_MAP, GL_TRANSFORM_FEEDBACK_ACTIVE, |
| GL_TRANSFORM_FEEDBACK_BINDING, GL_TRANSFORM_FEEDBACK_BUFFER_BINDING, |
| GL_TRANSFORM_FEEDBACK_BUFFER_SIZE, GL_TRANSFORM_FEEDBACK_BUFFER_START, |
| GL_TRANSFORM_FEEDBACK_PAUSED, GL_UNIFORM_BUFFER_BINDING, |
| GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_UNIFORM_BUFFER_SIZE, GL_UNIFORM_BUFFER_START, |
| GL_UNPACK_ALIGNMENT, GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_IMAGES, |
| GL_UNPACK_SKIP_PIXELS, GL_UNPACK_SKIP_ROWS, GL_VERTEX_ARRAY_BINDING, GL_VIEWPORT: { |
| // version 3.0 |
| } |
| case GL_DISPATCH_INDIRECT_BUFFER_BINDING, GL_IMAGE_BINDING_LAYERED, |
| GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, GL_MAX_COLOR_TEXTURE_SAMPLES, |
| GL_MAX_COMBINED_ATOMIC_COUNTERS, GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS, |
| GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, GL_MAX_COMPUTE_ATOMIC_COUNTERS, |
| GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS, |
| GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, GL_MAX_COMPUTE_UNIFORM_BLOCKS, |
| GL_MAX_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMPUTE_WORK_GROUP_COUNT, |
| GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, GL_MAX_COMPUTE_WORK_GROUP_SIZE, |
| GL_MAX_FRAGMENT_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, |
| GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_SAMPLES, GL_MAX_FRAMEBUFFER_WIDTH, |
| GL_MAX_INTEGER_SAMPLES, GL_MAX_SAMPLE_MASK_WORDS, GL_MAX_SHADER_STORAGE_BLOCK_SIZE, |
| GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, GL_MAX_UNIFORM_LOCATIONS, |
| GL_MAX_VERTEX_ATOMIC_COUNTERS, GL_MAX_VERTEX_ATTRIB_BINDINGS, |
| GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, |
| GL_PROGRAM_PIPELINE_BINDING, GL_SHADER_STORAGE_BUFFER_BINDING, |
| GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, GL_SHADER_STORAGE_BUFFER_SIZE, |
| GL_SHADER_STORAGE_BUFFER_START, GL_TEXTURE_BINDING_2D_MULTISAMPLE, |
| GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE: { |
| minRequiredVersion(3, 1) |
| } |
| default: { |
| glErrorInvalidEnum(target) |
| } |
| } |
| // TODO |
| } |
| |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml","OpenGL ES 3.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGet.xhtml","OpenGL ES 3.1") |
| cmd void glGetInteger64v(GLenum pname, GLint64* data) { |
| minRequiredVersion(3, 0) |
| switch (pname) { |
| case GL_ACTIVE_TEXTURE, GL_ALIASED_LINE_WIDTH_RANGE, GL_ALIASED_POINT_SIZE_RANGE, |
| GL_ALPHA_BITS, GL_ARRAY_BUFFER_BINDING, GL_BLEND, GL_BLEND_COLOR, GL_BLEND_DST_ALPHA, |
| GL_BLEND_DST_RGB, GL_BLEND_EQUATION_ALPHA, GL_BLEND_EQUATION_RGB, GL_BLEND_SRC_ALPHA, |
| GL_BLEND_SRC_RGB, GL_BLUE_BITS, GL_COLOR_CLEAR_VALUE, GL_COLOR_WRITEMASK, |
| GL_COMPRESSED_TEXTURE_FORMATS, GL_COPY_READ_BUFFER_BINDING, GL_COPY_WRITE_BUFFER_BINDING, |
| GL_CULL_FACE, GL_CULL_FACE_MODE, GL_CURRENT_PROGRAM, GL_DEPTH_BITS, GL_DEPTH_CLEAR_VALUE, |
| GL_DEPTH_FUNC, GL_DEPTH_RANGE, GL_DEPTH_TEST, GL_DEPTH_WRITEMASK, GL_DITHER, |
| GL_DRAW_BUFFER, GL_DRAW_FRAMEBUFFER_BINDING, GL_ELEMENT_ARRAY_BUFFER_BINDING, |
| GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_FRONT_FACE, GL_GENERATE_MIPMAP_HINT, GL_GREEN_BITS, |
| GL_IMPLEMENTATION_COLOR_READ_FORMAT, GL_IMPLEMENTATION_COLOR_READ_TYPE, GL_LINE_WIDTH, |
| GL_MAJOR_VERSION, GL_MAX_3D_TEXTURE_SIZE, GL_MAX_ARRAY_TEXTURE_LAYERS, |
| GL_MAX_COLOR_ATTACHMENTS, GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, |
| GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, GL_MAX_COMBINED_UNIFORM_BLOCKS, |
| GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, GL_MAX_CUBE_MAP_TEXTURE_SIZE, |
| GL_MAX_DRAW_BUFFERS, GL_MAX_ELEMENTS_INDICES, GL_MAX_ELEMENTS_VERTICES, |
| GL_MAX_ELEMENT_INDEX, GL_MAX_FRAGMENT_INPUT_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_BLOCKS, |
| GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_VECTORS, |
| GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAX_RENDERBUFFER_SIZE, GL_MAX_SAMPLES, |
| GL_MAX_SERVER_WAIT_TIMEOUT, GL_MAX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_LOD_BIAS, |
| GL_MAX_TEXTURE_SIZE, GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, |
| GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, |
| GL_MAX_UNIFORM_BLOCK_SIZE, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_VARYING_COMPONENTS, |
| GL_MAX_VARYING_VECTORS, GL_MAX_VERTEX_ATTRIBS, GL_MAX_VERTEX_OUTPUT_COMPONENTS, |
| GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_VERTEX_UNIFORM_BLOCKS, |
| GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MAX_VERTEX_UNIFORM_VECTORS, GL_MAX_VIEWPORT_DIMS, |
| GL_MINOR_VERSION, GL_MIN_PROGRAM_TEXEL_OFFSET, GL_NUM_COMPRESSED_TEXTURE_FORMATS, |
| GL_NUM_EXTENSIONS, GL_NUM_PROGRAM_BINARY_FORMATS, GL_NUM_SHADER_BINARY_FORMATS, |
| GL_PACK_ALIGNMENT, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS, GL_PACK_SKIP_ROWS, |
| GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_UNPACK_BUFFER_BINDING, GL_POLYGON_OFFSET_FACTOR, |
| GL_POLYGON_OFFSET_FILL, GL_POLYGON_OFFSET_UNITS, GL_PRIMITIVE_RESTART_FIXED_INDEX, |
| GL_PROGRAM_BINARY_FORMATS, GL_RASTERIZER_DISCARD, GL_READ_BUFFER, |
| GL_READ_FRAMEBUFFER_BINDING, GL_RED_BITS, GL_RENDERBUFFER_BINDING, GL_SAMPLER_BINDING, |
| GL_SAMPLES, GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_BUFFERS, GL_SAMPLE_COVERAGE, |
| GL_SAMPLE_COVERAGE_INVERT, GL_SAMPLE_COVERAGE_VALUE, GL_SCISSOR_BOX, GL_SCISSOR_TEST, |
| GL_SHADER_BINARY_FORMATS, GL_SHADER_COMPILER, GL_STENCIL_BACK_FAIL, GL_STENCIL_BACK_FUNC, |
| GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_STENCIL_BACK_PASS_DEPTH_PASS, GL_STENCIL_BACK_REF, |
| GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_BACK_WRITEMASK, GL_STENCIL_BITS, |
| GL_STENCIL_CLEAR_VALUE, GL_STENCIL_FAIL, GL_STENCIL_FUNC, GL_STENCIL_PASS_DEPTH_FAIL, |
| GL_STENCIL_PASS_DEPTH_PASS, GL_STENCIL_REF, GL_STENCIL_TEST, GL_STENCIL_VALUE_MASK, |
| GL_STENCIL_WRITEMASK, GL_SUBPIXEL_BITS, GL_TEXTURE_BINDING_2D, GL_TEXTURE_BINDING_2D_ARRAY, |
| GL_TEXTURE_BINDING_3D, GL_TEXTURE_BINDING_CUBE_MAP, GL_TRANSFORM_FEEDBACK_ACTIVE, |
| GL_TRANSFORM_FEEDBACK_BINDING, GL_TRANSFORM_FEEDBACK_BUFFER_BINDING, |
| GL_TRANSFORM_FEEDBACK_BUFFER_SIZE, GL_TRANSFORM_FEEDBACK_BUFFER_START, |
| GL_TRANSFORM_FEEDBACK_PAUSED, GL_UNIFORM_BUFFER_BINDING, |
| GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_UNIFORM_BUFFER_SIZE, GL_UNIFORM_BUFFER_START, |
| GL_UNPACK_ALIGNMENT, GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_IMAGES, |
| GL_UNPACK_SKIP_PIXELS, GL_UNPACK_SKIP_ROWS, GL_VERTEX_ARRAY_BINDING, GL_VIEWPORT: { |
| // version 3.0 |
| } |
| case GL_DISPATCH_INDIRECT_BUFFER_BINDING, GL_IMAGE_BINDING_LAYERED, |
| GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, GL_MAX_COLOR_TEXTURE_SAMPLES, |
| GL_MAX_COMBINED_ATOMIC_COUNTERS, GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS, |
| GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, GL_MAX_COMPUTE_ATOMIC_COUNTERS, |
| GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS, |
| GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, GL_MAX_COMPUTE_UNIFORM_BLOCKS, |
| GL_MAX_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMPUTE_WORK_GROUP_COUNT, |
| GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, GL_MAX_COMPUTE_WORK_GROUP_SIZE, |
| GL_MAX_FRAGMENT_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, |
| GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_SAMPLES, GL_MAX_FRAMEBUFFER_WIDTH, |
| GL_MAX_INTEGER_SAMPLES, GL_MAX_SAMPLE_MASK_WORDS, GL_MAX_SHADER_STORAGE_BLOCK_SIZE, |
| GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, GL_MAX_UNIFORM_LOCATIONS, |
| GL_MAX_VERTEX_ATOMIC_COUNTERS, GL_MAX_VERTEX_ATTRIB_BINDINGS, |
| GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, |
| GL_PROGRAM_PIPELINE_BINDING, GL_SHADER_STORAGE_BUFFER_BINDING, |
| GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, GL_SHADER_STORAGE_BUFFER_SIZE, |
| GL_SHADER_STORAGE_BUFFER_START, GL_TEXTURE_BINDING_2D_MULTISAMPLE, |
| GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE: { |
| minRequiredVersion(3, 1) |
| } |
| default: { |
| glErrorInvalidEnum(pname) |
| } |
| } |
| // TODO |
| } |
| |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml","OpenGL ES 3.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGet.xhtml","OpenGL ES 3.1") |
| cmd void glGetIntegeri_v(GLenum target, GLuint index, GLint* data) { |
| minRequiredVersion(3, 0) |
| switch (target) { |
| case GL_ACTIVE_TEXTURE, GL_ALIASED_LINE_WIDTH_RANGE, GL_ALIASED_POINT_SIZE_RANGE, |
| GL_ALPHA_BITS, GL_ARRAY_BUFFER_BINDING, GL_BLEND, GL_BLEND_COLOR, GL_BLEND_DST_ALPHA, |
| GL_BLEND_DST_RGB, GL_BLEND_EQUATION_ALPHA, GL_BLEND_EQUATION_RGB, GL_BLEND_SRC_ALPHA, |
| GL_BLEND_SRC_RGB, GL_BLUE_BITS, GL_COLOR_CLEAR_VALUE, GL_COLOR_WRITEMASK, |
| GL_COMPRESSED_TEXTURE_FORMATS, GL_COPY_READ_BUFFER_BINDING, GL_COPY_WRITE_BUFFER_BINDING, |
| GL_CULL_FACE, GL_CULL_FACE_MODE, GL_CURRENT_PROGRAM, GL_DEPTH_BITS, GL_DEPTH_CLEAR_VALUE, |
| GL_DEPTH_FUNC, GL_DEPTH_RANGE, GL_DEPTH_TEST, GL_DEPTH_WRITEMASK, GL_DITHER, |
| GL_DRAW_BUFFER, GL_DRAW_FRAMEBUFFER_BINDING, GL_ELEMENT_ARRAY_BUFFER_BINDING, |
| GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_FRONT_FACE, GL_GENERATE_MIPMAP_HINT, GL_GREEN_BITS, |
| GL_IMPLEMENTATION_COLOR_READ_FORMAT, GL_IMPLEMENTATION_COLOR_READ_TYPE, GL_LINE_WIDTH, |
| GL_MAJOR_VERSION, GL_MAX_3D_TEXTURE_SIZE, GL_MAX_ARRAY_TEXTURE_LAYERS, |
| GL_MAX_COLOR_ATTACHMENTS, GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, |
| GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, GL_MAX_COMBINED_UNIFORM_BLOCKS, |
| GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, GL_MAX_CUBE_MAP_TEXTURE_SIZE, |
| GL_MAX_DRAW_BUFFERS, GL_MAX_ELEMENTS_INDICES, GL_MAX_ELEMENTS_VERTICES, |
| GL_MAX_ELEMENT_INDEX, GL_MAX_FRAGMENT_INPUT_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_BLOCKS, |
| GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_VECTORS, |
| GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAX_RENDERBUFFER_SIZE, GL_MAX_SAMPLES, |
| GL_MAX_SERVER_WAIT_TIMEOUT, GL_MAX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_LOD_BIAS, |
| GL_MAX_TEXTURE_SIZE, GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, |
| GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, |
| GL_MAX_UNIFORM_BLOCK_SIZE, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_VARYING_COMPONENTS, |
| GL_MAX_VARYING_VECTORS, GL_MAX_VERTEX_ATTRIBS, GL_MAX_VERTEX_OUTPUT_COMPONENTS, |
| GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_VERTEX_UNIFORM_BLOCKS, |
| GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MAX_VERTEX_UNIFORM_VECTORS, GL_MAX_VIEWPORT_DIMS, |
| GL_MINOR_VERSION, GL_MIN_PROGRAM_TEXEL_OFFSET, GL_NUM_COMPRESSED_TEXTURE_FORMATS, |
| GL_NUM_EXTENSIONS, GL_NUM_PROGRAM_BINARY_FORMATS, GL_NUM_SHADER_BINARY_FORMATS, |
| GL_PACK_ALIGNMENT, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS, GL_PACK_SKIP_ROWS, |
| GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_UNPACK_BUFFER_BINDING, GL_POLYGON_OFFSET_FACTOR, |
| GL_POLYGON_OFFSET_FILL, GL_POLYGON_OFFSET_UNITS, GL_PRIMITIVE_RESTART_FIXED_INDEX, |
| GL_PROGRAM_BINARY_FORMATS, GL_RASTERIZER_DISCARD, GL_READ_BUFFER, |
| GL_READ_FRAMEBUFFER_BINDING, GL_RED_BITS, GL_RENDERBUFFER_BINDING, GL_SAMPLER_BINDING, |
| GL_SAMPLES, GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_BUFFERS, GL_SAMPLE_COVERAGE, |
| GL_SAMPLE_COVERAGE_INVERT, GL_SAMPLE_COVERAGE_VALUE, GL_SCISSOR_BOX, GL_SCISSOR_TEST, |
| GL_SHADER_BINARY_FORMATS, GL_SHADER_COMPILER, GL_STENCIL_BACK_FAIL, GL_STENCIL_BACK_FUNC, |
| GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_STENCIL_BACK_PASS_DEPTH_PASS, GL_STENCIL_BACK_REF, |
| GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_BACK_WRITEMASK, GL_STENCIL_BITS, |
| GL_STENCIL_CLEAR_VALUE, GL_STENCIL_FAIL, GL_STENCIL_FUNC, GL_STENCIL_PASS_DEPTH_FAIL, |
| GL_STENCIL_PASS_DEPTH_PASS, GL_STENCIL_REF, GL_STENCIL_TEST, GL_STENCIL_VALUE_MASK, |
| GL_STENCIL_WRITEMASK, GL_SUBPIXEL_BITS, GL_TEXTURE_BINDING_2D, GL_TEXTURE_BINDING_2D_ARRAY, |
| GL_TEXTURE_BINDING_3D, GL_TEXTURE_BINDING_CUBE_MAP, GL_TRANSFORM_FEEDBACK_ACTIVE, |
| GL_TRANSFORM_FEEDBACK_BINDING, GL_TRANSFORM_FEEDBACK_BUFFER_BINDING, |
| GL_TRANSFORM_FEEDBACK_BUFFER_SIZE, GL_TRANSFORM_FEEDBACK_BUFFER_START, |
| GL_TRANSFORM_FEEDBACK_PAUSED, GL_UNIFORM_BUFFER_BINDING, |
| GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_UNIFORM_BUFFER_SIZE, GL_UNIFORM_BUFFER_START, |
| GL_UNPACK_ALIGNMENT, GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_IMAGES, |
| GL_UNPACK_SKIP_PIXELS, GL_UNPACK_SKIP_ROWS, GL_VERTEX_ARRAY_BINDING, GL_VIEWPORT: { |
| // version 3.0 |
| } |
| case GL_DISPATCH_INDIRECT_BUFFER_BINDING, GL_IMAGE_BINDING_LAYERED, |
| GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, GL_MAX_COLOR_TEXTURE_SAMPLES, |
| GL_MAX_COMBINED_ATOMIC_COUNTERS, GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS, |
| GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, GL_MAX_COMPUTE_ATOMIC_COUNTERS, |
| GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS, |
| GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, GL_MAX_COMPUTE_UNIFORM_BLOCKS, |
| GL_MAX_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMPUTE_WORK_GROUP_COUNT, |
| GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, GL_MAX_COMPUTE_WORK_GROUP_SIZE, |
| GL_MAX_FRAGMENT_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, |
| GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_SAMPLES, GL_MAX_FRAMEBUFFER_WIDTH, |
| GL_MAX_INTEGER_SAMPLES, GL_MAX_SAMPLE_MASK_WORDS, GL_MAX_SHADER_STORAGE_BLOCK_SIZE, |
| GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, GL_MAX_UNIFORM_LOCATIONS, |
| GL_MAX_VERTEX_ATOMIC_COUNTERS, GL_MAX_VERTEX_ATTRIB_BINDINGS, |
| GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, |
| GL_PROGRAM_PIPELINE_BINDING, GL_SHADER_STORAGE_BUFFER_BINDING, |
| GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, GL_SHADER_STORAGE_BUFFER_SIZE, |
| GL_SHADER_STORAGE_BUFFER_START, GL_TEXTURE_BINDING_2D_MULTISAMPLE, |
| GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE: { |
| minRequiredVersion(3, 1) |
| } |
| default: { |
| glErrorInvalidEnum(target) |
| } |
| } |
| // TODO |
| } |
| |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml","OpenGL ES 2.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml","OpenGL ES 3.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGet.xhtml","OpenGL ES 3.1") |
| cmd void glGetIntegerv(GLenum param, GLint* values) { |
| minRequiredVersion(2, 0) |
| switch (param) { |
| // GL_FRAMEBUFFER_BINDING was renamed to GL_DRAW_FRAMEBUFFER_BINDING in 3.0 |
| case GL_ACTIVE_TEXTURE, GL_ALIASED_LINE_WIDTH_RANGE, GL_ALIASED_POINT_SIZE_RANGE, |
| GL_ALPHA_BITS, GL_ARRAY_BUFFER_BINDING, GL_BLEND, GL_BLEND_COLOR, GL_BLEND_DST_ALPHA, |
| GL_BLEND_DST_RGB, GL_BLEND_EQUATION_ALPHA, GL_BLEND_EQUATION_RGB, GL_BLEND_SRC_ALPHA, |
| GL_BLEND_SRC_RGB, GL_BLUE_BITS, GL_COLOR_CLEAR_VALUE, GL_COLOR_WRITEMASK, |
| GL_COMPRESSED_TEXTURE_FORMATS, GL_CULL_FACE, GL_CULL_FACE_MODE, GL_CURRENT_PROGRAM, |
| GL_DEPTH_BITS, GL_DEPTH_CLEAR_VALUE, GL_DEPTH_FUNC, GL_DEPTH_RANGE, GL_DEPTH_TEST, |
| GL_DEPTH_WRITEMASK, GL_DITHER, GL_ELEMENT_ARRAY_BUFFER_BINDING, GL_DRAW_FRAMEBUFFER_BINDING, |
| GL_FRONT_FACE, GL_GENERATE_MIPMAP_HINT, GL_GREEN_BITS, GL_IMPLEMENTATION_COLOR_READ_FORMAT, |
| GL_IMPLEMENTATION_COLOR_READ_TYPE, GL_LINE_WIDTH, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, |
| GL_MAX_CUBE_MAP_TEXTURE_SIZE, GL_MAX_FRAGMENT_UNIFORM_VECTORS, GL_MAX_RENDERBUFFER_SIZE, |
| GL_MAX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_SIZE, GL_MAX_VARYING_VECTORS, |
| GL_MAX_VERTEX_ATTRIBS, GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_VERTEX_UNIFORM_VECTORS, |
| GL_MAX_VIEWPORT_DIMS, GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_NUM_SHADER_BINARY_FORMATS, |
| GL_PACK_ALIGNMENT, GL_POLYGON_OFFSET_FACTOR, GL_POLYGON_OFFSET_FILL, |
| GL_POLYGON_OFFSET_UNITS, GL_RED_BITS, GL_RENDERBUFFER_BINDING, GL_SAMPLES, |
| GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_BUFFERS, GL_SAMPLE_COVERAGE, |
| GL_SAMPLE_COVERAGE_INVERT, GL_SAMPLE_COVERAGE_VALUE, GL_SCISSOR_BOX, GL_SCISSOR_TEST, |
| GL_SHADER_BINARY_FORMATS, GL_SHADER_COMPILER, GL_STENCIL_BACK_FAIL, GL_STENCIL_BACK_FUNC, |
| GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_STENCIL_BACK_PASS_DEPTH_PASS, GL_STENCIL_BACK_REF, |
| GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_BACK_WRITEMASK, GL_STENCIL_BITS, |
| GL_STENCIL_CLEAR_VALUE, GL_STENCIL_FAIL, GL_STENCIL_FUNC, GL_STENCIL_PASS_DEPTH_FAIL, |
| GL_STENCIL_PASS_DEPTH_PASS, GL_STENCIL_REF, GL_STENCIL_TEST, GL_STENCIL_VALUE_MASK, |
| GL_STENCIL_WRITEMASK, GL_SUBPIXEL_BITS, GL_TEXTURE_BINDING_2D, GL_TEXTURE_BINDING_CUBE_MAP, |
| GL_UNPACK_ALIGNMENT, GL_VIEWPORT: { |
| // version 2.0 |
| } |
| case GL_COPY_READ_BUFFER_BINDING, GL_COPY_WRITE_BUFFER_BINDING, GL_DRAW_BUFFER, |
| GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_MAJOR_VERSION, |
| GL_MAX_3D_TEXTURE_SIZE, GL_MAX_ARRAY_TEXTURE_LAYERS, GL_MAX_COLOR_ATTACHMENTS, |
| GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_COMBINED_UNIFORM_BLOCKS, |
| GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, GL_MAX_DRAW_BUFFERS, GL_MAX_ELEMENTS_INDICES, |
| GL_MAX_ELEMENTS_VERTICES, GL_MAX_ELEMENT_INDEX, GL_MAX_FRAGMENT_INPUT_COMPONENTS, |
| GL_MAX_FRAGMENT_UNIFORM_BLOCKS, GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, |
| GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAX_SAMPLES, GL_MAX_SERVER_WAIT_TIMEOUT, |
| GL_MAX_TEXTURE_LOD_BIAS, GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, |
| GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, |
| GL_MAX_UNIFORM_BLOCK_SIZE, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_VARYING_COMPONENTS, |
| GL_MAX_VERTEX_OUTPUT_COMPONENTS, GL_MAX_VERTEX_UNIFORM_BLOCKS, |
| GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MINOR_VERSION, GL_MIN_PROGRAM_TEXEL_OFFSET, |
| GL_NUM_EXTENSIONS, GL_NUM_PROGRAM_BINARY_FORMATS, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS, |
| GL_PACK_SKIP_ROWS, GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_UNPACK_BUFFER_BINDING, |
| GL_PRIMITIVE_RESTART_FIXED_INDEX, GL_PROGRAM_BINARY_FORMATS, GL_RASTERIZER_DISCARD, |
| GL_READ_BUFFER, GL_READ_FRAMEBUFFER_BINDING, GL_SAMPLER_BINDING, |
| GL_TEXTURE_BINDING_2D_ARRAY, GL_TEXTURE_BINDING_3D, GL_TRANSFORM_FEEDBACK_ACTIVE, |
| GL_TRANSFORM_FEEDBACK_BINDING, GL_TRANSFORM_FEEDBACK_BUFFER_BINDING, |
| GL_TRANSFORM_FEEDBACK_BUFFER_SIZE, GL_TRANSFORM_FEEDBACK_BUFFER_START, |
| GL_TRANSFORM_FEEDBACK_PAUSED, GL_UNIFORM_BUFFER_BINDING, |
| GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_UNIFORM_BUFFER_SIZE, GL_UNIFORM_BUFFER_START, |
| GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_IMAGES, GL_UNPACK_SKIP_PIXELS, |
| GL_UNPACK_SKIP_ROWS, GL_VERTEX_ARRAY_BINDING: { |
| minRequiredVersion(3, 0) |
| } |
| case GL_DISPATCH_INDIRECT_BUFFER_BINDING, GL_IMAGE_BINDING_LAYERED, |
| GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, GL_MAX_COLOR_TEXTURE_SAMPLES, |
| GL_MAX_COMBINED_ATOMIC_COUNTERS, GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS, |
| GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, GL_MAX_COMPUTE_ATOMIC_COUNTERS, |
| GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS, |
| GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, GL_MAX_COMPUTE_UNIFORM_BLOCKS, |
| GL_MAX_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMPUTE_WORK_GROUP_COUNT, |
| GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, GL_MAX_COMPUTE_WORK_GROUP_SIZE, |
| GL_MAX_FRAGMENT_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, |
| GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_SAMPLES, GL_MAX_FRAMEBUFFER_WIDTH, |
| GL_MAX_INTEGER_SAMPLES, GL_MAX_SAMPLE_MASK_WORDS, GL_MAX_SHADER_STORAGE_BLOCK_SIZE, |
| GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, GL_MAX_UNIFORM_LOCATIONS, |
| GL_MAX_VERTEX_ATOMIC_COUNTERS, GL_MAX_VERTEX_ATTRIB_BINDINGS, |
| GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, |
| GL_PROGRAM_PIPELINE_BINDING, GL_SHADER_STORAGE_BUFFER_BINDING, |
| GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, GL_SHADER_STORAGE_BUFFER_SIZE, |
| GL_SHADER_STORAGE_BUFFER_START, GL_TEXTURE_BINDING_2D_MULTISAMPLE, |
| GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE: { |
| minRequiredVersion(3, 1) |
| } |
| default: { |
| glErrorInvalidEnum(param) |
| } |
| } |
| |
| v := values[0:stateVariableSize(param)] |
| ctx := GetContext() |
| switch (param) { |
| case GL_ACTIVE_TEXTURE: |
| v[0] = as!GLint(ctx.ActiveTextureUnit) |
| case GL_ARRAY_BUFFER_BINDING: |
| v[0] = as!GLint(ctx.BoundBuffers[GL_ARRAY_BUFFER]) |
| case GL_ELEMENT_ARRAY_BUFFER_BINDING: |
| v[0] = as!GLint(ctx.BoundBuffers[GL_ELEMENT_ARRAY_BUFFER]) |
| case GL_BLEND_SRC_ALPHA: |
| v[0] = as!GLint(ctx.Blending.SrcAlphaBlendFactor) |
| case GL_BLEND_SRC_RGB: |
| v[0] = as!GLint(ctx.Blending.SrcRgbBlendFactor) |
| case GL_BLEND_DST_ALPHA: |
| v[0] = as!GLint(ctx.Blending.DstAlphaBlendFactor) |
| case GL_BLEND_DST_RGB: |
| v[0] = as!GLint(ctx.Blending.DstRgbBlendFactor) |
| case GL_BLEND_EQUATION_RGB: |
| v[0] = as!GLint(ctx.Blending.BlendEquationRgb) |
| case GL_BLEND_EQUATION_ALPHA: |
| v[0] = as!GLint(ctx.Blending.BlendEquationAlpha) |
| case GL_BLEND_COLOR: { |
| v[0] = as!GLint(ctx.Blending.BlendColor.Red) |
| v[1] = as!GLint(ctx.Blending.BlendColor.Green) |
| v[2] = as!GLint(ctx.Blending.BlendColor.Blue) |
| v[3] = as!GLint(ctx.Blending.BlendColor.Alpha) |
| } |
| case GL_DEPTH_FUNC: |
| v[0] = as!GLint(ctx.Rasterizing.DepthTestFunction) |
| case GL_DEPTH_CLEAR_VALUE: |
| v[0] = as!GLint(ctx.Clearing.ClearDepth) |
| case GL_STENCIL_WRITEMASK: |
| v[0] = as!GLint(ctx.Rasterizing.StencilMask[GL_FRONT]) |
| case GL_STENCIL_BACK_WRITEMASK: |
| v[0] = as!GLint(ctx.Rasterizing.StencilMask[GL_BACK]) |
| case GL_VIEWPORT: { |
| v[0] = as!GLint(ctx.Rasterizing.Viewport.X) |
| v[1] = as!GLint(ctx.Rasterizing.Viewport.Y) |
| v[2] = as!GLint(ctx.Rasterizing.Viewport.Width) |
| v[3] = as!GLint(ctx.Rasterizing.Viewport.Height) |
| } |
| case GL_SCISSOR_BOX: { |
| v[0] = as!GLint(ctx.Rasterizing.Scissor.X) |
| v[1] = as!GLint(ctx.Rasterizing.Scissor.Y) |
| v[2] = as!GLint(ctx.Rasterizing.Scissor.Width) |
| v[3] = as!GLint(ctx.Rasterizing.Scissor.Height) |
| } |
| case GL_FRONT_FACE: |
| v[0] = as!GLint(ctx.Rasterizing.FrontFace) |
| case GL_CULL_FACE_MODE: |
| v[0] = as!GLint(ctx.Rasterizing.CullFace) |
| case GL_STENCIL_CLEAR_VALUE: |
| v[0] = ctx.Clearing.ClearStencil |
| case GL_DRAW_FRAMEBUFFER_BINDING: |
| v[0] = as!GLint(ctx.BoundFramebuffers[GL_FRAMEBUFFER]) |
| case GL_READ_FRAMEBUFFER_BINDING: |
| v[0] = as!GLint(ctx.BoundFramebuffers[GL_READ_FRAMEBUFFER]) |
| case GL_RENDERBUFFER_BINDING: |
| v[0] = as!GLint(ctx.BoundRenderbuffers[GL_RENDERBUFFER]) |
| case GL_CURRENT_PROGRAM: |
| v[0] = as!GLint(ctx.BoundProgram) |
| case GL_TEXTURE_BINDING_2D: |
| v[0] = as!GLint(ctx.TextureUnits[ctx.ActiveTextureUnit][GL_TEXTURE_2D]) |
| case GL_TEXTURE_BINDING_CUBE_MAP: |
| v[0] = as!GLint(ctx.TextureUnits[ctx.ActiveTextureUnit][GL_TEXTURE_CUBE_MAP]) |
| case GL_GENERATE_MIPMAP_HINT: |
| v[0] = as!GLint(ctx.GenerateMipmapHint) |
| case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: { |
| result := ? |
| assert(result > 7) |
| v[0] = result |
| } |
| case GL_MAX_CUBE_MAP_TEXTURE_SIZE: { |
| result := ? |
| assert(result > 15) |
| v[0] = result |
| } |
| case GL_MAX_FRAGMENT_UNIFORM_VECTORS: { |
| result := ? |
| assert(result > 15) |
| v[0] = result |
| } |
| case GL_MAX_RENDERBUFFER_SIZE: { |
| result := ? |
| assert(result > 0) |
| v[0] = result |
| } |
| case GL_MAX_TEXTURE_IMAGE_UNITS: { |
| result := ? |
| assert(result > 7) |
| v[0] = result |
| } |
| case GL_MAX_TEXTURE_SIZE: { |
| result := ? |
| assert(result > 63) |
| v[0] = result |
| } |
| case GL_MAX_VARYING_VECTORS: { |
| result := ? |
| assert(result > 7) |
| v[0] = result |
| } |
| case GL_MAX_VERTEX_ATTRIBS: { |
| result := ? |
| assert(result > 7) |
| v[0] = result |
| } |
| case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: |
| v[0] = ? |
| case GL_MAX_VERTEX_UNIFORM_VECTORS: { |
| result := ? |
| assert(result > 127) |
| v[0] = result |
| } |
| case GL_MAX_VIEWPORT_DIMS: { |
| max_width := ? |
| max_height := ? |
| assert(max_width > ctx.Rasterizing.Viewport.Width - 1) |
| assert(max_height > ctx.Rasterizing.Viewport.Height - 1) |
| v[0] = max_width |
| v[1] = max_height |
| } |
| case GL_NUM_COMPRESSED_TEXTURE_FORMATS: { |
| result := ? |
| assert(result > -1) |
| v[0] = result |
| } |
| case GL_NUM_SHADER_BINARY_FORMATS: { |
| result := ? |
| assert(result > -1) |
| v[0] = result |
| } |
| case GL_PACK_ALIGNMENT: |
| v[0] = ctx.PixelStorage[GL_PACK_ALIGNMENT] |
| case GL_UNPACK_ALIGNMENT: |
| v[0] = ctx.PixelStorage[GL_UNPACK_ALIGNMENT] |
| case GL_ALPHA_BITS: |
| v[0] = ? |
| case GL_BLUE_BITS: |
| v[0] = ? |
| case GL_GREEN_BITS: |
| v[0] = ? |
| case GL_RED_BITS: |
| v[0] = ? |
| case GL_DEPTH_BITS: |
| v[0] = ? |
| case GL_SAMPLE_BUFFERS: |
| v[0] = ? |
| case GL_SAMPLES: |
| v[0] = ? |
| /* |
| case GL_SHADER_BINARY_FORMATS: |
| values = ? // list of length GL_NUM_SHADER_BINARY_FORMATS |
| case GL_COMPRESSED_TEXTURE_FORMATS: |
| values = ? // list of length GL_NUM_COMPRESSED_TEXTURE_FORMATS |
| */ |
| case GL_STENCIL_BITS: |
| v[0] = ? |
| case GL_SUBPIXEL_BITS: { |
| result := ? |
| assert(result > 3) |
| v[0] = result |
| } |
| case GL_IMPLEMENTATION_COLOR_READ_FORMAT: |
| v[0] = ? |
| case GL_IMPLEMENTATION_COLOR_READ_TYPE: |
| v[0] = ? |
| case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: |
| v[0] = ? |
| case GL_GPU_DISJOINT_EXT: |
| v[0] = ? |
| |
| // TODO: implement the following which depend on: |
| // glStencilOp, glStencilOpSeparate, glStencilFuncSeparate. |
| // GL_STENCIL_BACK_FAIL |
| // GL_STENCIL_BACK_FUNC |
| // GL_STENCIL_BACK_PASS_DEPTH_FAIL |
| // GL_STENCIL_BACK_PASS_DEPTH_PASS |
| // GL_STENCIL_BACK_REF |
| // GL_STENCIL_BACK_VALUE_MASK |
| // GL_STENCIL_FAIL |
| // GL_STENCIL_FUNC |
| // GL_STENCIL_PASS_DEPTH_FAIL |
| // GL_STENCIL_PASS_DEPTH_PASS |
| // GL_STENCIL_REF |
| // GL_STENCIL_VALUE_MASK |
| |
| // TODO: all the values returned by glGetFloatv and glGetBooleanv can |
| // be returned here with a type conversion: "_most_ floating-point values |
| // are rounded to the nearest integer value". |
| } |
| } |
| |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetInternalformativ.xhtml","OpenGL ES 3.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetInternalformativ.xhtml","OpenGL ES 3.1") |
| cmd void glGetInternalformativ(GLenum target, |
| GLenum internalformat, |
| GLenum pname, |
| GLsizei bufSize, |
| GLint* params) { |
| minRequiredVersion(3, 0) |
| switch (target) { |
| case GL_RENDERBUFFER: { |
| // version 3.0 |
| } |
| case GL_TEXTURE_2D_MULTISAMPLE: { |
| minRequiredVersion(3, 1) |
| } |
| default: { |
| glErrorInvalidEnum(target) |
| } |
| } |
| switch (internalformat) { |
| case GL_DEPTH24_STENCIL8, GL_DEPTH32F_STENCIL8, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24, |
| GL_DEPTH_COMPONENT32F, GL_R11F_G11F_B10F, GL_R16F, GL_R16I, GL_R16UI, GL_R32F, GL_R32I, |
| GL_R32UI, GL_R8, GL_R8I, GL_R8UI, GL_R8_SNORM, GL_RG16F, GL_RG16I, GL_RG16UI, GL_RG32F, |
| GL_RG32I, GL_RG32UI, GL_RG8, GL_RG8I, GL_RG8UI, GL_RG8_SNORM, GL_RGB10_A2, GL_RGB10_A2UI, |
| GL_RGB16F, GL_RGB16I, GL_RGB16UI, GL_RGB32F, GL_RGB32I, GL_RGB32UI, GL_RGB565, GL_RGB5_A1, |
| GL_RGB8, GL_RGB8I, GL_RGB8UI, GL_RGB8_SNORM, GL_RGB9_E5, GL_RGBA16F, GL_RGBA16I, |
| GL_RGBA16UI, GL_RGBA32F, GL_RGBA32I, GL_RGBA32UI, GL_RGBA4, GL_RGBA8, GL_RGBA8I, |
| GL_RGBA8UI, GL_RGBA8_SNORM, GL_SRGB8, GL_SRGB8_ALPHA8: { |
| // version 3.0 |
| } |
| default: { |
| glErrorInvalidEnum(internalformat) |
| } |
| } |
| switch (pname) { |
| case GL_NUM_SAMPLE_COUNTS, GL_SAMPLES: { |
| // version 3.0 |
| } |
| default: { |
| glErrorInvalidEnum(pname) |
| } |
| } |
| // TODO |
| } |
| |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetString.xml","OpenGL ES 2.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetString.xhtml","OpenGL ES 3.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetString.xhtml","OpenGL ES 3.1") |
| cmd const GLubyte* glGetString(GLenum param) { |
| minRequiredVersion(2, 0) |
| switch (param) { |
| case GL_EXTENSIONS, GL_RENDERER, GL_SHADING_LANGUAGE_VERSION, GL_VENDOR, GL_VERSION: { |
| // version 2.0 |
| } |
| default: { |
| glErrorInvalidEnum(param) |
| } |
| } |
| |
| return null |
| } |
| |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetString.xhtml","OpenGL ES 3.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetString.xhtml","OpenGL ES 3.1") |
| cmd const GLubyte* glGetStringi(GLenum name, GLuint index) { |
| minRequiredVersion(3, 0) |
| switch (name) { |
| case GL_EXTENSIONS: { |
| // version 3.0 |
| } |
| default: { |
| glErrorInvalidEnum(name) |
| } |
| } |
| // TODO |
| return ? |
| } |
| |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glIsEnabled.xml","OpenGL ES 2.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glIsEnabled.xhtml","OpenGL ES 3.0") |
| @Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glIsEnabled.xhtml","OpenGL ES 3.1") |
| cmd GLboolean glIsEnabled(GLenum capability) { |
| minRequiredVersion(2, 0) |
| switch (capability) { |
| case GL_BLEND, GL_CULL_FACE, GL_DEPTH_TEST, GL_DITHER, GL_POLYGON_OFFSET_FILL, |
| GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_COVERAGE, GL_SCISSOR_TEST, GL_STENCIL_TEST: { |
| // version 2.0 |
| } |
| case GL_PRIMITIVE_RESTART_FIXED_INDEX, GL_RASTERIZER_DISCARD: { |
| minRequiredVersion(3, 0) |
| } |
| default: { |
| glErrorInvalidEnum(capability) |
| } |
| } |
| |
| ctx := GetContext() |
| return as!GLboolean(ctx.Capabilities[capability]) |
| } |
| |