blob: 61d9b9023a1a2dd33f6d54c7433e9d7faf7b5013 [file] [log] [blame]
// 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])
}