org.lwjgl.opengl.ARBMultisample.java Source code

Java tutorial

Introduction

Here is the source code for org.lwjgl.opengl.ARBMultisample.java

Source

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

import org.lwjgl.system.*;

import static org.lwjgl.system.Checks.*;

/**
 * Native bindings to the <a target="_blank" href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multisample.txt">ARB_multisample</a> extension.
 * 
 * <p>This extension provides a mechanism to antialias all GL primitives: points, lines, polygons, bitmaps, and images. The technique is to sample all
 * primitives multiple times at each pixel. The color sample values are resolved to a single, displayable color each time a pixel is updated, so the
 * antialiasing appears to be automatic at the application level. Because each sample includes depth and stencil information, the depth and stencil
 * functions perform equivalently to the single-sample mode.</p>
 * 
 * <p>An additional buffer, called the multisample buffer, is added to the framebuffer. Pixel sample values, including color, depth, and stencil values, are
 * stored in this buffer. When the framebuffer includes a multisample buffer, it does not also include separate depth or stencil buffers, even if the
 * multisample buffer does not store depth or stencil values. Color buffers (left/right, front/back, and aux) do coexist with the multisample buffer,
 * however.</p>
 * 
 * <p>Multisample antialiasing is most valuable for rendering polygons, because it requires no sorting for hidden surface elimination, and it correctly
 * handles adjacent polygons, object silhouettes, and even intersecting polygons. If only points or lines are being rendered, the "smooth" antialiasing
 * mechanism provided by the base GL may result in a higher quality image. This extension is designed to allow multisample and smooth antialiasing
 * techniques to be alternated during the rendering of a single scene.</p>
 */
public class ARBMultisample {

    /**
     * Accepted by the {@code cap} parameter of Enable, Disable, and IsEnabled, and by the {@code pname} parameter of GetBooleanv, GetIntegerv, GetFloatv, and
     * GetDoublev.
     */
    public static final int GL_MULTISAMPLE_ARB = 0x809D, GL_SAMPLE_ALPHA_TO_COVERAGE_ARB = 0x809E,
            GL_SAMPLE_ALPHA_TO_ONE_ARB = 0x809F, GL_SAMPLE_COVERAGE_ARB = 0x80A0;

    /** Accepted by the {@code mask} parameter of PushAttrib. */
    public static final int GL_MULTISAMPLE_BIT_ARB = 0x20000000;

    /** Accepted by the {@code pname} parameter of GetBooleanv, GetDoublev, GetIntegerv, and GetFloatv. */
    public static final int GL_SAMPLE_BUFFERS_ARB = 0x80A8, GL_SAMPLES_ARB = 0x80A9,
            GL_SAMPLE_COVERAGE_VALUE_ARB = 0x80AA, GL_SAMPLE_COVERAGE_INVERT_ARB = 0x80AB;

    static {
        GL.initialize();
    }

    protected ARBMultisample() {
        throw new UnsupportedOperationException();
    }

    static boolean isAvailable(GLCapabilities caps) {
        return checkFunctions(caps.glSampleCoverageARB);
    }

    // --- [ glSampleCoverageARB ] ---

    /**
     * Specifies simultaneously the values of {@link #GL_SAMPLE_COVERAGE_VALUE_ARB SAMPLE_COVERAGE_VALUE_ARB} and {@link #GL_SAMPLE_COVERAGE_INVERT_ARB SAMPLE_COVERAGE_INVERT_ARB}.
     * 
     * <p>If {@link #GL_SAMPLE_COVERAGE_ARB SAMPLE_COVERAGE_ARB} is enabled, the fragment coverage is ANDed with another temporary coverage. This temporary coverage is a function of the value
     * of {@link #GL_SAMPLE_COVERAGE_VALUE_ARB SAMPLE_COVERAGE_VALUE_ARB}. If {@link #GL_SAMPLE_COVERAGE_INVERT_ARB SAMPLE_COVERAGE_INVERT_ARB} is {@link GL11#GL_TRUE TRUE}, the temporary coverage is inverted (all bit values are inverted) before it
     * is ANDed with the fragment coverage.</p>
     *
     * @param value  the desired coverage value
     * @param invert if true, the temporary coverage is inverted. One of:<br><table><tr><td>{@link GL11#GL_TRUE TRUE}</td><td>{@link GL11#GL_FALSE FALSE}</td></tr></table>
     */
    public static native void glSampleCoverageARB(@NativeType("GLfloat") float value,
            @NativeType("GLboolean") boolean invert);

}