public class ARBSampleLocations
extends java.lang.Object
This extension allows an application to modify the locations of samples within a pixel used in multisample rasterization. Additionally, it allows applications to specify different sample locations for each pixel in a group of adjacent pixels, which may increase antialiasing quality (particularly if a custom resolve shader is used that takes advantage of these different locations).
It is common for implementations to optimize the storage of depth values by storing values that can be used to reconstruct depth at each sample location, rather than storing separate depth values for each sample. For example, the depth values from a single triangle can be represented using plane equations. When the depth value for a sample is needed, it is automatically evaluated at the sample location. Modifying the sample locations causes the reconstruction to no longer evaluate the same depth values as when the samples were originally generated. This extension provides a command to "evaluate" and store per-sample depth values using the currently programmed sample locations, which allows the application to manage this issue if/when necessary.
The programmable sample locations are used during rasterization and for evaluation of depth functions during normal geometric rendering. The programmable locations are associated with a framebuffer object rather than an individual depth buffer, so if the depth buffer is used as a texture the texture sampling may be done at the standard sample locations. Additionally, commands that do not render geometric primitives (e.g. ReadPixels, BlitFramebuffer, CopyTexSubImage2D, etc.) may use the standard sample locations to evaluate depth functions rather than the programmable locations. If a single depth buffer is used at different times with different sample locations, the depth functions may be interpreted using the current sample locations.
| Modifier and Type | Field and Description |
|---|---|
static int |
GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB
// Alias of SAMPLE_POSITION.
|
static int |
GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB
// Alias of SAMPLE_POSITION.
|
static int |
GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB
Accepted by the
pname parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv, and GetDoublev. |
static int |
GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB
Accepted by the
pname parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv, and GetDoublev. |
static int |
GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB
Accepted by the
pname parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv, and GetDoublev. |
static int |
GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB
Accepted by the
pname parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv, and GetDoublev. |
| Modifier and Type | Method and Description |
|---|---|
static void |
glEvaluateDepthValuesARB()
Evaluates depth values for all samples in the current depth buffer (subject to the pixel ownership and scissor tests) and stores each value in the
depth buffer.
|
static void |
glFramebufferSampleLocationsfvARB(int target,
int start,
float[] v)
Array version of:
FramebufferSampleLocationsfvARB |
static void |
glFramebufferSampleLocationsfvARB(int target,
int start,
java.nio.FloatBuffer v)
Controls the programmable sample locations for the framebuffer bound to the specified
target. |
static void |
glNamedFramebufferSampleLocationsfvARB(int framebuffer,
int start,
float[] v)
Array version of:
NamedFramebufferSampleLocationsfvARB |
static void |
glNamedFramebufferSampleLocationsfvARB(int framebuffer,
int start,
java.nio.FloatBuffer v)
DSA version of
FramebufferSampleLocationsfvARB. |
static void |
nglFramebufferSampleLocationsfvARB(int target,
int start,
int count,
long v)
Unsafe version of:
FramebufferSampleLocationsfvARB |
static void |
nglNamedFramebufferSampleLocationsfvARB(int framebuffer,
int start,
int count,
long v)
Unsafe version of:
NamedFramebufferSampleLocationsfvARB |
public static final int GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB
pname parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv, and GetDoublev.public static final int GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB
pname parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv, and GetDoublev.public static final int GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB
pname parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv, and GetDoublev.public static final int GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB
pname parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv, and GetDoublev.public static final int GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB
pname parameter of FramebufferParameteri, GetFramebufferParameteriv.public static final int GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB
pname parameter of FramebufferParameteri, GetFramebufferParameteriv.public static void nglFramebufferSampleLocationsfvARB(int target,
int start,
int count,
long v)
FramebufferSampleLocationsfvARBcount - the number of sample locations to updatepublic static void glFramebufferSampleLocationsfvARB(int target,
int start,
java.nio.FloatBuffer v)
target.
There are N pairs of programmable sample locations values in a framebuffer, where N is the value of
PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB. Each programmable sample location is specified as a pair of floating point values in the range
[0,1], corresponding to the x and y locations respectively in GL pixel space. (0.5, 0.5) thus corresponds to the pixel center. Sample
locations outside of [0,1] result in undefined behavior.
target - the framebuffer target. One of:FRAMEBUFFER | DRAW_FRAMEBUFFER | READ_FRAMEBUFFER |
start - the first sample location to updatev - a pair of values for each sample location to updatepublic static void nglNamedFramebufferSampleLocationsfvARB(int framebuffer,
int start,
int count,
long v)
NamedFramebufferSampleLocationsfvARBcount - the number of sample locations to updatepublic static void glNamedFramebufferSampleLocationsfvARB(int framebuffer,
int start,
java.nio.FloatBuffer v)
FramebufferSampleLocationsfvARB.framebuffer - the framebuffer object to updatestart - the first sample location to updatev - a pair of values for each sample location to updatepublic static void glEvaluateDepthValuesARB()
public static void glFramebufferSampleLocationsfvARB(int target,
int start,
float[] v)
FramebufferSampleLocationsfvARBpublic static void glNamedFramebufferSampleLocationsfvARB(int framebuffer,
int start,
float[] v)
NamedFramebufferSampleLocationsfvARBCopyright LWJGL. All Rights Reserved. License terms.