Example usage for org.lwjgl.opengl ARBDrawBuffers GL_MAX_DRAW_BUFFERS_ARB

List of usage examples for org.lwjgl.opengl ARBDrawBuffers GL_MAX_DRAW_BUFFERS_ARB

Introduction

In this page you can find the example usage for org.lwjgl.opengl ARBDrawBuffers GL_MAX_DRAW_BUFFERS_ARB.

Prototype

int GL_MAX_DRAW_BUFFERS_ARB

To view the source code for org.lwjgl.opengl ARBDrawBuffers GL_MAX_DRAW_BUFFERS_ARB.

Click Source Link

Document

Accepted by the pname parameters of GetIntegerv, GetFloatv, and GetDoublev.

Usage

From source file:ar.com.quark.backend.lwjgl.opengl.DesktopGLES20.java

License:Apache License

/**
 * {@inheritDoc}//ww w .  j av a 2s .com
 */
@Override
public RenderCapabilities glCapabilities() {
    //!
    //! Retrieves the capabilities from the context.
    //!
    final GLCapabilities capabilities = GL.getCapabilities();

    final RenderCapabilities.LanguageVersion version;
    if (capabilities.OpenGL33) {
        version = RenderCapabilities.LanguageVersion.GL33;
    } else if (capabilities.OpenGL32) {
        version = RenderCapabilities.LanguageVersion.GL32;
    } else if (capabilities.OpenGL31) {
        version = RenderCapabilities.LanguageVersion.GL31;
    } else if (capabilities.OpenGL30) {
        version = RenderCapabilities.LanguageVersion.GL30;
    } else if (capabilities.OpenGL21) {
        version = RenderCapabilities.LanguageVersion.GL21;
    } else {
        throw new RuntimeException("Cannot find a suitable context, OpenGL 2.1 is at-least required.");
    }

    //!
    //! Retrieves the limitation from the context.
    //!
    final Map<RenderCapabilities.Limit, Float> limit = new HashMap<>();

    limit.put(RenderCapabilities.Limit.FRAME_ATTACHMENT, GL11.glGetFloat(GL30.GL_MAX_COLOR_ATTACHMENTS));

    limit.put(RenderCapabilities.Limit.FRAME_MULTIPLE_RENDER_ATTACHMENT,
            GL11.glGetFloat(ARBDrawBuffers.GL_MAX_DRAW_BUFFERS_ARB));

    limit.put(RenderCapabilities.Limit.FRAME_SAMPLE, GL11.glGetFloat(GL30.GL_MAX_SAMPLES));

    limit.put(RenderCapabilities.Limit.TEXTURE_ANISOTROPIC,
            GL11.glGetFloat(EXTTextureFilterAnisotropic.GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT));

    limit.put(RenderCapabilities.Limit.TEXTURE_SIZE, GL11.glGetFloat(GL11.GL_MAX_TEXTURE_SIZE));

    limit.put(RenderCapabilities.Limit.TEXTURE_STAGE, GL11.glGetFloat(GL20.GL_MAX_TEXTURE_IMAGE_UNITS));

    limit.put(RenderCapabilities.Limit.GLSL_MAX_VERTEX_ATTRIBUTES, GL11.glGetFloat(GL20.GL_MAX_VERTEX_ATTRIBS));

    //!
    //! Retrieves the extension from the context.
    //!
    final Map<RenderCapabilities.Extension, Boolean> extension = new HashMap<>();

    extension.put(RenderCapabilities.Extension.FRAME_BUFFER, capabilities.GL_ARB_framebuffer_object);
    extension.put(RenderCapabilities.Extension.FRAME_BUFFER_MULTIPLE_RENDER_TARGET,
            capabilities.GL_ARB_draw_buffers);
    extension.put(RenderCapabilities.Extension.FRAME_BUFFER_MULTIPLE_SAMPLE, capabilities.GL_ARB_multisample);

    extension.put(RenderCapabilities.Extension.VERTEX_ARRAY_OBJECT, capabilities.GL_ARB_vertex_array_object);

    extension.put(RenderCapabilities.Extension.TEXTURE_3D, true);
    extension.put(RenderCapabilities.Extension.TEXTURE_COMPRESSION_S3TC,
            capabilities.GL_EXT_texture_compression_s3tc);
    extension.put(RenderCapabilities.Extension.TEXTURE_FILTER_ANISOTROPIC,
            capabilities.GL_EXT_texture_filter_anisotropic);

    extension.put(RenderCapabilities.Extension.GLSL_PRECISION, capabilities.GL_ARB_shader_precision);
    extension.put(RenderCapabilities.Extension.GLSL_EXPLICIT_ATTRIBUTE,
            capabilities.GL_ARB_explicit_attrib_location);
    extension.put(RenderCapabilities.Extension.GLSL_EXPLICIT_UNIFORM,
            capabilities.GL_ARB_explicit_uniform_location);
    extension.put(RenderCapabilities.Extension.GLSL_GEOMETRY, capabilities.GL_ARB_geometry_shader4);
    return new RenderCapabilities(version, extension, limit);
}