All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jme3.renderer.opengl.GL Maven / Gradle / Ivy

There is a newer version: 3.7.0-stable
Show newest version
/*
 * Copyright (c) 2009-2021 jMonkeyEngine
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 * * Redistributions of source code must retain the above copyright
 *   notice, this list of conditions and the following disclaimer.
 *
 * * Redistributions in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in the
 *   documentation and/or other materials provided with the distribution.
 *
 * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
 *   may be used to endorse or promote products derived from this software
 *   without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package com.jme3.renderer.opengl;

import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.nio.ShortBuffer;

/**
 * Baseline GL methods that must be available on all platforms.
 * 

* This is the subset of vanilla desktop OpenGL 2 and OpenGL ES 2. * * @author Kirill Vainer */ public interface GL { public static final int GL_ALIASED_LINE_WIDTH_RANGE = 0x846E; public static final int GL_ALPHA = 0x1906; public static final int GL_ALWAYS = 0x207; public static final int GL_ARRAY_BUFFER = 0x8892; public static final int GL_BACK = 0x405; public static final int GL_BLEND = 0xBE2; public static final int GL_BLUE = 0x1905; public static final int GL_BYTE = 0x1400; public static final int GL_CLAMP_TO_EDGE = 0x812F; public static final int GL_COLOR_BUFFER_BIT = 0x4000; public static final int GL_COMPILE_STATUS = 0x8B81; public static final int GL_CULL_FACE = 0xB44; public static final int GL_DECR = 0x1E03; public static final int GL_DECR_WRAP = 0x8508; public static final int GL_DEPTH_BUFFER_BIT = 0x100; public static final int GL_DEPTH_COMPONENT = 0x1902; public static final int GL_DEPTH_COMPONENT16 = 0x81A5; public static final int GL_DEPTH_TEST = 0xB71; public static final int GL_DOUBLE = 0x140A; public static final int GL_DST_ALPHA = 0x0304; public static final int GL_DST_COLOR = 0x306; public static final int GL_DYNAMIC_DRAW = 0x88E8; public static final int GL_DYNAMIC_COPY = 0x88EA; public static final int GL_ELEMENT_ARRAY_BUFFER = 0x8893; public static final int GL_EQUAL = 0x202; public static final int GL_EXTENSIONS = 0x1F03; public static final int GL_FALSE = 0x0; public static final int GL_FLOAT = 0x1406; public static final int GL_FRAGMENT_SHADER = 0x8B30; public static final int GL_FRONT = 0x404; public static final int GL_FUNC_ADD = 0x8006; public static final int GL_FUNC_SUBTRACT = 0x800A; public static final int GL_FUNC_REVERSE_SUBTRACT = 0x800B; public static final int GL_FRONT_AND_BACK = 0x408; public static final int GL_GEQUAL = 0x206; public static final int GL_GREATER = 0x204; public static final int GL_GREEN = 0x1904; public static final int GL_INCR = 0x1E02; public static final int GL_INCR_WRAP = 0x8507; public static final int GL_INFO_LOG_LENGTH = 0x8B84; public static final int GL_INT = 0x1404; public static final int GL_INVALID_ENUM = 0x500; public static final int GL_INVALID_VALUE = 0x501; public static final int GL_INVALID_OPERATION = 0x502; public static final int GL_INVERT = 0x150A; public static final int GL_KEEP = 0x1E00; public static final int GL_LEQUAL = 0x203; public static final int GL_LESS = 0x201; public static final int GL_LINEAR = 0x2601; public static final int GL_LINEAR_MIPMAP_LINEAR = 0x2703; public static final int GL_LINEAR_MIPMAP_NEAREST = 0x2701; public static final int GL_LINES = 0x1; public static final int GL_LINE_LOOP = 0x2; public static final int GL_LINE_SMOOTH = 0xB20; public static final int GL_LINE_STRIP = 0x3; public static final int GL_LINK_STATUS = 0x8B82; public static final int GL_LUMINANCE = 0x1909; public static final int GL_LUMINANCE_ALPHA = 0x190A; public static final int GL_MAX = 0x8008; public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C; public static final int GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49; public static final int GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD; public static final int GL_MAX_TEXTURE_IMAGE_UNITS = 0x8872; public static final int GL_MAX_TEXTURE_SIZE = 0xD33; public static final int GL_MAX_VERTEX_ATTRIBS = 0x8869; public static final int GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C; public static final int GL_MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A; public static final int GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB; public static final int GL_MIRRORED_REPEAT = 0x8370; public static final int GL_MIN = 0x8007; public static final int GL_NEAREST = 0x2600; public static final int GL_NEAREST_MIPMAP_LINEAR = 0x2702; public static final int GL_NEAREST_MIPMAP_NEAREST = 0x2700; public static final int GL_NEVER = 0x200; public static final int GL_NO_ERROR = 0x0; public static final int GL_NONE = 0x0; public static final int GL_NOTEQUAL = 0x205; public static final int GL_ONE = 0x1; public static final int GL_ONE_MINUS_DST_ALPHA = 0x0305; public static final int GL_ONE_MINUS_DST_COLOR = 0x307; public static final int GL_ONE_MINUS_SRC_ALPHA = 0x303; public static final int GL_ONE_MINUS_SRC_COLOR = 0x301; public static final int GL_OUT_OF_MEMORY = 0x505; public static final int GL_POINTS = 0x0; public static final int GL_POLYGON_OFFSET_FILL = 0x8037; public static final int GL_QUERY_RESULT = 0x8866; public static final int GL_QUERY_RESULT_AVAILABLE = 0x8867; public static final int GL_RED = 0x1903; public static final int GL_RENDERER = 0x1F01; public static final int GL_REPEAT = 0x2901; public static final int GL_REPLACE = 0x1E01; public static final int GL_RGB = 0x1907; public static final int GL_RGB565 = 0x8D62; public static final int GL_RGB5_A1 = 0x8057; public static final int GL_RGBA = 0x1908; public static final int GL_RGBA4 = 0x8056; public static final int GL_SCISSOR_TEST = 0xC11; public static final int GL_SHADING_LANGUAGE_VERSION = 0x8B8C; public static final int GL_SHORT = 0x1402; public static final int GL_SRC_ALPHA = 0x302; public static final int GL_SRC_ALPHA_SATURATE = 0x0308; public static final int GL_SRC_COLOR = 0x300; public static final int GL_STATIC_DRAW = 0x88E4; public static final int GL_STENCIL_BUFFER_BIT = 0x400; public static final int GL_STENCIL_TEST = 0xB90; public static final int GL_STREAM_DRAW = 0x88E0; public static final int GL_STREAM_READ = 0x88E1; public static final int GL_TEXTURE = 0x1702; public static final int GL_TEXTURE0 = 0x84C0; public static final int GL_TEXTURE1 = 0x84C1; public static final int GL_TEXTURE2 = 0x84C2; public static final int GL_TEXTURE3 = 0x84C3; public static final int GL_TEXTURE4 = 0x84C4; public static final int GL_TEXTURE5 = 0x84C5; public static final int GL_TEXTURE6 = 0x84C6; public static final int GL_TEXTURE7 = 0x84C7; public static final int GL_TEXTURE8 = 0x84C8; public static final int GL_TEXTURE9 = 0x84C9; public static final int GL_TEXTURE10 = 0x84CA; public static final int GL_TEXTURE11 = 0x84CB; public static final int GL_TEXTURE12 = 0x84CC; public static final int GL_TEXTURE13 = 0x84CD; public static final int GL_TEXTURE14 = 0x84CE; public static final int GL_TEXTURE15 = 0x84CF; public static final int GL_TEXTURE_2D = 0xDE1; public static final int GL_TEXTURE_CUBE_MAP = 0x8513; public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515; public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516; public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517; public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518; public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519; public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A; public static final int GL_TEXTURE_MAG_FILTER = 0x2800; public static final int GL_TEXTURE_MIN_FILTER = 0x2801; public static final int GL_TEXTURE_WRAP_S = 0x2802; public static final int GL_TEXTURE_WRAP_T = 0x2803; public static final int GL_TIME_ELAPSED = 0x88BF; public static final int GL_TRIANGLES = 0x4; public static final int GL_TRIANGLE_FAN = 0x6; public static final int GL_TRIANGLE_STRIP = 0x5; public static final int GL_TRUE = 0x1; public static final int GL_UNPACK_ALIGNMENT = 0xCF5; public static final int GL_UNSIGNED_BYTE = 0x1401; public static final int GL_UNSIGNED_INT = 0x1405; public static final int GL_UNSIGNED_SHORT = 0x1403; public static final int GL_UNSIGNED_SHORT_5_6_5 = 0x8363; public static final int GL_UNSIGNED_SHORT_5_5_5_1 = 0x8034; public static final int GL_VENDOR = 0x1F00; public static final int GL_VERSION = 0x1F02; public static final int GL_VERTEX_SHADER = 0x8B31; public static final int GL_ZERO = 0x0; public static final int GL_UNPACK_ROW_LENGTH = 0x0CF2; public static final int GL_FRAMEBUFFER_BINDING = 0x8CA6; public void resetStats(); /** *

Reference Page

*

* Selects which texture unit subsequent texture state calls will affect. The number of texture units an implementation supports is implementation * dependent. * * @param texture which texture unit to make active. One of: * {@link #GL_TEXTURE0 TEXTURE0} * GL_TEXTURE[1-31] */ public void glActiveTexture(int texture); /** *

Reference Page

*

* Attaches a shader object to a program object. * *

In order to create a complete shader program, there must be a way to specify the list of things that will be linked together. Program objects provide * this mechanism. Shaders that are to be linked together in a program object must first be attached to that program object. glAttachShader attaches the * shader object specified by shader to the program object specified by program. This indicates that shader will be included in link operations that will * be performed on program.

* *

All operations that can be performed on a shader object are valid whether or not the shader object is attached to a program object. It is permissible to * attach a shader object to a program object before source code has been loaded into the shader object or before the shader object has been compiled. It * is permissible to attach multiple shader objects of the same type because each may contain a portion of the complete shader. It is also permissible to * attach a shader object to more than one program object. If a shader object is deleted while it is attached to a program object, it will be flagged for * deletion, and deletion will not occur until glDetachShader is called to detach it from all program objects to which it is attached.

* * @param program the program object to which a shader object will be attached. * @param shader the shader object that is to be attached. */ public void glAttachShader(int program, int shader); /** *

Reference Page

*

* Creates a query object and makes it active. * * @param target the target type of query object established. * @param query the name of a query object. */ public void glBeginQuery(int target, int query); /** *

Reference Page

*

* Binds a named buffer object. * * @param target the target to which the buffer object is bound. * @param buffer the name of a buffer object. */ public void glBindBuffer(int target, int buffer); /** *

Reference Page

*

* Binds the a texture to a texture target. * *

While a texture object is bound, GL operations on the target to which it is bound affect the bound object, and queries of the target to which it is * bound return state from the bound object. If texture mapping of the dimensionality of the target to which a texture object is bound is enabled, the * state of the bound texture object directs the texturing operation.

* * @param target the texture target. * @param texture the texture object to bind. */ public void glBindTexture(int target, int texture); /** *

Reference Page

*

* Sets the RGB blend equation and the alpha blend equation separately. * * @param colorMode the RGB blend equation, how the red, green, and blue components of the source and destination colors are combined. * @param alphaMode the alpha blend equation, how the alpha component of the source and destination colors are combined */ public void glBlendEquationSeparate(int colorMode, int alphaMode); /** *

Reference Page

*

* Specifies the weighting factors used by the blend equation, for both RGB and alpha functions and for all draw buffers. * * @param sFactor the source weighting factor. * @param dFactor the destination weighting factor. */ public void glBlendFunc(int sFactor, int dFactor); /** *

Reference Page

*

* Specifies pixel arithmetic for RGB and alpha components separately. * * @param sFactorRGB how the red, green, and blue blending factors are computed. The initial value is GL_ONE. * @param dFactorRGB how the red, green, and blue destination blending factors are computed. The initial value is GL_ZERO. * @param sFactorAlpha how the alpha source blending factor is computed. The initial value is GL_ONE. * @param dFactorAlpha how the alpha destination blending factor is computed. The initial value is GL_ZERO. */ public void glBlendFuncSeparate(int sFactorRGB, int dFactorRGB, int sFactorAlpha, int dFactorAlpha); /** *

Reference Page

*

* Creates and initializes a buffer object's data store. * *

{@code usage} is a hint to the GL implementation as to how a buffer object's data store will be accessed. This enables the GL implementation to make * more intelligent decisions that may significantly impact buffer object performance. It does not, however, constrain the actual usage of the data store. * {@code usage} can be broken down into two parts: first, the frequency of access (modification and usage), and second, the nature of that access. The * frequency of access may be one of these:

* *
    *
  • STREAM - The data store contents will be modified once and used at most a few times.
  • *
  • STATIC - The data store contents will be modified once and used many times.
  • *
  • DYNAMIC - The data store contents will be modified repeatedly and used many times.
  • *
* *

The nature of access may be one of these:

* *
    *
  • DRAW - The data store contents are modified by the application, and used as the source for GL drawing and image specification commands.
  • *
  • READ - The data store contents are modified by reading data from the GL, and used to return that data when queried by the application.
  • *
  • COPY - The data store contents are modified by reading data from the GL, and used as the source for GL drawing and image specification commands.
  • *
* * @param target the target buffer object. * @param dataSize the size in bytes of the buffer object's new data store * @param usage the expected usage pattern of the data store. */ public void glBufferData(int target, long dataSize, int usage); /** *

Reference Page

*

* Creates and initializes a buffer object's data store. * *

{@code usage} is a hint to the GL implementation as to how a buffer object's data store will be accessed. This enables the GL implementation to make * more intelligent decisions that may significantly impact buffer object performance. It does not, however, constrain the actual usage of the data store. * {@code usage} can be broken down into two parts: first, the frequency of access (modification and usage), and second, the nature of that access. The * frequency of access may be one of these:

* *
    *
  • STREAM - The data store contents will be modified once and used at most a few times.
  • *
  • STATIC - The data store contents will be modified once and used many times.
  • *
  • DYNAMIC - The data store contents will be modified repeatedly and used many times.
  • *
* *

The nature of access may be one of these:

* *
    *
  • DRAW - The data store contents are modified by the application, and used as the source for GL drawing and image specification commands.
  • *
  • READ - The data store contents are modified by reading data from the GL, and used to return that data when queried by the application.
  • *
  • COPY - The data store contents are modified by reading data from the GL, and used as the source for GL drawing and image specification commands.
  • *
* * @param target the target buffer object. * @param data a pointer to data that will be copied into the data store for initialization, or {@code NULL} if no data is to be copied. * @param usage the expected usage pattern of the data store. */ public void glBufferData(int target, FloatBuffer data, int usage); /** *

Reference Page

*

* Creates and initializes a buffer object's data store. * *

{@code usage} is a hint to the GL implementation as to how a buffer object's data store will be accessed. This enables the GL implementation to make * more intelligent decisions that may significantly impact buffer object performance. It does not, however, constrain the actual usage of the data store. * {@code usage} can be broken down into two parts: first, the frequency of access (modification and usage), and second, the nature of that access. The * frequency of access may be one of these:

* *
    *
  • STREAM - The data store contents will be modified once and used at most a few times.
  • *
  • STATIC - The data store contents will be modified once and used many times.
  • *
  • DYNAMIC - The data store contents will be modified repeatedly and used many times.
  • *
* *

The nature of access may be one of these:

* *
    *
  • DRAW - The data store contents are modified by the application, and used as the source for GL drawing and image specification commands.
  • *
  • READ - The data store contents are modified by reading data from the GL, and used to return that data when queried by the application.
  • *
  • COPY - The data store contents are modified by reading data from the GL, and used as the source for GL drawing and image specification commands.
  • *
* * @param target the target buffer object. * @param data a pointer to data that will be copied into the data store for initialization, or {@code NULL} if no data is to be copied * @param usage the expected usage pattern of the data store. */ public void glBufferData(int target, ShortBuffer data, int usage); /** *

Reference Page

*

* Creates and initializes a buffer object's data store. * *

{@code usage} is a hint to the GL implementation as to how a buffer object's data store will be accessed. This enables the GL implementation to make * more intelligent decisions that may significantly impact buffer object performance. It does not, however, constrain the actual usage of the data store. * {@code usage} can be broken down into two parts: first, the frequency of access (modification and usage), and second, the nature of that access. The * frequency of access may be one of these:

* *
    *
  • STREAM - The data store contents will be modified once and used at most a few times.
  • *
  • STATIC - The data store contents will be modified once and used many times.
  • *
  • DYNAMIC - The data store contents will be modified repeatedly and used many times.
  • *
* *

The nature of access may be one of these:

* *
    *
  • DRAW - The data store contents are modified by the application, and used as the source for GL drawing and image specification commands.
  • *
  • READ - The data store contents are modified by reading data from the GL, and used to return that data when queried by the application.
  • *
  • COPY - The data store contents are modified by reading data from the GL, and used as the source for GL drawing and image specification commands.
  • *
* * @param target the target buffer object. * @param data a pointer to data that will be copied into the data store for initialization, or {@code NULL} if no data is to be copied. * @param usage the expected usage pattern of the data store. */ public void glBufferData(int target, ByteBuffer data, int usage); /** *

Reference Page

*

* Updates a subset of a buffer object's data store. * * @param target the target buffer object. * @param offset the offset into the buffer object's data store where data replacement will begin, measured in bytes. * @param data a pointer to the new data that will be copied into the data store. */ public void glBufferSubData(int target, long offset, FloatBuffer data); /** *

Reference Page

*

* Updates a subset of a buffer object's data store. * * @param target the target buffer object. * @param offset the offset into the buffer object's data store where data replacement will begin, measured in bytes. * @param data a pointer to the new data that will be copied into the data store. */ public void glBufferSubData(int target, long offset, ShortBuffer data); /** *

Reference Page

*

* Updates a subset of a buffer object's data store. * * @param target the target buffer object. * @param offset the offset into the buffer object's data store where data replacement will begin, measured in bytes. * @param data a pointer to the new data that will be copied into the data store. */ public void glBufferSubData(int target, long offset, ByteBuffer data); /** *

Reference Page

*

* Sets portions of every pixel in a particular buffer to the same value. The value to which each buffer is cleared depends on the setting of the clear * value for that buffer. * * @param mask Zero or the bitwise OR of one or more values indicating which buffers are to be cleared. */ public void glClear(int mask); /** *

Reference Page

* * Sets the clear value for fixed-point and floating-point color buffers in RGBA mode. The specified components are stored as floating-point values. * * @param red the value to which to clear the R channel of the color buffer. * @param green the value to which to clear the G channel of the color buffer. * @param blue the value to which to clear the B channel of the color buffer. * @param alpha the value to which to clear the A channel of the color buffer. */ public void glClearColor(float red, float green, float blue, float alpha); /** *

Reference Page

* * Masks the writing of R, G, B and A values to all draw buffers. In the initial state, all color values are enabled for writing for all draw buffers. * * @param red whether R values are written or not. * @param green whether G values are written or not. * @param blue whether B values are written or not. * @param alpha whether A values are written or not. */ public void glColorMask(boolean red, boolean green, boolean blue, boolean alpha); /** *

Reference Page

*

* Compiles a shader object. * * @param shader the shader object to be compiled. */ public void glCompileShader(int shader); /** *

Reference Page

*

* Specifies a two-dimensional texture image in a compressed format. * * @param target the target texture. * @param level the level-of-detail number. Level 0 is the base image level. Level n is the nth mipmap reduction image. * @param internalFormat the format of the compressed image data. * @param width the width of the texture image * @param height the height of the texture image * @param border must be 0 * @param data a pointer to the compressed image data */ public void glCompressedTexImage2D(int target, int level, int internalFormat, int width, int height, int border, ByteBuffer data); /** *

Reference Page

* * Respecifies only a rectangular subregion of an existing 2D texel array, with incoming data stored in a specific compressed image format. * * @param target the target texture. * @param level the level-of-detail number. Level 0 is the base image level. Level n is the nth mipmap reduction image. * @param xoffset a texel offset in the x direction within the texture array. * @param yoffset a texel offset in the y direction within the texture array. * @param width the width of the texture subimage. * @param height the height of the texture subimage. * @param format the format of the compressed image data stored at address {@code data}. * @param data a pointer to the compressed image data. */ public void glCompressedTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, ByteBuffer data); /** *

Reference Page

* * Creates a program object. * * @return the ID of the new program, or 0 if unsuccessful */ public int glCreateProgram(); /** *

Reference Page

* * Creates a shader object. * * @param shaderType the type of shader to be created. One of: * {@link #GL_VERTEX_SHADER VERTEX_SHADER} * {@link #GL_FRAGMENT_SHADER FRAGMENT_SHADER} * {@link GL3#GL_GEOMETRY_SHADER GEOMETRY_SHADER} * {@link GL4#GL_TESS_CONTROL_SHADER TESS_CONTROL_SHADER} * {@link GL4#GL_TESS_EVALUATION_SHADER TESS_EVALUATION_SHADER} * @return the ID of the new shader, or 0 if unsuccessful */ public int glCreateShader(int shaderType); /** *

Reference Page

*

* Specifies which polygon faces are culled if {@link #GL_CULL_FACE CULL_FACE} is enabled. Front-facing polygons are rasterized if either culling is disabled or the * CullFace mode is {@link #GL_BACK BACK} while back-facing polygons are rasterized only if either culling is disabled or the CullFace mode is * {@link #GL_FRONT FRONT}. The initial setting of the CullFace mode is {@link #GL_BACK BACK}. Initially, culling is disabled. * * @param mode the CullFace mode. One of: * {@link #GL_FRONT FRONT} * {@link #GL_BACK BACK} * {@link #GL_FRONT_AND_BACK FRONT_AND_BACK} */ public void glCullFace(int mode); /** *

Reference Page

*

* Deletes named buffer objects. * * @param buffers an array of buffer objects to be deleted. */ public void glDeleteBuffers(IntBuffer buffers); /** *

Reference Page

*

* Deletes a program object. * * @param program the program object to be deleted. */ public void glDeleteProgram(int program); /** *

Reference Page

*

* Deletes a shader object. * * @param shader the shader object to be deleted. */ public void glDeleteShader(int shader); /** *

Reference Page

*

* Deletes texture objects. After a texture object is deleted, it has no contents or dimensionality, and its name is again unused. If a texture that is * currently bound to any of the target bindings of {@link #glBindTexture BindTexture} is deleted, it is as though {@link #glBindTexture BindTexture} had been executed with the * same target and texture zero. Additionally, special care must be taken when deleting a texture if any of the images of the texture are attached to a * framebuffer object. * *

Unused names in textures that have been marked as used for the purposes of {@link #glGenTextures GenTextures} are marked as unused again. Unused names in textures are * silently ignored, as is the name zero.

* * @param textures contains {@code n} names of texture objects to be deleted. */ public void glDeleteTextures(IntBuffer textures); /** *

Reference Page

*

* Specifies the comparison that takes place during the depth buffer test (when {@link #GL_DEPTH_TEST DEPTH_TEST} is enabled). * * @param func the depth test comparison. One of: * {@link #GL_NEVER NEVER} * {@link #GL_ALWAYS ALWAYS} * {@link #GL_LESS LESS} * {@link #GL_LEQUAL LEQUAL} * {@link #GL_EQUAL EQUAL} * {@link #GL_GREATER GREATER} * {@link #GL_GEQUAL GEQUAL} * {@link #GL_NOTEQUAL NOTEQUAL} */ public void glDepthFunc(int func); /** *

Reference Page

*

* Masks the writing of depth values to the depth buffer. In the initial state, the depth buffer is enabled for writing. * * @param flag whether depth values are written or not. */ public void glDepthMask(boolean flag); /** *

Reference Page

*

* Sets the depth range for all viewports to the same values. * * @param nearVal the near depth range. * @param farVal the far depth range. */ public void glDepthRange(double nearVal, double farVal); /** *

Reference Page

*

* Detaches a shader object from a program object to which it is attached. * * @param program the program object from which to detach the shader object. * @param shader the shader object to be detached. */ public void glDetachShader(int program, int shader); /** *

Reference Page

*

* Disables the specified OpenGL state. * * @param cap the OpenGL state to disable. */ public void glDisable(int cap); /** *

Reference Page

*

* Disables a generic vertex attribute array. * * @param index the index of the generic vertex attribute to be disabled. */ public void glDisableVertexAttribArray(int index); /** *

Reference Page

*

* Constructs a sequence of geometric primitives by successively transferring elements for {@code count} vertices. Elements {@code first} through * first + count – 1 of each enabled non-instanced array are transferred to the GL. * *

If an array corresponding to an attribute required by a vertex shader is not enabled, then the corresponding element is taken from the current attribute * state. If an array is enabled, the corresponding current vertex attribute value is unaffected by the execution of this function.

* * @param mode the kind of primitives being constructed. * @param first the first vertex to transfer to the GL. * @param count the number of vertices after {@code first} to transfer to the GL. */ public void glDrawArrays(int mode, int first, int count); /** *

Reference Page

* *

Implementations denote recommended maximum amounts of vertex and index data, which may be queried by calling glGet with argument * {@link GL2#GL_MAX_ELEMENTS_VERTICES MAX_ELEMENTS_VERTICES} and {@link GL2#GL_MAX_ELEMENTS_INDICES MAX_ELEMENTS_INDICES}. If end - start + 1 is greater than the value of GL_MAX_ELEMENTS_VERTICES, or if * count is greater than the value of GL_MAX_ELEMENTS_INDICES, then the call may operate at reduced performance. There is no requirement that all vertices * in the range start end be referenced. However, the implementation may partially process unused vertices, reducing performance from what could be * achieved with an optimal index set.

* *

When glDrawRangeElements is called, it uses count sequential elements from an enabled array, starting at start to construct a sequence of geometric * primitives. mode specifies what kind of primitives are constructed, and how the array elements construct these primitives. If more than one array is * enabled, each is used.

* *

Vertex attributes that are modified by glDrawRangeElements have an unspecified value after glDrawRangeElements returns. Attributes that aren't modified * maintain their previous values.

* * Errors * *

It is an error for indices to lie outside the range start end, but implementations may not check for this situation. Such indices cause * implementation-dependent behavior.

* *
    *
  • GL_INVALID_ENUM is generated if mode is not an accepted value.
  • *
  • GL_INVALID_VALUE is generated if count is negative.
  • *
  • GL_INVALID_VALUE is generated if end < start.
  • *
  • GL_INVALID_OPERATION is generated if a geometry shader is active and mode is incompatible with the input primitive type of the geometry shader in the * currently installed program object.
  • *
  • GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to an enabled array or the element array and the buffer object's data * store is currently mapped.
  • *
* * @param mode the kind of primitives to render. * @param start the minimum array index contained in {@code indices}. * @param end the maximum array index contained in {@code indices}. * @param count the number of elements to be rendered. * @param type the type of the values in {@code indices}. * @param indices a pointer to the location where the indices are stored. */ public void glDrawRangeElements(int mode, int start, int end, int count, int type, long indices); /// GL2+ /** *

Reference Page

*

* Enables the specified OpenGL state. * * @param cap the OpenGL state to enable. */ public void glEnable(int cap); /** *

Reference Page

*

* Enables a generic vertex attribute array. * * @param index the index of the generic vertex attribute to be enabled. */ public void glEnableVertexAttribArray(int index); /** *

Reference Page

*

* Marks the end of the sequence of commands to be tracked for the active query specified by {@code target}. * * @param target the query object target. */ public void glEndQuery(int target); /** *

Reference Page

*

* Generates buffer object names. * * @param buffers a buffer in which the generated buffer object names are stored. */ public void glGenBuffers(IntBuffer buffers); /** *

Reference Page

*

* Returns n previously unused texture names in textures. These names are marked as used, for the purposes of GenTextures only, but they acquire texture * state and a dimensionality only when they are first bound, just as if they were unused. * * @param textures a scalar or buffer in which to place the returned texture names. */ public void glGenTextures(IntBuffer textures); /** *

Reference Page

* * Generates query object names. * * @param number the number of query object names to be generated * @param ids a buffer in which the generated query object names are stored. */ public void glGenQueries(int number, IntBuffer ids); /** *

Reference Page

* * Returns the location of an attribute variable. * * @param program the program object to be queried. * @param name a null terminated string containing the name of the attribute variable whose location is to be queried. * @return the location */ public int glGetAttribLocation(int program, String name); /** *

Reference Page

* * Returns the current boolean value of the specified state variable. * *

LWJGL note: The state that corresponds to the state variable may be a single value or an array of values. In the case of an array of values, * LWJGL will not validate if {@code params} has enough space to store that array. Doing so would introduce significant overhead, as the * OpenGL state variables are too many. It is the user's responsibility to avoid JVM crashes by ensuring enough space for the returned values.

* * @param pname the state variable. * @param params a scalar or buffer in which to place the returned data. */ public void glGetBoolean(int pname, ByteBuffer params); /** *

Reference Page

* * Returns a subset of a buffer object's data store. * * @param target the target buffer object. * @param offset the offset into the buffer object's data store from which data will be returned, measured in bytes. * @param data a pointer to the location where buffer object data is returned. */ public void glGetBufferSubData(int target, long offset, ByteBuffer data); /** *

Reference Page

* * Returns error information. Each detectable error is assigned a numeric code. When an error is detected, a flag is set and the code is recorded. Further * errors, if they occur, do not affect this recorded code. When {@code GetError} is called, the code is returned and the flag is cleared, so that a * further error will again record its code. If a call to {@code GetError} returns {@link #GL_NO_ERROR NO_ERROR}, then there has been no detectable error since * the last call to {@code GetError} (or since the GL was initialized). * @return the error code, or NO_ERROR if none */ public int glGetError(); /** * Determine the current single-precision floating-point value(s) of the * specified parameter. * * @param parameterId which parameter * @param storeValues storage for the value(s) */ public void glGetFloat(int parameterId, FloatBuffer storeValues); /** *

Reference Page

* * Returns the current integer value of the specified state variable. * *

LWJGL note: The state that corresponds to the state variable may be a single value or an array of values. In the case of an array of values, * LWJGL will not validate if {@code params} has enough space to store that array. Doing so would introduce significant overhead, as the * OpenGL state variables are too many. It is the user's responsibility to avoid JVM crashes by ensuring enough space for the returned values.

* * @param pname the state variable. * @param params a scalar or buffer in which to place the returned data. */ public void glGetInteger(int pname, IntBuffer params); /** *

Reference Page

*

* Returns a parameter from a program object. * * @param program the program object to be queried. * @param pname the object parameter. * @param params the requested object parameter. */ public void glGetProgram(int program, int pname, IntBuffer params); /** *

Reference Page

*

* Returns the information log for a program object. * * @param program the program object whose information log is to be queried. * @param maxSize the size of the character buffer for storing the returned information log. * @return the contents of the information log */ public String glGetProgramInfoLog(int program, int maxSize); /** * Unsigned version. * * @param query the name of a query object * @param pname the symbolic name of a query object parameter * @return the value of the parameter */ public long glGetQueryObjectui64(int query, int pname); /** *

Reference Page

*

* Returns the integer value of a query object parameter. * * @param query the name of a query object * @param pname the symbolic name of a query object parameter. One of: * {@link #GL_QUERY_RESULT QUERY_RESULT} * {@link #GL_QUERY_RESULT_AVAILABLE QUERY_RESULT_AVAILABLE} * @return the value of the parameter */ public int glGetQueryObjectiv(int query, int pname); /** *

Reference Page

*

* Returns a parameter from a shader object. * * @param shader the shader object to be queried. * @param pname the object parameter. * @param params the requested object parameter. */ public void glGetShader(int shader, int pname, IntBuffer params); /** *

Reference Page

*

* Returns the information log for a shader object. * * @param shader the shader object whose information log is to be queried. * @param maxSize the size of the character buffer for storing the returned information log. * @return the contents of the information log */ public String glGetShaderInfoLog(int shader, int maxSize); /** *

Reference Page

*

* Return strings describing properties of the current GL context. * * @param name the property to query. One of: * {@link #GL_RENDERER RENDERER} * {@link #GL_VENDOR VENDOR} * {@link #GL_EXTENSIONS EXTENSIONS} * {@link #GL_VERSION VERSION} * {@link GL2#GL_SHADING_LANGUAGE_VERSION SHADING_LANGUAGE_VERSION} * @return the value of the property */ public String glGetString(int name); /** *

Reference Page

*

* Returns the location of a uniform variable. * * @param program the program object to be queried. * @param name a null terminated string containing the name of the uniform variable whose location is to be queried. * @return the location */ public int glGetUniformLocation(int program, String name); /** *

Reference Page

*

* Determines if {@code cap} is currently enabled (as with {@link #glEnable Enable}) or disabled. * * @param cap the enable state to query. * @return true if enabled, otherwise false */ public boolean glIsEnabled(int cap); /** *

Reference Page

* * Sets the width of rasterized line segments. The default width is 1.0. * * @param width the line width. */ public void glLineWidth(float width); /** *

Reference Page

* * Links a program object. * * @param program the program object to be linked. */ public void glLinkProgram(int program); /** *

Reference Page

*

* Sets the integer value of a pixel store parameter. * * @param pname the pixel store parameter to set. * @param param the parameter value */ public void glPixelStorei(int pname, int param); /** *

Reference Page

* * The depth values of all fragments generated by the rasterization of a polygon may be offset by a single value that is computed for that polygon. This * function determines that value. * *

{@code factor} scales the maximum depth slope of the polygon, and {@code units} scales an implementation-dependent constant that relates to the usable * resolution of the depth buffer. The resulting values are summed to produce the polygon offset value.

* * @param factor the maximum depth slope factor. * @param units the constant scale. */ public void glPolygonOffset(float factor, float units); /** *

Reference Page

*

* ReadPixels obtains values from the selected read buffer from each pixel with lower left hand corner at {@code (x + i, y + j)} for {@code 0 <= i < width} * and {@code 0 <= j < height}; this pixel is said to be the ith pixel in the jth row. If any of these pixels lies outside of the * window allocated to the current GL context, or outside of the image attached to the currently bound read framebuffer object, then the values obtained * for those pixels are undefined. When {@link GLFbo#GL_READ_FRAMEBUFFER_BINDING_EXT READ_FRAMEBUFFER_BINDING} is zero, values are also undefined for individual pixels that are not owned by * the current context. Otherwise, {@code ReadPixels} obtains values from the selected buffer, regardless of how those values were placed there. * * @param x the left pixel coordinate * @param y the lower pixel coordinate * @param width the number of pixels to read in the x-dimension * @param height the number of pixels to read in the y-dimension * @param format the pixel format. * @param type the pixel type. * @param data a buffer in which to place the returned pixel data. */ public void glReadPixels(int x, int y, int width, int height, int format, int type, ByteBuffer data); /** *

Reference Page

*

* ReadPixels obtains values from the selected read buffer from each pixel with lower left hand corner at {@code (x + i, y + j)} for {@code 0 <= i < width} * and {@code 0 <= j < height}; this pixel is said to be the ith pixel in the jth row. If any of these pixels lies outside of the * window allocated to the current GL context, or outside of the image attached to the currently bound read framebuffer object, then the values obtained * for those pixels are undefined. When {@link GLFbo#GL_READ_FRAMEBUFFER_BINDING_EXT READ_FRAMEBUFFER_BINDING} is zero, values are also undefined for individual pixels that are not owned by * the current context. Otherwise, {@code ReadPixels} obtains values from the selected buffer, regardless of how those values were placed there. * * @param x the left pixel coordinate * @param y the lower pixel coordinate * @param width the number of pixels to read in the x-dimension * @param height the number of pixels to read in the y-dimension * @param format the pixel format. * @param type the pixel type. * @param offset a buffer in which to place the returned pixel data/ */ public void glReadPixels(int x, int y, int width, int height, int format, int type, long offset); /** *

Reference Page

*

* Defines the scissor rectangle for all viewports. The scissor test is enabled or disabled for all viewports using {@link #glEnable Enable} or {@link #glDisable Disable} * with the symbolic constant {@link #GL_SCISSOR_TEST SCISSOR_TEST}. When disabled, it is as if the scissor test always passes. When enabled, if * left <= xw < left + width and bottom <= yw < bottom + height for the scissor rectangle, then the scissor * test passes. Otherwise, the test fails and the fragment is discarded. * * @param x the left scissor rectangle coordinate. * @param y the bottom scissor rectangle coordinate. * @param width the scissor rectangle width. * @param height the scissor rectangle height. */ public void glScissor(int x, int y, int width, int height); /** *

Reference Page

*

* Sets the source code in {@code shader} to the source code in the array of strings specified by {@code strings}. Any source code previously stored in the * shader object is completely replaced. The number of strings in the array is specified by {@code count}. If {@code length} is {@code NULL}, each string is * assumed to be null terminated. If {@code length} is a value other than {@code NULL}, it points to an array containing a string length for each of the * corresponding elements of {@code strings}. Each element in the length array may contain the length of the corresponding string (the null character is not * counted as part of the string length) or a value less than 0 to indicate that the string is null terminated. The source code strings are not scanned or * parsed at this time; they are simply copied into the specified shader object. * * @param shader the shader object whose source code is to be replaced, * @param strings an array of pointers to strings containing the source code to be loaded into the shader * @param length storage for the string lengths, or null for * null-terminated strings */ public void glShaderSource(int shader, String[] strings, IntBuffer length); /** *

Reference Page

*

* Sets front and/or back function and reference value for stencil testing. * * @param face whether front and/or back stencil state is updated. One of: * {@link GL#GL_FRONT FRONT} * {@link GL#GL_BACK BACK} * {@link GL#GL_FRONT_AND_BACK FRONT_AND_BACK} * @param func the test function. The initial value is GL_ALWAYS. One of: * {@link GL#GL_NEVER NEVER} * {@link GL#GL_LESS LESS} * {@link GL#GL_LEQUAL LEQUAL} * {@link GL#GL_GREATER GREATER} * {@link GL#GL_GEQUAL GEQUAL} * {@link GL#GL_EQUAL EQUAL} * {@link GL#GL_NOTEQUAL NOTEQUAL} * {@link GL#GL_ALWAYS ALWAYS} * @param ref the reference value for the stencil test. {@code ref} is clamped to the range [0, 2n – 1], where {@code n} is the number of bitplanes in the stencil * buffer. The initial value is 0. * @param mask a mask that is ANDed with both the reference value and the stored stencil value when the test is done. The initial value is all 1's. */ public void glStencilFuncSeparate(int face, int func, int ref, int mask); /** *

Reference Page

*

* Sets front and/or back stencil test actions. * * @param face whether front and/or back stencil state is updated. One of: * {@link GL#GL_FRONT FRONT} * {@link GL#GL_BACK BACK} * {@link GL#GL_FRONT_AND_BACK FRONT_AND_BACK} * @param sfail the action to take when the stencil test fails. The initial value is GL_KEEP. One of: * {@link GL#GL_KEEP KEEP} * {@link GL#GL_ZERO ZERO} * {@link GL#GL_REPLACE REPLACE} * {@link GL#GL_INCR INCR} * {@link GL#GL_INCR_WRAP INCR_WRAP} * {@link GL#GL_DECR DECR} * {@link GL#GL_DECR_WRAP DECR_WRAP} * {@link GL#GL_INVERT INVERT} * @param dpfail the stencil action when the stencil test passes, but the depth test fails. The initial value is GL_KEEP. * @param dppass the stencil action when both the stencil test and the depth test pass, or when the stencil test passes and either there is no depth buffer or depth * testing is not enabled. The initial value is GL_KEEP. */ public void glStencilOpSeparate(int face, int sfail, int dpfail, int dppass); /** *

Reference Page

*

* Specifies a two-dimensional texture image. * * @param target the texture target. * @param level the level-of-detail number. * @param internalFormat the texture internal format. * @param width the texture width. * @param height the texture height. * @param border the texture border width. * @param format the texel data format. * @param type the texel data type. * @param data the texel data. */ public void glTexImage2D(int target, int level, int internalFormat, int width, int height, int border, int format, int type, ByteBuffer data); /** *

Reference Page

*

* Float version of {@link #glTexParameteri TexParameteri}. * * @param target the texture target. * @param pname the parameter to set. * @param param the parameter value. */ public void glTexParameterf(int target, int pname, float param); /** *

Reference Page

*

* Sets the integer value of a texture parameter, which controls how the texel array is treated when specified or changed, and when applied to a fragment. * * @param target the texture target. * @param pname the parameter to set. * @param param the parameter value. */ public void glTexParameteri(int target, int pname, int param); /** *

Reference Page

*

* Respecifies a rectangular subregion of an existing texel array. No change is made to the internalformat, width, height, depth, or border parameters of * the specified texel array, nor is any change made to texel values outside the specified subregion. * * @param target the texture target. * @param level the level-of-detail-number * @param xoffset the left coordinate of the texel subregion * @param yoffset the bottom coordinate of the texel subregion * @param width the subregion width * @param height the subregion height * @param format the pixel data format. * @param type the pixel data type. * @param data the pixel data. */ public void glTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, int type, ByteBuffer data); /** *

Reference Page

*

* Specifies the value of a single float uniform variable or a float uniform variable array for the current program object. * * @param location the location of the uniform variable to be modified. * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable. */ public void glUniform1(int location, FloatBuffer value); /** *

Reference Page

*

* Specifies the value of a single int uniform variable or an int uniform variable array for the current program object. * * @param location the location of the uniform variable to be modified. * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable. */ public void glUniform1(int location, IntBuffer value); /** *

Reference Page

*

* Specifies the value of a float uniform variable for the current program object. * * @param location the location of the uniform variable to be modified. * @param v0 the uniform value. */ public void glUniform1f(int location, float v0); /** *

Reference Page

*

* Specifies the value of an int uniform variable for the current program object. * * @param location the location of the uniform variable to be modified. * @param v0 the uniform value. */ public void glUniform1i(int location, int v0); /** *

Reference Page

*

* Specifies the value of a single ivec2 uniform variable or an ivec2 uniform variable array for the current program object. * * @param location the location of the uniform variable to be modified. * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable. */ public void glUniform2(int location, IntBuffer value); /** *

Reference Page

*

* Specifies the value of a single vec2 uniform variable or a vec2 uniform variable array for the current program object. * * @param location the location of the uniform variable to be modified. * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable. */ public void glUniform2(int location, FloatBuffer value); /** *

Reference Page

*

* Specifies the value of a vec2 uniform variable for the current program object. * * @param location the location of the uniform variable to be modified. * @param v0 the uniform x value. * @param v1 the uniform y value. */ public void glUniform2f(int location, float v0, float v1); /** *

Reference Page

*

* Specifies the value of a single ivec3 uniform variable or an ivec3 uniform variable array for the current program object. * * @param location the location of the uniform variable to be modified. * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable. */ public void glUniform3(int location, IntBuffer value); /** *

Reference Page

*

* Specifies the value of a single vec3 uniform variable or a vec3 uniform variable array for the current program object. * * @param location the location of the uniform variable to be modified. * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable. */ public void glUniform3(int location, FloatBuffer value); /** *

Reference Page

*

* Specifies the value of a vec3 uniform variable for the current program object. * * @param location the location of the uniform variable to be modified. * @param v0 the uniform x value. * @param v1 the uniform y value. * @param v2 the uniform z value. */ public void glUniform3f(int location, float v0, float v1, float v2); /** *

Reference Page

*

* Specifies the value of a single vec4 uniform variable or a vec4 uniform variable array for the current program object. * * @param location the location of the uniform variable to be modified. * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable. */ public void glUniform4(int location, FloatBuffer value); /** *

Reference Page

*

* Specifies the value of a single ivec4 uniform variable or an ivec4 uniform variable array for the current program object. * * @param location the location of the uniform variable to be modified. * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable. */ public void glUniform4(int location, IntBuffer value); /** *

Reference Page

*

* Specifies the value of a vec4 uniform variable for the current program object. * * @param location the location of the uniform variable to be modified. * @param v0 the uniform x value. * @param v1 the uniform y value. * @param v2 the uniform z value. * @param v3 the uniform w value. */ public void glUniform4f(int location, float v0, float v1, float v2, float v3); /** *

Reference Page

*

* Specifies the value of a single mat3 uniform variable or a mat3 uniform variable array for the current program object. * * @param location the location of the uniform variable to be modified. * @param transpose whether to transpose the matrix as the values are loaded into the uniform variable. * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable. */ public void glUniformMatrix3(int location, boolean transpose, FloatBuffer value); /** *

Reference Page

*

* Specifies the value of a single mat4 uniform variable or a mat4 uniform variable array for the current program object. * * @param location the location of the uniform variable to be modified. * @param transpose whether to transpose the matrix as the values are loaded into the uniform variable. * @param value a pointer to an array of {@code count} values that will be used to update the specified uniform variable. */ public void glUniformMatrix4(int location, boolean transpose, FloatBuffer value); /** *

Reference Page

*

* Installs a program object as part of current rendering state. * * @param program the program object whose executables are to be used as part of current rendering state. */ public void glUseProgram(int program); /** *

Reference Page

*

* Specifies the location and organization of a vertex attribute array. * * @param index the index of the generic vertex attribute to be modified * @param size the number of values per vertex that are stored in the array. * @param type the data type of each component in the array. The initial value is GL_FLOAT. * @param normalized whether fixed-point data values should be normalized or converted directly as fixed-point values when they are accessed * @param stride the byte offset between consecutive generic vertex attributes. If stride is 0, the generic vertex attributes are understood to be tightly packed in * the array. The initial value is 0. * @param pointer the vertex attribute data or the offset of the first component of the first generic vertex attribute in the array in the data store of the buffer * currently bound to the {@link GL#GL_ARRAY_BUFFER ARRAY_BUFFER} target. The initial value is 0. */ public void glVertexAttribPointer(int index, int size, int type, boolean normalized, int stride, long pointer); /** *

Reference Page

* * Specifies the viewport transformation parameters for all viewports. * *

In the initial state, {@code width} and {@code height} for each viewport are set to the width and height, respectively, of the window into which the GL is to do * its rendering. If the default framebuffer is bound but no default framebuffer is associated with the GL context, then {@code width} and {@code height} are * initially set to zero.

* * @param x the left viewport coordinate. * @param y the bottom viewport coordinate. * @param width the viewport width. * @param height the viewport height. */ public void glViewport(int x, int y, int width, int height); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy