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

org.lwjgl.opengl.ARBFramebufferObject Maven / Gradle / Ivy

/*
 * Copyright LWJGL. All rights reserved.
 * License terms: https://www.lwjgl.org/license
 * MACHINE GENERATED FILE, DO NOT EDIT
 */
package org.lwjgl.opengl;

import java.nio.*;

import org.lwjgl.system.*;

import static org.lwjgl.system.Checks.*;
import static org.lwjgl.system.JNI.*;
import static org.lwjgl.system.MemoryStack.*;
import static org.lwjgl.system.MemoryUtil.*;

/**
 * Native bindings to the ARB_framebuffer_object extension.
 * 
 * 

ARB_framebuffer_object is an extension intended to address the following goals:

* *
    *
  • Reflect FBO-related functionality found in the OpenGL 3.0 specification.
  • *
  • Integrate multiple disjoint extensions into a single ARB extension. These extensions are: * *
  • *
  • Where appropriate, relax some of the constraints expressed by previous FBO-related extensions. In particular the requirement of matching attachment * dimensions and component sizes has been relaxed, to allow implementations the freedom to support more flexible usages where possible.
  • *
* *

ARB_framebuffer_object defines an interface for drawing to rendering destinations other than the buffers provided to the GL by the window-system.

* *

In this extension, these newly defined rendering destinations are known collectively as "framebuffer-attachable images". This extension provides a * mechanism for attaching framebuffer-attachable images to the GL framebuffer as one of the standard GL logical buffers: color, depth, and stencil. * (Attaching a framebuffer-attachable image to the accum logical buffer is left for a future extension to define). When a framebuffer-attachable image is * attached to the framebuffer, it is used as the source and destination of fragment operations as described in Chapter 4.

* *

By allowing the use of a framebuffer-attachable image as a rendering destination, this extension enables a form of "offscreen" rendering. Furthermore, * "render to texture" is supported by allowing the images of a texture to be used as framebuffer-attachable images. A particular image of a texture object * is selected for use as a framebuffer-attachable image by specifying the mipmap level, cube map face (for a cube map texture), and layer (for a 3D * texture) that identifies the image. The "render to texture" semantics of this extension are similar to performing traditional rendering to the * framebuffer, followed immediately by a call to CopyTexSubImage. However, by using this extension instead, an application can achieve the same * effect, but with the advantage that the GL can usually eliminate the data copy that would have been incurred by calling CopyTexSubImage.

* *

This extension also defines a new GL object type, called a "renderbuffer", which encapsulates a single 2D pixel image. The image of renderbuffer can be * used as a framebuffer-attachable image for generalized offscreen rendering and it also provides a means to support rendering to GL logical buffer types * which have no corresponding texture format (stencil, accum, etc). A renderbuffer is similar to a texture in that both renderbuffers and textures can be * independently allocated and shared among multiple contexts. The framework defined by this extension is general enough that support for attaching images * from GL objects other than textures and renderbuffers could be added by layered extensions.

* *

To facilitate efficient switching between collections of framebuffer-attachable images, this extension introduces another new GL object, called a * framebuffer object. A framebuffer object contains the state that defines the traditional GL framebuffer, including its set of images. Prior to this * extension, it was the window-system which defined and managed this collection of images, traditionally by grouping them into a "drawable". The * window-system API's would also provide a function (i.e., {@link WGL#wglMakeCurrent}, {@link GLX#glXMakeCurrent}, aglSetDrawable, etc.) to bind a drawable with a GL * context (as is done in the {@link WGLARBPbuffer WGL_ARB_pbuffer} extension). In this extension however, this functionality is subsumed by the GL and the GL provides * the function BindFramebuffer to bind a framebuffer object to the current context. Later, the context can bind back to the window-system-provided * framebuffer in order to display rendered content.

* *

Previous extensions that enabled rendering to a texture have been much more complicated. One example is the combination of {@code ARB_pbuffer} and * {@code ARB_render_texture}, both of which are window-system extensions. This combination requires calling {@code MakeCurrent}, an operation that may be * expensive, to switch between the window and the pbuffer drawables. An application must create one pbuffer per renderable texture in order to portably * use {@code ARB_render_texture}. An application must maintain at least one GL context per texture format, because each context can only operate on a * single pixelformat or {@code FBConfig}. All of these characteristics make {@code ARB_render_texture} both inefficient and cumbersome to use.

* *

ARB_framebuffer_object, on the other hand, is both simpler to use and more efficient than ARB_render_texture. The ARB_framebuffer_object API is * contained wholly within the GL API and has no (non-portable) window-system components. Under ARB_framebuffer_object, it is not necessary to create a * second GL context when rendering to a texture image whose format differs from that of the window. Finally, unlike the pbuffers of * {@code ARB_render_texture}, a single framebuffer object can facilitate rendering to an unlimited number of texture objects.

* *

This extension differs from EXT_framebuffer_object by splitting the framebuffer object binding point into separate DRAW and READ bindings (incorporating * functionality introduced by EXT_framebuffer_blit). This allows copying directly from one framebuffer to another. In addition, a new high performance * blit function is added to facilitate these blits and perform some data conversion where allowed.

* *

This extension also enables usage of multisampling in conjunction with renderbuffers (incorporating functionality from EXT_packed_depth_stencil), as * follows:

* *

The new operation RenderbufferStorageMultisample() allocates storage for a renderbuffer object that can be used as a multisample buffer. A multisample * render buffer image differs from a single-sample render buffer image in that a multisample image has a number of {@link GL13#GL_SAMPLES SAMPLES} that is greater than zero. * No method is provided for creating multisample texture images.

* *

All of the framebuffer-attachable images attached to a framebuffer object must have the same number of {@link GL13#GL_SAMPLES SAMPLES} or else the framebuffer object is * not "framebuffer complete". If a framebuffer object with multisample attachments is "framebuffer complete", then the framebuffer object behaves as if * {@link GL13#GL_SAMPLE_BUFFERS SAMPLE_BUFFERS} is one.

* *

In traditional multisample rendering, where {@link #GL_DRAW_FRAMEBUFFER_BINDING DRAW_FRAMEBUFFER_BINDING} is zero and {@link GL13#GL_SAMPLE_BUFFERS SAMPLE_BUFFERS} is one, the GL spec states that "the color sample * values are resolved to a single, displayable color each time a pixel is updated." There are, however, several modern hardware implementations that do * not actually resolve for each sample update, but instead postpones the resolve operation to a later time and resolve a batch of sample updates at a * time. This is OK as long as the implementation behaves "as if" it had resolved a sample-at-a-time. Unfortunately, however, honoring the "as if" rule can * sometimes degrade performance.

* *

In contrast, when {@link #GL_DRAW_FRAMEBUFFER_BINDING DRAW_FRAMEBUFFER_BINDING} is an application-created framebuffer object, {@link GL13#GL_MULTISAMPLE MULTISAMPLE} is enabled, and {@link GL13#GL_SAMPLE_BUFFERS SAMPLE_BUFFERS} is one, * there is no implicit per-sample-update resolve. Instead, the application explicitly controls when the resolve operation is performed. The resolve * operation is affected by calling BlitFramebuffer where the source is a multisample application-created framebuffer object and the destination is a * single-sample framebuffer object (either application-created or window-system provided).

* *

This design for multisample resolve more closely matches current hardware, but still permits implementations which choose to resolve a single sample at * a time. If hardware that implements the multisample resolution "one sample at a time" exposes ARB_framebuffer_object, it could perform the implicit * resolve to a driver-managed hidden surface, then read from that surface when the application calls BlitFramebuffer.

* *

Another motivation for granting the application explicit control over the multisample resolve operation has to do with the flexibility afforded by * ARB_framebuffer_object. Previously, a drawable (window or pbuffer) had exclusive access to all of its buffers. There was no mechanism for sharing a * buffer across multiple drawables. Under ARB_framebuffer_object, however, a mechanism exists for sharing a framebuffer-attachable image across several * framebuffer objects, as well as sharing an image between a framebuffer object and a texture. If we had retained the "implicit" resolve from traditional * multisampled rendering, and allowed the creation of "multisample" format renderbuffers, then this type of sharing would have lead to two problematic * situations:

* *
    *
  • Two contexts, which shared renderbuffers, might perform competing resolve operations into the same single-sample buffer with ambiguous results.
  • *
  • It would have introduced the unfortunate ability to use the single-sample buffer as a texture while {@link GL13#GL_MULTISAMPLE MULTISAMPLE} is enabled.
  • *
* *

Using {@link #glBlitFramebuffer BlitFramebuffer} as an explicit resolve to serialize access to the multisampled contents and eliminate the implicit per-sample resolve operation, we avoid both of these problems.

* *

This extension also enables usage of packed depth-stencil formats in renderbuffers (incorporating functionality from EXT_packed_depth_stencil), as * follows:

* *

Many OpenGL implementations have chosen to interleave the depth and stencil buffers into one buffer, often with 24 bits of depth precision and 8 bits of * stencil data. 32 bits is more than is needed for the depth buffer much of the time; a 24-bit depth buffer, on the other hand, requires that reads and * writes of depth data be unaligned with respect to power-of-two boundaries. On the other hand, 8 bits of stencil data is more than sufficient for most * applications, so it is only natural to pack the two buffers into a single buffer with both depth and stencil data. OpenGL never provides direct access * to the buffers, so the OpenGL implementation can provide an interface to applications where it appears the one merged buffer is composed of two logical buffers.

* *

One disadvantage of this scheme is that OpenGL lacks any means by which this packed data can be handled efficiently. For example, when an application * reads from the 24-bit depth buffer, using the type {@link GL11#GL_UNSIGNED_SHORT UNSIGNED_SHORT} will lose 8 bits of data, while {@link GL11#GL_UNSIGNED_INT UNSIGNED_INT} has 8 too many. Both require * expensive format conversion operations. A 24-bit format would be no more suitable, because it would also suffer from the unaligned memory accesses that * made the standalone 24-bit depth buffer an unattractive proposition in the first place.

* *

Many applications, such as parallel rendering applications, may also wish to draw to or read back from both the depth and stencil buffers at the same * time. Currently this requires two separate operations, reducing performance. Since the buffers are interleaved, drawing to or reading from both should * be no more expensive than using just one; in some cases, it may even be cheaper.

* *

This extension provides a new data format, {@link #GL_DEPTH_STENCIL DEPTH_STENCIL}, that can be used with the {@link GL11#glDrawPixels DrawPixels}, {@link GL11#glReadPixels ReadPixels}, and {@link GL11#glCopyPixels CopyPixels} * commands, as well as a packed data type, {@link #GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8}, that is meant to be used with {@link #GL_DEPTH_STENCIL DEPTH_STENCIL}. No other data types are supported with * {@link #GL_DEPTH_STENCIL DEPTH_STENCIL}. If {@link ARBDepthTexture ARB_depth_texture} or SGIX_depth_texture is supported, {@link #GL_DEPTH_STENCIL DEPTH_STENCIL}/{@link #GL_UNSIGNED_INT_24_8 UNSIGNED_INT_24_8} data can also be used for textures; * this provides a more efficient way to supply data for a 24-bit depth texture.

* *

{@link #GL_DEPTH_STENCIL DEPTH_STENCIL} data, when passed through the pixel path, undergoes both depth and stencil operations. The depth data is scaled and biased by the current * {@link GL11#GL_DEPTH_SCALE DEPTH_SCALE} and {@link GL11#GL_DEPTH_BIAS DEPTH_BIAS}, while the stencil data is shifted and offset by the current {@link GL11#GL_INDEX_SHIFT INDEX_SHIFT} and {@link GL11#GL_INDEX_OFFSET INDEX_OFFSET}. The stencil * data is also put through the stencil-to-stencil pixel map.

* *

{@link GL11#glDrawPixels DrawPixels} of {@link #GL_DEPTH_STENCIL DEPTH_STENCIL} data operates similarly to that of {@link GL11#GL_STENCIL_INDEX STENCIL_INDEX} data, bypassing the OpenGL fragment pipeline entirely, unlike * the treatment of {@link GL11#GL_DEPTH_COMPONENT DEPTH_COMPONENT} data. The stencil and depth masks are applied, as are the pixel ownership and scissor tests, but all other * operations are skipped.

* *

{@link GL11#glReadPixels ReadPixels} of {@link #GL_DEPTH_STENCIL DEPTH_STENCIL} data reads back a rectangle from both the depth and stencil buffers.

* *

{@link GL11#glCopyPixels CopyPixels} of {@link #GL_DEPTH_STENCIL DEPTH_STENCIL} data copies a rectangle from both the depth and stencil buffers. Like glDrawPixels, it applies both the stencil and * depth masks but skips the remainder of the OpenGL fragment pipeline.

* *

glTex[Sub]Image[1,2,3]D of {@link #GL_DEPTH_STENCIL DEPTH_STENCIL} data loads depth and stencil data into a depth_stencil texture. {@link GL11#glGetTexImage GetTexImage} of {@link #GL_DEPTH_STENCIL DEPTH_STENCIL} data can be * used to retrieve depth and stencil data from a depth/stencil texture.

* *

In addition, a new base internal format, {@link #GL_DEPTH_STENCIL DEPTH_STENCIL}, can be used by both texture images and renderbuffer storage. When an image with a * {@link #GL_DEPTH_STENCIL DEPTH_STENCIL} internal format is attached to both the depth and stencil attachment points of a framebuffer object, then it becomes both the depth and * stencil buffers of the framebuffer. This fits nicely with hardware that interleaves both depth and stencil data into a single buffer. When a texture * with {@link #GL_DEPTH_STENCIL DEPTH_STENCIL} data is bound for texturing, only the depth component is accessible through the texture fetcher. The stencil data can be written * with TexImage or CopyTexImage, and can be read with {@link GL11#glGetTexImage GetTexImage}. When a {@link #GL_DEPTH_STENCIL DEPTH_STENCIL} image is attached to the stencil attachment of the bound * framebuffer object, the stencil data can be accessed through any operation that reads from or writes to the framebuffer's stencil buffer.

* *

Glossary of Helpful Terms

* *
    *
  • logical buffer – One of the color, depth, or stencil buffers of the framebuffer.
  • *
  • framebuffer: The collection of logical buffers and associated state defining where the output of GL rendering is directed.
  • *
  • texture: an object which consists of one or more 2D arrays of pixel images and associated state that can be used as a source of data during the texture-mapping process.
  • *
  • texture image – one of the 2D arrays of pixels that are part of a texture object. Texture images contain and define the texels of the * texture object.
  • *
  • renderbuffer – A new type of storage object which contains a single 2D array of pixels and associated state that can be used as a * destination for pixel data written during the rendering process.
  • *
  • renderbuffer image – The 2D array of pixels that is part of a renderbuffer object. A renderbuffer image contains and defines the pixels * of the renderbuffer object.
  • *
  • framebuffer-attachable image – A 2D pixel image that can be attached to one of the logical buffer attachment points of a framebuffer * object. Texture images and renderbuffer images are two examples of framebuffer-attachable images.
  • *
  • attachment point – The set of state which references a specific framebuffer-attachable image, and allows that framebuffer-attachable * image to be used to store the contents of a logical buffer of a framebuffer object. There is an attachment point state vector for each color, depth, * and stencil buffer of a framebuffer.
  • *
  • attach – The act of connecting one object to another object. * *

    An "attach" operation is similar to a "bind" operation in that both represent a reference to the attached or bound object for the purpose of * managing object lifetimes and both enable manipulation of the state of the attached or bound object.

    * *

    However, an "attach" is also different from a "bind" in that "binding" an unused object creates a new object, while "attaching" does not. * Additionally, "bind" establishes a connection between a context and an object, while "attach" establishes a connection between two objects.

    * *

    Finally, if object "A" is attached to object "B" and object "B" is bound to context "C", then in most respects, we treat "A" as if it is * implicitly bound to "C".

  • *
  • framebuffer attachment completeness – Similar to texture "mipmap" or "cube" completeness, defines a minimum set of criteria for * framebuffer attachment points.
  • *
  • framebuffer completeness – Similar to texture "mipmap cube completeness", defines a composite set of "completeness" requirements and * relationships among the attached framebuffer-attachable images.
  • *
* *

Promoted to core in {@link GL30 OpenGL 3.0}.

*/ public class ARBFramebufferObject { /** * Accepted by the {@code target} parameter of BindFramebuffer, CheckFramebufferStatus, FramebufferTexture{1D|2D|3D}, FramebufferRenderbuffer, and * GetFramebufferAttachmentParameteriv. */ public static final int GL_FRAMEBUFFER = 0x8D40, GL_READ_FRAMEBUFFER = 0x8CA8, GL_DRAW_FRAMEBUFFER = 0x8CA9; /** * Accepted by the {@code target} parameter of BindRenderbuffer, RenderbufferStorage, and GetRenderbufferParameteriv, and returned by * GetFramebufferAttachmentParameteriv. */ public static final int GL_RENDERBUFFER = 0x8D41; /** Accepted by the {@code internalformat} parameter of RenderbufferStorage. */ public static final int GL_STENCIL_INDEX1 = 0x8D46, GL_STENCIL_INDEX4 = 0x8D47, GL_STENCIL_INDEX8 = 0x8D48, GL_STENCIL_INDEX16 = 0x8D49; /** Accepted by the {@code pname} parameter of GetRenderbufferParameteriv. */ public static final int GL_RENDERBUFFER_WIDTH = 0x8D42, GL_RENDERBUFFER_HEIGHT = 0x8D43, GL_RENDERBUFFER_INTERNAL_FORMAT = 0x8D44, GL_RENDERBUFFER_RED_SIZE = 0x8D50, GL_RENDERBUFFER_GREEN_SIZE = 0x8D51, GL_RENDERBUFFER_BLUE_SIZE = 0x8D52, GL_RENDERBUFFER_ALPHA_SIZE = 0x8D53, GL_RENDERBUFFER_DEPTH_SIZE = 0x8D54, GL_RENDERBUFFER_STENCIL_SIZE = 0x8D55, GL_RENDERBUFFER_SAMPLES = 0x8CAB; /** Accepted by the {@code pname} parameter of GetFramebufferAttachmentParameteriv. */ public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1, GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2, GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3, GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4, GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210, GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211, GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212, GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213, GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214, GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215, GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216, GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217; /** Returned in {@code params} by GetFramebufferAttachmentParameteriv. */ public static final int GL_UNSIGNED_NORMALIZED = 0x8C17, GL_FRAMEBUFFER_DEFAULT = 0x8218, GL_INDEX = 0x8222; /** Accepted by the {@code attachment} parameter of FramebufferTexture{1D|2D|3D}, FramebufferRenderbuffer, and GetFramebufferAttachmentParameteriv. */ public static final int GL_COLOR_ATTACHMENT0 = 0x8CE0, GL_COLOR_ATTACHMENT1 = 0x8CE1, GL_COLOR_ATTACHMENT2 = 0x8CE2, GL_COLOR_ATTACHMENT3 = 0x8CE3, GL_COLOR_ATTACHMENT4 = 0x8CE4, GL_COLOR_ATTACHMENT5 = 0x8CE5, GL_COLOR_ATTACHMENT6 = 0x8CE6, GL_COLOR_ATTACHMENT7 = 0x8CE7, GL_COLOR_ATTACHMENT8 = 0x8CE8, GL_COLOR_ATTACHMENT9 = 0x8CE9, GL_COLOR_ATTACHMENT10 = 0x8CEA, GL_COLOR_ATTACHMENT11 = 0x8CEB, GL_COLOR_ATTACHMENT12 = 0x8CEC, GL_COLOR_ATTACHMENT13 = 0x8CED, GL_COLOR_ATTACHMENT14 = 0x8CEE, GL_COLOR_ATTACHMENT15 = 0x8CEF, GL_DEPTH_ATTACHMENT = 0x8D00, GL_STENCIL_ATTACHMENT = 0x8D20, GL_DEPTH_STENCIL_ATTACHMENT = 0x821A; /** Accepted by the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev. */ public static final int GL_MAX_SAMPLES = 0x8D57; /** Returned by CheckFramebufferStatus(). */ public static final int GL_FRAMEBUFFER_COMPLETE = 0x8CD5, GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6, GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7, GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB, GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC, GL_FRAMEBUFFER_UNSUPPORTED = 0x8CDD, GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56, GL_FRAMEBUFFER_UNDEFINED = 0x8219; /** Accepted by the {@code pname} parameters of GetIntegerv, GetFloatv, and GetDoublev. */ public static final int GL_FRAMEBUFFER_BINDING = 0x8CA6, GL_DRAW_FRAMEBUFFER_BINDING = 0x8CA6, GL_READ_FRAMEBUFFER_BINDING = 0x8CAA, GL_RENDERBUFFER_BINDING = 0x8CA7, GL_MAX_COLOR_ATTACHMENTS = 0x8CDF, GL_MAX_RENDERBUFFER_SIZE = 0x84E8; /** Returned by GetError(). */ public static final int GL_INVALID_FRAMEBUFFER_OPERATION = 0x506; /** * Accepted by the {@code format} parameter of DrawPixels, ReadPixels, TexImage1D, TexImage2D, TexImage3D, TexSubImage1D, TexSubImage2D, TexSubImage3D, and * GetTexImage, by the {@code type} parameter of CopyPixels, by the {@code internalformat} parameter of TexImage1D, TexImage2D, TexImage3D, CopyTexImage1D, * CopyTexImage2D, and RenderbufferStorage, and returned in the {@code data} parameter of GetTexLevelParameter and GetRenderbufferParameteriv. */ public static final int GL_DEPTH_STENCIL = 0x84F9; /** * Accepted by the {@code type} parameter of DrawPixels, ReadPixels, TexImage1D, TexImage2D, TexImage3D, TexSubImage1D, TexSubImage2D, TexSubImage3D, and * GetTexImage. */ public static final int GL_UNSIGNED_INT_24_8 = 0x84FA; /** * Accepted by the {@code internalformat} parameter of TexImage1D, TexImage2D, TexImage3D, CopyTexImage1D, CopyTexImage2D, and RenderbufferStorage, and * returned in the {@code data} parameter of GetTexLevelParameter and GetRenderbufferParameteriv. */ public static final int GL_DEPTH24_STENCIL8 = 0x88F0; /** Accepted by the {@code value} parameter of GetTexLevelParameter. */ public static final int GL_TEXTURE_STENCIL_SIZE = 0x88F1; static { GL.initialize(); } protected ARBFramebufferObject() { throw new UnsupportedOperationException(); } static boolean isAvailable(GLCapabilities caps) { return checkFunctions( caps.glIsRenderbuffer, caps.glBindRenderbuffer, caps.glDeleteRenderbuffers, caps.glGenRenderbuffers, caps.glRenderbufferStorage, caps.glRenderbufferStorageMultisample, caps.glGetRenderbufferParameteriv, caps.glIsFramebuffer, caps.glBindFramebuffer, caps.glDeleteFramebuffers, caps.glGenFramebuffers, caps.glCheckFramebufferStatus, caps.glFramebufferTexture1D, caps.glFramebufferTexture2D, caps.glFramebufferTexture3D, caps.glFramebufferTextureLayer, caps.glFramebufferRenderbuffer, caps.glGetFramebufferAttachmentParameteriv, caps.glBlitFramebuffer, caps.glGenerateMipmap ); } // --- [ glIsRenderbuffer ] --- /** * Determines if a name corresponds to a renderbuffer object. * * @param renderbuffer a value that may be the name of a renderbuffer object */ public static native boolean glIsRenderbuffer(int renderbuffer); // --- [ glBindRenderbuffer ] --- /** * Binds a renderbuffer to a renderbuffer target. * * @param target the renderbuffer target of the binding operation. Must be:
{@link GL30#GL_RENDERBUFFER RENDERBUFFER}
* @param renderbuffer the name of the renderbuffer object to bind */ public static native void glBindRenderbuffer(int target, int renderbuffer); // --- [ glDeleteRenderbuffers ] --- /** * Unsafe version of: {@link #glDeleteRenderbuffers DeleteRenderbuffers} * * @param n the number of renderbuffer objects to be deleted */ public static native void nglDeleteRenderbuffers(int n, long renderbuffers); /** * Deletes renderbuffer objects. * * @param renderbuffers an array containing {@code n} renderbuffer objects to be deleted */ public static void glDeleteRenderbuffers(IntBuffer renderbuffers) { nglDeleteRenderbuffers(renderbuffers.remaining(), memAddress(renderbuffers)); } /** Deletes renderbuffer objects. */ public static void glDeleteRenderbuffers(int renderbuffer) { MemoryStack stack = stackGet(); int stackPointer = stack.getPointer(); try { IntBuffer renderbuffers = stack.ints(renderbuffer); nglDeleteRenderbuffers(1, memAddress(renderbuffers)); } finally { stack.setPointer(stackPointer); } } // --- [ glGenRenderbuffers ] --- /** * Unsafe version of: {@link #glGenRenderbuffers GenRenderbuffers} * * @param n the number of renderbuffer object names to generate */ public static native void nglGenRenderbuffers(int n, long renderbuffers); /** * Generates renderbuffer object names. * * @param renderbuffers a buffer in which the generated renderbuffer object names are stored */ public static void glGenRenderbuffers(IntBuffer renderbuffers) { nglGenRenderbuffers(renderbuffers.remaining(), memAddress(renderbuffers)); } /** Generates renderbuffer object names. */ public static int glGenRenderbuffers() { MemoryStack stack = stackGet(); int stackPointer = stack.getPointer(); try { IntBuffer renderbuffers = stack.callocInt(1); nglGenRenderbuffers(1, memAddress(renderbuffers)); return renderbuffers.get(0); } finally { stack.setPointer(stackPointer); } } // --- [ glRenderbufferStorage ] --- /** * Establishes data storage, format and dimensions of a renderbuffer object's image. * * @param target the target of the allocation. Must be:
{@link GL30#GL_RENDERBUFFER RENDERBUFFER}
* @param internalformat the internal format to use for the renderbuffer object's image. Must be a color-renderable, depth-renderable, or stencil-renderable format. * @param width the width of the renderbuffer, in pixels * @param height the height of the renderbuffer, in pixels */ public static native void glRenderbufferStorage(int target, int internalformat, int width, int height); // --- [ glRenderbufferStorageMultisample ] --- /** * Establishes data storage, format, dimensions and sample count of a renderbuffer object's image. * *

{@link #glRenderbufferStorage RenderbufferStorage} is equivalent to calling this method with the samples set to zero.

* * @param target the target of the allocation. Must be:
{@link GL30#GL_RENDERBUFFER RENDERBUFFER}
* @param samples the number of samples to be used for the renderbuffer object's storage * @param internalformat the internal format to use for the renderbuffer object's image. Must be a color-renderable, depth-renderable, or stencil-renderable format. * @param width the width of the renderbuffer, in pixels * @param height the height of the renderbuffer, in pixels */ public static native void glRenderbufferStorageMultisample(int target, int samples, int internalformat, int width, int height); // --- [ glGetRenderbufferParameteriv ] --- /** Unsafe version of: {@link #glGetRenderbufferParameteriv GetRenderbufferParameteriv} */ public static native void nglGetRenderbufferParameteriv(int target, int pname, long params); /** * Retrieves information about a bound renderbuffer object. * * @param target the target of the query operation. Must be:
{@link GL30#GL_RENDERBUFFER RENDERBUFFER}
* @param pname the parameter whose value to retrieve from the renderbuffer bound to {@code target}. One of:
{@link GL30#GL_RENDERBUFFER_WIDTH RENDERBUFFER_WIDTH}{@link GL30#GL_RENDERBUFFER_HEIGHT RENDERBUFFER_HEIGHT}{@link GL30#GL_RENDERBUFFER_INTERNAL_FORMAT RENDERBUFFER_INTERNAL_FORMAT}
{@link GL30#GL_RENDERBUFFER_RED_SIZE RENDERBUFFER_RED_SIZE}{@link GL30#GL_RENDERBUFFER_GREEN_SIZE RENDERBUFFER_GREEN_SIZE}{@link GL30#GL_RENDERBUFFER_BLUE_SIZE RENDERBUFFER_BLUE_SIZE}
{@link GL30#GL_RENDERBUFFER_ALPHA_SIZE RENDERBUFFER_ALPHA_SIZE}{@link GL30#GL_RENDERBUFFER_DEPTH_SIZE RENDERBUFFER_DEPTH_SIZE}{@link GL30#GL_RENDERBUFFER_STENCIL_SIZE RENDERBUFFER_STENCIL_SIZE}
{@link GL30#GL_RENDERBUFFER_SAMPLES RENDERBUFFER_SAMPLES}
* @param params an array to receive the value of the queried parameter */ public static void glGetRenderbufferParameteriv(int target, int pname, IntBuffer params) { if (CHECKS) { check(params, 1); } nglGetRenderbufferParameteriv(target, pname, memAddress(params)); } /** * Retrieves information about a bound renderbuffer object. * * @param target the target of the query operation. Must be:
{@link GL30#GL_RENDERBUFFER RENDERBUFFER}
* @param pname the parameter whose value to retrieve from the renderbuffer bound to {@code target}. One of:
{@link GL30#GL_RENDERBUFFER_WIDTH RENDERBUFFER_WIDTH}{@link GL30#GL_RENDERBUFFER_HEIGHT RENDERBUFFER_HEIGHT}{@link GL30#GL_RENDERBUFFER_INTERNAL_FORMAT RENDERBUFFER_INTERNAL_FORMAT}
{@link GL30#GL_RENDERBUFFER_RED_SIZE RENDERBUFFER_RED_SIZE}{@link GL30#GL_RENDERBUFFER_GREEN_SIZE RENDERBUFFER_GREEN_SIZE}{@link GL30#GL_RENDERBUFFER_BLUE_SIZE RENDERBUFFER_BLUE_SIZE}
{@link GL30#GL_RENDERBUFFER_ALPHA_SIZE RENDERBUFFER_ALPHA_SIZE}{@link GL30#GL_RENDERBUFFER_DEPTH_SIZE RENDERBUFFER_DEPTH_SIZE}{@link GL30#GL_RENDERBUFFER_STENCIL_SIZE RENDERBUFFER_STENCIL_SIZE}
{@link GL30#GL_RENDERBUFFER_SAMPLES RENDERBUFFER_SAMPLES}
*/ public static int glGetRenderbufferParameteri(int target, int pname) { MemoryStack stack = stackGet(); int stackPointer = stack.getPointer(); try { IntBuffer params = stack.callocInt(1); nglGetRenderbufferParameteriv(target, pname, memAddress(params)); return params.get(0); } finally { stack.setPointer(stackPointer); } } // --- [ glIsFramebuffer ] --- /** * Determines if a name corresponds to a framebuffer object. * * @param framebuffer a value that may be the name of a framebuffer object */ public static native boolean glIsFramebuffer(int framebuffer); // --- [ glBindFramebuffer ] --- /** * Binds a framebuffer to a framebuffer target. * * @param target the framebuffer target of the binding operation. One of:
{@link GL30#GL_FRAMEBUFFER FRAMEBUFFER}{@link GL30#GL_READ_FRAMEBUFFER READ_FRAMEBUFFER}{@link GL30#GL_DRAW_FRAMEBUFFER DRAW_FRAMEBUFFER}
* @param framebuffer the name of the framebuffer object to bind */ public static native void glBindFramebuffer(int target, int framebuffer); // --- [ glDeleteFramebuffers ] --- /** * Unsafe version of: {@link #glDeleteFramebuffers DeleteFramebuffers} * * @param n the number of framebuffer objects to be deleted */ public static native void nglDeleteFramebuffers(int n, long framebuffers); /** * Deletes framebuffer objects. * * @param framebuffers an array containing {@code n} framebuffer objects to be deleted */ public static void glDeleteFramebuffers(IntBuffer framebuffers) { nglDeleteFramebuffers(framebuffers.remaining(), memAddress(framebuffers)); } /** Deletes framebuffer objects. */ public static void glDeleteFramebuffers(int framebuffer) { MemoryStack stack = stackGet(); int stackPointer = stack.getPointer(); try { IntBuffer framebuffers = stack.ints(framebuffer); nglDeleteFramebuffers(1, memAddress(framebuffers)); } finally { stack.setPointer(stackPointer); } } // --- [ glGenFramebuffers ] --- /** * Unsafe version of: {@link #glGenFramebuffers GenFramebuffers} * * @param n the number of framebuffer object names to generate */ public static native void nglGenFramebuffers(int n, long framebuffers); /** * Generates framebuffer object names. * * @param framebuffers a buffer in which the generated framebuffer object names are stored */ public static void glGenFramebuffers(IntBuffer framebuffers) { nglGenFramebuffers(framebuffers.remaining(), memAddress(framebuffers)); } /** Generates framebuffer object names. */ public static int glGenFramebuffers() { MemoryStack stack = stackGet(); int stackPointer = stack.getPointer(); try { IntBuffer framebuffers = stack.callocInt(1); nglGenFramebuffers(1, memAddress(framebuffers)); return framebuffers.get(0); } finally { stack.setPointer(stackPointer); } } // --- [ glCheckFramebufferStatus ] --- /** * Checks the completeness status of a framebuffer. * * @param target the target of the framebuffer completeness check. One of:
{@link GL30#GL_FRAMEBUFFER FRAMEBUFFER}{@link GL30#GL_READ_FRAMEBUFFER READ_FRAMEBUFFER}{@link GL30#GL_DRAW_FRAMEBUFFER DRAW_FRAMEBUFFER}
*/ public static native int glCheckFramebufferStatus(int target); // --- [ glFramebufferTexture1D ] --- /** * Attaches a level of a 1D texture object as a logical buffer to the currently bound framebuffer object. * * @param target the framebuffer target. One of:
{@link GL30#GL_FRAMEBUFFER FRAMEBUFFER}{@link GL30#GL_READ_FRAMEBUFFER READ_FRAMEBUFFER}{@link GL30#GL_DRAW_FRAMEBUFFER DRAW_FRAMEBUFFER}
* @param attachment the attachment point of the framebuffer. One of:
{@link GL30#GL_COLOR_ATTACHMENT0 COLOR_ATTACHMENT0}{@link GL30#GL_COLOR_ATTACHMENT1 COLOR_ATTACHMENT1}{@link GL30#GL_COLOR_ATTACHMENT2 COLOR_ATTACHMENT2}{@link GL30#GL_COLOR_ATTACHMENT3 COLOR_ATTACHMENT3}
{@link GL30#GL_COLOR_ATTACHMENT4 COLOR_ATTACHMENT4}{@link GL30#GL_COLOR_ATTACHMENT5 COLOR_ATTACHMENT5}{@link GL30#GL_COLOR_ATTACHMENT6 COLOR_ATTACHMENT6}{@link GL30#GL_COLOR_ATTACHMENT7 COLOR_ATTACHMENT7}
{@link GL30#GL_COLOR_ATTACHMENT8 COLOR_ATTACHMENT8}{@link GL30#GL_COLOR_ATTACHMENT9 COLOR_ATTACHMENT9}{@link GL30#GL_COLOR_ATTACHMENT10 COLOR_ATTACHMENT10}{@link GL30#GL_COLOR_ATTACHMENT11 COLOR_ATTACHMENT11}
{@link GL30#GL_COLOR_ATTACHMENT12 COLOR_ATTACHMENT12}{@link GL30#GL_COLOR_ATTACHMENT13 COLOR_ATTACHMENT13}{@link GL30#GL_COLOR_ATTACHMENT14 COLOR_ATTACHMENT14}{@link GL30#GL_COLOR_ATTACHMENT15 COLOR_ATTACHMENT15}
{@link GL30#GL_COLOR_ATTACHMENT16 COLOR_ATTACHMENT16}{@link GL30#GL_COLOR_ATTACHMENT17 COLOR_ATTACHMENT17}{@link GL30#GL_COLOR_ATTACHMENT18 COLOR_ATTACHMENT18}{@link GL30#GL_COLOR_ATTACHMENT19 COLOR_ATTACHMENT19}
{@link GL30#GL_COLOR_ATTACHMENT20 COLOR_ATTACHMENT20}{@link GL30#GL_COLOR_ATTACHMENT21 COLOR_ATTACHMENT21}{@link GL30#GL_COLOR_ATTACHMENT22 COLOR_ATTACHMENT22}{@link GL30#GL_COLOR_ATTACHMENT23 COLOR_ATTACHMENT23}
{@link GL30#GL_COLOR_ATTACHMENT24 COLOR_ATTACHMENT24}{@link GL30#GL_COLOR_ATTACHMENT25 COLOR_ATTACHMENT25}{@link GL30#GL_COLOR_ATTACHMENT26 COLOR_ATTACHMENT26}{@link GL30#GL_COLOR_ATTACHMENT27 COLOR_ATTACHMENT27}
{@link GL30#GL_COLOR_ATTACHMENT28 COLOR_ATTACHMENT28}{@link GL30#GL_COLOR_ATTACHMENT29 COLOR_ATTACHMENT29}{@link GL30#GL_COLOR_ATTACHMENT30 COLOR_ATTACHMENT30}{@link GL30#GL_COLOR_ATTACHMENT31 COLOR_ATTACHMENT31}
{@link GL30#GL_DEPTH_ATTACHMENT DEPTH_ATTACHMENT}{@link GL30#GL_STENCIL_ATTACHMENT STENCIL_ATTACHMENT}{@link GL30#GL_DEPTH_STENCIL_ATTACHMENT DEPTH_STENCIL_ATTACHMENT}
* @param textarget the type of texture * @param texture the texture object to attach to the framebuffer attachment point named by {@code attachment} * @param level the mipmap level of {@code texture} to attach */ public static native void glFramebufferTexture1D(int target, int attachment, int textarget, int texture, int level); // --- [ glFramebufferTexture2D ] --- /** * Attaches a level of a 2D texture object as a logical buffer to the currently bound framebuffer object. * * @param target the framebuffer target. One of:
{@link GL30#GL_FRAMEBUFFER FRAMEBUFFER}{@link GL30#GL_READ_FRAMEBUFFER READ_FRAMEBUFFER}{@link GL30#GL_DRAW_FRAMEBUFFER DRAW_FRAMEBUFFER}
* @param attachment the attachment point of the framebuffer. One of:
{@link GL30#GL_COLOR_ATTACHMENT0 COLOR_ATTACHMENT0}{@link GL30#GL_COLOR_ATTACHMENT1 COLOR_ATTACHMENT1}{@link GL30#GL_COLOR_ATTACHMENT2 COLOR_ATTACHMENT2}{@link GL30#GL_COLOR_ATTACHMENT3 COLOR_ATTACHMENT3}
{@link GL30#GL_COLOR_ATTACHMENT4 COLOR_ATTACHMENT4}{@link GL30#GL_COLOR_ATTACHMENT5 COLOR_ATTACHMENT5}{@link GL30#GL_COLOR_ATTACHMENT6 COLOR_ATTACHMENT6}{@link GL30#GL_COLOR_ATTACHMENT7 COLOR_ATTACHMENT7}
{@link GL30#GL_COLOR_ATTACHMENT8 COLOR_ATTACHMENT8}{@link GL30#GL_COLOR_ATTACHMENT9 COLOR_ATTACHMENT9}{@link GL30#GL_COLOR_ATTACHMENT10 COLOR_ATTACHMENT10}{@link GL30#GL_COLOR_ATTACHMENT11 COLOR_ATTACHMENT11}
{@link GL30#GL_COLOR_ATTACHMENT12 COLOR_ATTACHMENT12}{@link GL30#GL_COLOR_ATTACHMENT13 COLOR_ATTACHMENT13}{@link GL30#GL_COLOR_ATTACHMENT14 COLOR_ATTACHMENT14}{@link GL30#GL_COLOR_ATTACHMENT15 COLOR_ATTACHMENT15}
{@link GL30#GL_COLOR_ATTACHMENT16 COLOR_ATTACHMENT16}{@link GL30#GL_COLOR_ATTACHMENT17 COLOR_ATTACHMENT17}{@link GL30#GL_COLOR_ATTACHMENT18 COLOR_ATTACHMENT18}{@link GL30#GL_COLOR_ATTACHMENT19 COLOR_ATTACHMENT19}
{@link GL30#GL_COLOR_ATTACHMENT20 COLOR_ATTACHMENT20}{@link GL30#GL_COLOR_ATTACHMENT21 COLOR_ATTACHMENT21}{@link GL30#GL_COLOR_ATTACHMENT22 COLOR_ATTACHMENT22}{@link GL30#GL_COLOR_ATTACHMENT23 COLOR_ATTACHMENT23}
{@link GL30#GL_COLOR_ATTACHMENT24 COLOR_ATTACHMENT24}{@link GL30#GL_COLOR_ATTACHMENT25 COLOR_ATTACHMENT25}{@link GL30#GL_COLOR_ATTACHMENT26 COLOR_ATTACHMENT26}{@link GL30#GL_COLOR_ATTACHMENT27 COLOR_ATTACHMENT27}
{@link GL30#GL_COLOR_ATTACHMENT28 COLOR_ATTACHMENT28}{@link GL30#GL_COLOR_ATTACHMENT29 COLOR_ATTACHMENT29}{@link GL30#GL_COLOR_ATTACHMENT30 COLOR_ATTACHMENT30}{@link GL30#GL_COLOR_ATTACHMENT31 COLOR_ATTACHMENT31}
{@link GL30#GL_DEPTH_ATTACHMENT DEPTH_ATTACHMENT}{@link GL30#GL_STENCIL_ATTACHMENT STENCIL_ATTACHMENT}{@link GL30#GL_DEPTH_STENCIL_ATTACHMENT DEPTH_STENCIL_ATTACHMENT}
* @param textarget the type of texture * @param texture the texture object to attach to the framebuffer attachment point named by {@code attachment} * @param level the mipmap level of {@code texture} to attach */ public static native void glFramebufferTexture2D(int target, int attachment, int textarget, int texture, int level); // --- [ glFramebufferTexture3D ] --- /** * Attaches a layer of a 3D texture object as a logical buffer to the currently bound framebuffer object. * * @param target the framebuffer target. One of:
{@link GL30#GL_FRAMEBUFFER FRAMEBUFFER}{@link GL30#GL_READ_FRAMEBUFFER READ_FRAMEBUFFER}{@link GL30#GL_DRAW_FRAMEBUFFER DRAW_FRAMEBUFFER}
* @param attachment the attachment point of the framebuffer. One of:
{@link GL30#GL_COLOR_ATTACHMENT0 COLOR_ATTACHMENT0}{@link GL30#GL_COLOR_ATTACHMENT1 COLOR_ATTACHMENT1}{@link GL30#GL_COLOR_ATTACHMENT2 COLOR_ATTACHMENT2}{@link GL30#GL_COLOR_ATTACHMENT3 COLOR_ATTACHMENT3}
{@link GL30#GL_COLOR_ATTACHMENT4 COLOR_ATTACHMENT4}{@link GL30#GL_COLOR_ATTACHMENT5 COLOR_ATTACHMENT5}{@link GL30#GL_COLOR_ATTACHMENT6 COLOR_ATTACHMENT6}{@link GL30#GL_COLOR_ATTACHMENT7 COLOR_ATTACHMENT7}
{@link GL30#GL_COLOR_ATTACHMENT8 COLOR_ATTACHMENT8}{@link GL30#GL_COLOR_ATTACHMENT9 COLOR_ATTACHMENT9}{@link GL30#GL_COLOR_ATTACHMENT10 COLOR_ATTACHMENT10}{@link GL30#GL_COLOR_ATTACHMENT11 COLOR_ATTACHMENT11}
{@link GL30#GL_COLOR_ATTACHMENT12 COLOR_ATTACHMENT12}{@link GL30#GL_COLOR_ATTACHMENT13 COLOR_ATTACHMENT13}{@link GL30#GL_COLOR_ATTACHMENT14 COLOR_ATTACHMENT14}{@link GL30#GL_COLOR_ATTACHMENT15 COLOR_ATTACHMENT15}
{@link GL30#GL_COLOR_ATTACHMENT16 COLOR_ATTACHMENT16}{@link GL30#GL_COLOR_ATTACHMENT17 COLOR_ATTACHMENT17}{@link GL30#GL_COLOR_ATTACHMENT18 COLOR_ATTACHMENT18}{@link GL30#GL_COLOR_ATTACHMENT19 COLOR_ATTACHMENT19}
{@link GL30#GL_COLOR_ATTACHMENT20 COLOR_ATTACHMENT20}{@link GL30#GL_COLOR_ATTACHMENT21 COLOR_ATTACHMENT21}{@link GL30#GL_COLOR_ATTACHMENT22 COLOR_ATTACHMENT22}{@link GL30#GL_COLOR_ATTACHMENT23 COLOR_ATTACHMENT23}
{@link GL30#GL_COLOR_ATTACHMENT24 COLOR_ATTACHMENT24}{@link GL30#GL_COLOR_ATTACHMENT25 COLOR_ATTACHMENT25}{@link GL30#GL_COLOR_ATTACHMENT26 COLOR_ATTACHMENT26}{@link GL30#GL_COLOR_ATTACHMENT27 COLOR_ATTACHMENT27}
{@link GL30#GL_COLOR_ATTACHMENT28 COLOR_ATTACHMENT28}{@link GL30#GL_COLOR_ATTACHMENT29 COLOR_ATTACHMENT29}{@link GL30#GL_COLOR_ATTACHMENT30 COLOR_ATTACHMENT30}{@link GL30#GL_COLOR_ATTACHMENT31 COLOR_ATTACHMENT31}
{@link GL30#GL_DEPTH_ATTACHMENT DEPTH_ATTACHMENT}{@link GL30#GL_STENCIL_ATTACHMENT STENCIL_ATTACHMENT}{@link GL30#GL_DEPTH_STENCIL_ATTACHMENT DEPTH_STENCIL_ATTACHMENT}
* @param textarget the type of texture * @param texture the texture object to attach to the framebuffer attachment point named by {@code attachment} * @param level the mipmap level of {@code texture} to attach * @param layer the layer of a 2-dimensional image within the 3-dimensional texture. */ public static native void glFramebufferTexture3D(int target, int attachment, int textarget, int texture, int level, int layer); // --- [ glFramebufferTextureLayer ] --- /** * Attaches a single layer of a texture to a framebuffer * * @param target the framebuffer target. One of:
{@link GL30#GL_FRAMEBUFFER FRAMEBUFFER}{@link GL30#GL_READ_FRAMEBUFFER READ_FRAMEBUFFER}{@link GL30#GL_DRAW_FRAMEBUFFER DRAW_FRAMEBUFFER}
* @param attachment the attachment point of the framebuffer. One of:
{@link GL30#GL_COLOR_ATTACHMENT0 COLOR_ATTACHMENT0}{@link GL30#GL_COLOR_ATTACHMENT1 COLOR_ATTACHMENT1}{@link GL30#GL_COLOR_ATTACHMENT2 COLOR_ATTACHMENT2}{@link GL30#GL_COLOR_ATTACHMENT3 COLOR_ATTACHMENT3}
{@link GL30#GL_COLOR_ATTACHMENT4 COLOR_ATTACHMENT4}{@link GL30#GL_COLOR_ATTACHMENT5 COLOR_ATTACHMENT5}{@link GL30#GL_COLOR_ATTACHMENT6 COLOR_ATTACHMENT6}{@link GL30#GL_COLOR_ATTACHMENT7 COLOR_ATTACHMENT7}
{@link GL30#GL_COLOR_ATTACHMENT8 COLOR_ATTACHMENT8}{@link GL30#GL_COLOR_ATTACHMENT9 COLOR_ATTACHMENT9}{@link GL30#GL_COLOR_ATTACHMENT10 COLOR_ATTACHMENT10}{@link GL30#GL_COLOR_ATTACHMENT11 COLOR_ATTACHMENT11}
{@link GL30#GL_COLOR_ATTACHMENT12 COLOR_ATTACHMENT12}{@link GL30#GL_COLOR_ATTACHMENT13 COLOR_ATTACHMENT13}{@link GL30#GL_COLOR_ATTACHMENT14 COLOR_ATTACHMENT14}{@link GL30#GL_COLOR_ATTACHMENT15 COLOR_ATTACHMENT15}
{@link GL30#GL_COLOR_ATTACHMENT16 COLOR_ATTACHMENT16}{@link GL30#GL_COLOR_ATTACHMENT17 COLOR_ATTACHMENT17}{@link GL30#GL_COLOR_ATTACHMENT18 COLOR_ATTACHMENT18}{@link GL30#GL_COLOR_ATTACHMENT19 COLOR_ATTACHMENT19}
{@link GL30#GL_COLOR_ATTACHMENT20 COLOR_ATTACHMENT20}{@link GL30#GL_COLOR_ATTACHMENT21 COLOR_ATTACHMENT21}{@link GL30#GL_COLOR_ATTACHMENT22 COLOR_ATTACHMENT22}{@link GL30#GL_COLOR_ATTACHMENT23 COLOR_ATTACHMENT23}
{@link GL30#GL_COLOR_ATTACHMENT24 COLOR_ATTACHMENT24}{@link GL30#GL_COLOR_ATTACHMENT25 COLOR_ATTACHMENT25}{@link GL30#GL_COLOR_ATTACHMENT26 COLOR_ATTACHMENT26}{@link GL30#GL_COLOR_ATTACHMENT27 COLOR_ATTACHMENT27}
{@link GL30#GL_COLOR_ATTACHMENT28 COLOR_ATTACHMENT28}{@link GL30#GL_COLOR_ATTACHMENT29 COLOR_ATTACHMENT29}{@link GL30#GL_COLOR_ATTACHMENT30 COLOR_ATTACHMENT30}{@link GL30#GL_COLOR_ATTACHMENT31 COLOR_ATTACHMENT31}
{@link GL30#GL_DEPTH_ATTACHMENT DEPTH_ATTACHMENT}{@link GL30#GL_STENCIL_ATTACHMENT STENCIL_ATTACHMENT}{@link GL30#GL_DEPTH_STENCIL_ATTACHMENT DEPTH_STENCIL_ATTACHMENT}
* @param texture the texture object to attach to the framebuffer attachment point named by {@code attachment} * @param level the mipmap level of {@code texture} to attach * @param layer the layer of {@code texture} to attach. */ public static native void glFramebufferTextureLayer(int target, int attachment, int texture, int level, int layer); // --- [ glFramebufferRenderbuffer ] --- /** * Attaches a renderbuffer as a logical buffer to the currently bound framebuffer object. * * @param target the framebuffer target. One of:
{@link GL30#GL_FRAMEBUFFER FRAMEBUFFER}{@link GL30#GL_READ_FRAMEBUFFER READ_FRAMEBUFFER}{@link GL30#GL_DRAW_FRAMEBUFFER DRAW_FRAMEBUFFER}
* @param attachment the attachment point of the framebuffer. One of:
{@link GL30#GL_COLOR_ATTACHMENT0 COLOR_ATTACHMENT0}{@link GL30#GL_COLOR_ATTACHMENT1 COLOR_ATTACHMENT1}{@link GL30#GL_COLOR_ATTACHMENT2 COLOR_ATTACHMENT2}{@link GL30#GL_COLOR_ATTACHMENT3 COLOR_ATTACHMENT3}
{@link GL30#GL_COLOR_ATTACHMENT4 COLOR_ATTACHMENT4}{@link GL30#GL_COLOR_ATTACHMENT5 COLOR_ATTACHMENT5}{@link GL30#GL_COLOR_ATTACHMENT6 COLOR_ATTACHMENT6}{@link GL30#GL_COLOR_ATTACHMENT7 COLOR_ATTACHMENT7}
{@link GL30#GL_COLOR_ATTACHMENT8 COLOR_ATTACHMENT8}{@link GL30#GL_COLOR_ATTACHMENT9 COLOR_ATTACHMENT9}{@link GL30#GL_COLOR_ATTACHMENT10 COLOR_ATTACHMENT10}{@link GL30#GL_COLOR_ATTACHMENT11 COLOR_ATTACHMENT11}
{@link GL30#GL_COLOR_ATTACHMENT12 COLOR_ATTACHMENT12}{@link GL30#GL_COLOR_ATTACHMENT13 COLOR_ATTACHMENT13}{@link GL30#GL_COLOR_ATTACHMENT14 COLOR_ATTACHMENT14}{@link GL30#GL_COLOR_ATTACHMENT15 COLOR_ATTACHMENT15}
{@link GL30#GL_COLOR_ATTACHMENT16 COLOR_ATTACHMENT16}{@link GL30#GL_COLOR_ATTACHMENT17 COLOR_ATTACHMENT17}{@link GL30#GL_COLOR_ATTACHMENT18 COLOR_ATTACHMENT18}{@link GL30#GL_COLOR_ATTACHMENT19 COLOR_ATTACHMENT19}
{@link GL30#GL_COLOR_ATTACHMENT20 COLOR_ATTACHMENT20}{@link GL30#GL_COLOR_ATTACHMENT21 COLOR_ATTACHMENT21}{@link GL30#GL_COLOR_ATTACHMENT22 COLOR_ATTACHMENT22}{@link GL30#GL_COLOR_ATTACHMENT23 COLOR_ATTACHMENT23}
{@link GL30#GL_COLOR_ATTACHMENT24 COLOR_ATTACHMENT24}{@link GL30#GL_COLOR_ATTACHMENT25 COLOR_ATTACHMENT25}{@link GL30#GL_COLOR_ATTACHMENT26 COLOR_ATTACHMENT26}{@link GL30#GL_COLOR_ATTACHMENT27 COLOR_ATTACHMENT27}
{@link GL30#GL_COLOR_ATTACHMENT28 COLOR_ATTACHMENT28}{@link GL30#GL_COLOR_ATTACHMENT29 COLOR_ATTACHMENT29}{@link GL30#GL_COLOR_ATTACHMENT30 COLOR_ATTACHMENT30}{@link GL30#GL_COLOR_ATTACHMENT31 COLOR_ATTACHMENT31}
{@link GL30#GL_DEPTH_ATTACHMENT DEPTH_ATTACHMENT}{@link GL30#GL_STENCIL_ATTACHMENT STENCIL_ATTACHMENT}{@link GL30#GL_DEPTH_STENCIL_ATTACHMENT DEPTH_STENCIL_ATTACHMENT}
* @param renderbuffertarget the renderbuffer target. Must be:
{@link GL30#GL_RENDERBUFFER RENDERBUFFER}
* @param renderbuffer the name of an existing renderbuffer object of type {@code renderbuffertarget} to attach */ public static native void glFramebufferRenderbuffer(int target, int attachment, int renderbuffertarget, int renderbuffer); // --- [ glGetFramebufferAttachmentParameteriv ] --- /** Unsafe version of: {@link #glGetFramebufferAttachmentParameteriv GetFramebufferAttachmentParameteriv} */ public static native void nglGetFramebufferAttachmentParameteriv(int target, int attachment, int pname, long params); /** * Retrievees information about attachments of a bound framebuffer object. * * @param target the target of the query operation. One of:
{@link GL30#GL_FRAMEBUFFER FRAMEBUFFER}{@link GL30#GL_READ_FRAMEBUFFER READ_FRAMEBUFFER}{@link GL30#GL_DRAW_FRAMEBUFFER DRAW_FRAMEBUFFER}
* @param attachment the attachment within {@code target}. One of:
{@link GL30#GL_COLOR_ATTACHMENT0 COLOR_ATTACHMENT0}{@link GL30#GL_COLOR_ATTACHMENT1 COLOR_ATTACHMENT1}{@link GL30#GL_COLOR_ATTACHMENT2 COLOR_ATTACHMENT2}{@link GL30#GL_COLOR_ATTACHMENT3 COLOR_ATTACHMENT3}
{@link GL30#GL_COLOR_ATTACHMENT4 COLOR_ATTACHMENT4}{@link GL30#GL_COLOR_ATTACHMENT5 COLOR_ATTACHMENT5}{@link GL30#GL_COLOR_ATTACHMENT6 COLOR_ATTACHMENT6}{@link GL30#GL_COLOR_ATTACHMENT7 COLOR_ATTACHMENT7}
{@link GL30#GL_COLOR_ATTACHMENT8 COLOR_ATTACHMENT8}{@link GL30#GL_COLOR_ATTACHMENT9 COLOR_ATTACHMENT9}{@link GL30#GL_COLOR_ATTACHMENT10 COLOR_ATTACHMENT10}{@link GL30#GL_COLOR_ATTACHMENT11 COLOR_ATTACHMENT11}
{@link GL30#GL_COLOR_ATTACHMENT12 COLOR_ATTACHMENT12}{@link GL30#GL_COLOR_ATTACHMENT13 COLOR_ATTACHMENT13}{@link GL30#GL_COLOR_ATTACHMENT14 COLOR_ATTACHMENT14}{@link GL30#GL_COLOR_ATTACHMENT15 COLOR_ATTACHMENT15}
{@link GL30#GL_COLOR_ATTACHMENT16 COLOR_ATTACHMENT16}{@link GL30#GL_COLOR_ATTACHMENT17 COLOR_ATTACHMENT17}{@link GL30#GL_COLOR_ATTACHMENT18 COLOR_ATTACHMENT18}{@link GL30#GL_COLOR_ATTACHMENT19 COLOR_ATTACHMENT19}
{@link GL30#GL_COLOR_ATTACHMENT20 COLOR_ATTACHMENT20}{@link GL30#GL_COLOR_ATTACHMENT21 COLOR_ATTACHMENT21}{@link GL30#GL_COLOR_ATTACHMENT22 COLOR_ATTACHMENT22}{@link GL30#GL_COLOR_ATTACHMENT23 COLOR_ATTACHMENT23}
{@link GL30#GL_COLOR_ATTACHMENT24 COLOR_ATTACHMENT24}{@link GL30#GL_COLOR_ATTACHMENT25 COLOR_ATTACHMENT25}{@link GL30#GL_COLOR_ATTACHMENT26 COLOR_ATTACHMENT26}{@link GL30#GL_COLOR_ATTACHMENT27 COLOR_ATTACHMENT27}
{@link GL30#GL_COLOR_ATTACHMENT28 COLOR_ATTACHMENT28}{@link GL30#GL_COLOR_ATTACHMENT29 COLOR_ATTACHMENT29}{@link GL30#GL_COLOR_ATTACHMENT30 COLOR_ATTACHMENT30}{@link GL30#GL_COLOR_ATTACHMENT31 COLOR_ATTACHMENT31}
{@link GL30#GL_DEPTH_ATTACHMENT DEPTH_ATTACHMENT}{@link GL30#GL_STENCIL_ATTACHMENT STENCIL_ATTACHMENT}{@link GL30#GL_DEPTH_STENCIL_ATTACHMENT DEPTH_STENCIL_ATTACHMENT}
* @param pname the parameter of {@code attachment} to query. One of:
{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE}{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME FRAMEBUFFER_ATTACHMENT_OBJECT_NAME}
{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL}{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE}
{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER}{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING}
{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE}{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE FRAMEBUFFER_ATTACHMENT_RED_SIZE}
{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE FRAMEBUFFER_ATTACHMENT_GREEN_SIZE}{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE FRAMEBUFFER_ATTACHMENT_BLUE_SIZE}
{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE}{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE}
{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE}
* @param params an array to receive the value of the queried parameter */ public static void glGetFramebufferAttachmentParameteriv(int target, int attachment, int pname, IntBuffer params) { if (CHECKS) { check(params, 1); } nglGetFramebufferAttachmentParameteriv(target, attachment, pname, memAddress(params)); } /** * Retrievees information about attachments of a bound framebuffer object. * * @param target the target of the query operation. One of:
{@link GL30#GL_FRAMEBUFFER FRAMEBUFFER}{@link GL30#GL_READ_FRAMEBUFFER READ_FRAMEBUFFER}{@link GL30#GL_DRAW_FRAMEBUFFER DRAW_FRAMEBUFFER}
* @param attachment the attachment within {@code target}. One of:
{@link GL30#GL_COLOR_ATTACHMENT0 COLOR_ATTACHMENT0}{@link GL30#GL_COLOR_ATTACHMENT1 COLOR_ATTACHMENT1}{@link GL30#GL_COLOR_ATTACHMENT2 COLOR_ATTACHMENT2}{@link GL30#GL_COLOR_ATTACHMENT3 COLOR_ATTACHMENT3}
{@link GL30#GL_COLOR_ATTACHMENT4 COLOR_ATTACHMENT4}{@link GL30#GL_COLOR_ATTACHMENT5 COLOR_ATTACHMENT5}{@link GL30#GL_COLOR_ATTACHMENT6 COLOR_ATTACHMENT6}{@link GL30#GL_COLOR_ATTACHMENT7 COLOR_ATTACHMENT7}
{@link GL30#GL_COLOR_ATTACHMENT8 COLOR_ATTACHMENT8}{@link GL30#GL_COLOR_ATTACHMENT9 COLOR_ATTACHMENT9}{@link GL30#GL_COLOR_ATTACHMENT10 COLOR_ATTACHMENT10}{@link GL30#GL_COLOR_ATTACHMENT11 COLOR_ATTACHMENT11}
{@link GL30#GL_COLOR_ATTACHMENT12 COLOR_ATTACHMENT12}{@link GL30#GL_COLOR_ATTACHMENT13 COLOR_ATTACHMENT13}{@link GL30#GL_COLOR_ATTACHMENT14 COLOR_ATTACHMENT14}{@link GL30#GL_COLOR_ATTACHMENT15 COLOR_ATTACHMENT15}
{@link GL30#GL_COLOR_ATTACHMENT16 COLOR_ATTACHMENT16}{@link GL30#GL_COLOR_ATTACHMENT17 COLOR_ATTACHMENT17}{@link GL30#GL_COLOR_ATTACHMENT18 COLOR_ATTACHMENT18}{@link GL30#GL_COLOR_ATTACHMENT19 COLOR_ATTACHMENT19}
{@link GL30#GL_COLOR_ATTACHMENT20 COLOR_ATTACHMENT20}{@link GL30#GL_COLOR_ATTACHMENT21 COLOR_ATTACHMENT21}{@link GL30#GL_COLOR_ATTACHMENT22 COLOR_ATTACHMENT22}{@link GL30#GL_COLOR_ATTACHMENT23 COLOR_ATTACHMENT23}
{@link GL30#GL_COLOR_ATTACHMENT24 COLOR_ATTACHMENT24}{@link GL30#GL_COLOR_ATTACHMENT25 COLOR_ATTACHMENT25}{@link GL30#GL_COLOR_ATTACHMENT26 COLOR_ATTACHMENT26}{@link GL30#GL_COLOR_ATTACHMENT27 COLOR_ATTACHMENT27}
{@link GL30#GL_COLOR_ATTACHMENT28 COLOR_ATTACHMENT28}{@link GL30#GL_COLOR_ATTACHMENT29 COLOR_ATTACHMENT29}{@link GL30#GL_COLOR_ATTACHMENT30 COLOR_ATTACHMENT30}{@link GL30#GL_COLOR_ATTACHMENT31 COLOR_ATTACHMENT31}
{@link GL30#GL_DEPTH_ATTACHMENT DEPTH_ATTACHMENT}{@link GL30#GL_STENCIL_ATTACHMENT STENCIL_ATTACHMENT}{@link GL30#GL_DEPTH_STENCIL_ATTACHMENT DEPTH_STENCIL_ATTACHMENT}
* @param pname the parameter of {@code attachment} to query. One of:
{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE}{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME FRAMEBUFFER_ATTACHMENT_OBJECT_NAME}
{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL}{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE}
{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER}{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING}
{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE}{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE FRAMEBUFFER_ATTACHMENT_RED_SIZE}
{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE FRAMEBUFFER_ATTACHMENT_GREEN_SIZE}{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE FRAMEBUFFER_ATTACHMENT_BLUE_SIZE}
{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE}{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE}
{@link GL30#GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE}
*/ public static int glGetFramebufferAttachmentParameteri(int target, int attachment, int pname) { MemoryStack stack = stackGet(); int stackPointer = stack.getPointer(); try { IntBuffer params = stack.callocInt(1); nglGetFramebufferAttachmentParameteriv(target, attachment, pname, memAddress(params)); return params.get(0); } finally { stack.setPointer(stackPointer); } } // --- [ glBlitFramebuffer ] --- /** * Copies a block of pixels from the read framebuffer to the draw framebuffer. * * @param srcX0 the lower-left coordinate of the source rectangle within the read buffer * @param srcY0 the upper-left coordinate of the source rectangle within the read buffer * @param srcX1 the lower-right coordinate of the source rectangle within the read buffer * @param srcY1 the upper-right coordinate of the source rectangle within the read buffer * @param dstX0 the lower-left coordinate of the destination rectangle within the write buffer * @param dstY0 the upper-left coordinate of the destination rectangle within the write buffer * @param dstX1 the lower-right coordinate of the destination rectangle within the write buffer * @param dstY1 the upper-right coordinate of the destination rectangle within the write buffer * @param mask the bitwise OR of the flags indicating which buffers are to be copied. One of:
{@link GL11#GL_COLOR_BUFFER_BIT COLOR_BUFFER_BIT}{@link GL11#GL_DEPTH_BUFFER_BIT DEPTH_BUFFER_BIT}{@link GL11#GL_STENCIL_BUFFER_BIT STENCIL_BUFFER_BIT}
* @param filter the interpolation to be applied if the image is stretched. One of:
{@link GL11#GL_NEAREST NEAREST}{@link GL11#GL_LINEAR LINEAR}
*/ public static native void glBlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, int mask, int filter); // --- [ glGenerateMipmap ] --- /** * Generate mipmaps for a specified texture target. * * @param target the target to which the texture whose mimaps to generate is bound. One of:
{@link GL11#GL_TEXTURE_1D TEXTURE_1D}{@link GL11#GL_TEXTURE_2D TEXTURE_2D}{@link GL12#GL_TEXTURE_3D TEXTURE_3D}{@link GL30#GL_TEXTURE_1D_ARRAY TEXTURE_1D_ARRAY}{@link GL30#GL_TEXTURE_2D_ARRAY TEXTURE_2D_ARRAY}{@link GL13#GL_TEXTURE_CUBE_MAP TEXTURE_CUBE_MAP}
*/ public static native void glGenerateMipmap(int target); /** Array version of: {@link #glDeleteRenderbuffers DeleteRenderbuffers} */ public static void glDeleteRenderbuffers(int[] renderbuffers) { long __functionAddress = GL.getICD().glDeleteRenderbuffers; if (CHECKS) { check(__functionAddress); } callPV(__functionAddress, renderbuffers.length, renderbuffers); } /** Array version of: {@link #glGenRenderbuffers GenRenderbuffers} */ public static void glGenRenderbuffers(int[] renderbuffers) { long __functionAddress = GL.getICD().glGenRenderbuffers; if (CHECKS) { check(__functionAddress); } callPV(__functionAddress, renderbuffers.length, renderbuffers); } /** Array version of: {@link #glGetRenderbufferParameteriv GetRenderbufferParameteriv} */ public static void glGetRenderbufferParameteriv(int target, int pname, int[] params) { long __functionAddress = GL.getICD().glGetRenderbufferParameteriv; if (CHECKS) { check(__functionAddress); check(params, 1); } callPV(__functionAddress, target, pname, params); } /** Array version of: {@link #glDeleteFramebuffers DeleteFramebuffers} */ public static void glDeleteFramebuffers(int[] framebuffers) { long __functionAddress = GL.getICD().glDeleteFramebuffers; if (CHECKS) { check(__functionAddress); } callPV(__functionAddress, framebuffers.length, framebuffers); } /** Array version of: {@link #glGenFramebuffers GenFramebuffers} */ public static void glGenFramebuffers(int[] framebuffers) { long __functionAddress = GL.getICD().glGenFramebuffers; if (CHECKS) { check(__functionAddress); } callPV(__functionAddress, framebuffers.length, framebuffers); } /** Array version of: {@link #glGetFramebufferAttachmentParameteriv GetFramebufferAttachmentParameteriv} */ public static void glGetFramebufferAttachmentParameteriv(int target, int attachment, int pname, int[] params) { long __functionAddress = GL.getICD().glGetFramebufferAttachmentParameteriv; if (CHECKS) { check(__functionAddress); check(params, 1); } callPV(__functionAddress, target, attachment, pname, params); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy