Example usage for org.lwjgl.opengl ARBMultisample GL_MULTISAMPLE_ARB

List of usage examples for org.lwjgl.opengl ARBMultisample GL_MULTISAMPLE_ARB

Introduction

In this page you can find the example usage for org.lwjgl.opengl ARBMultisample GL_MULTISAMPLE_ARB.

Prototype

int GL_MULTISAMPLE_ARB

To view the source code for org.lwjgl.opengl ARBMultisample GL_MULTISAMPLE_ARB.

Click Source Link

Document

Accepted by the cap parameter of Enable, Disable, and IsEnabled, and by the pname parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.

Usage

From source file:com.ardor3d.framework.lwjgl.LwjglCanvasRenderer.java

License:Open Source License

@MainThread
public void init(final DisplaySettings settings, final boolean doSwap) {
    _doSwap = doSwap;/*from   www.j a v  a  2s .com*/

    // Look up a shared context, if a shared LwjglCanvasRenderer is given.
    // XXX: Shared contexts will probably not work... lwjgl does not seem to have a way to make a new glcontext that
    // shares lists, textures, etc.
    RenderContext sharedContext = null;
    if (settings.getShareContext() != null) {
        sharedContext = ContextManager
                .getContextForKey(settings.getShareContext().getRenderContext().getContextKey());
    }

    try {
        _canvasCallback.makeCurrent();
        GLContext.useContext(_context);
    } catch (final LWJGLException e) {
        throw new Ardor3dException("Unable to init CanvasRenderer.", e);
    }

    final ContextCapabilities caps = createContextCapabilities();
    _currentContext = new RenderContext(this, caps, sharedContext);

    ContextManager.addContext(this, _currentContext);
    ContextManager.switchContext(this);

    _renderer = createRenderer();

    if (settings.getSamples() != 0 && caps.isMultisampleSupported()) {
        GL11.glEnable(ARBMultisample.GL_MULTISAMPLE_ARB);
    }

    _renderer.setBackgroundColor(ColorRGBA.BLACK);

    if (_camera == null) {
        /** Set up how our camera sees. */
        _camera = new Camera(settings.getWidth(), settings.getHeight());
        _camera.setFrustumPerspective(45.0f, (float) settings.getWidth() / (float) settings.getHeight(), 1,
                1000);
        _camera.setProjectionMode(ProjectionMode.Perspective);

        final Vector3 loc = new Vector3(0.0f, 0.0f, 10.0f);
        final Vector3 left = new Vector3(-1.0f, 0.0f, 0.0f);
        final Vector3 up = new Vector3(0.0f, 1.0f, 0.0f);
        final Vector3 dir = new Vector3(0.0f, 0f, -1.0f);
        /** Move our camera to a correct place and orientation. */
        _camera.setFrame(loc, left, up, dir);
    } else {
        // use new width and height to set ratio.
        _camera.setFrustumPerspective(_camera.getFovY(),
                (float) settings.getWidth() / (float) settings.getHeight(), _camera.getFrustumNear(),
                _camera.getFrustumFar());
    }
}

From source file:com.ardor3d.framework.lwjgl.LwjglHeadlessCanvas.java

License:Open Source License

protected void init() {
    final int width = _settings.getWidth();
    final int height = _settings.getHeight();

    try {//from w  w w.j  a  va 2s .  c  o  m
        // Create a Pbuffer so we can have a valid gl context to work with
        final PixelFormat format = new PixelFormat(_settings.getAlphaBits(), _settings.getDepthBits(),
                _settings.getStencilBits());
        _buff = new Pbuffer(1, 1, format, null);
        _buff.makeCurrent();
    } catch (final LWJGLException ex) {
        ex.printStackTrace();
    }

    // Set up our Ardor3D context and capabilities objects
    final LwjglContextCapabilities caps = new LwjglContextCapabilities(GLContext.getCapabilities());
    final RenderContext currentContext = new RenderContext(this, caps, null);

    if (!caps.isFBOSupported()) {
        throw new Ardor3dException("Headless requires FBO support.");
    }

    if (caps.isFBOMultisampleSupported() && caps.isFBOBlitSupported() && _settings.getSamples() > 0) {
        _useMSAA = true;
    }

    // Init our FBO.
    final IntBuffer buffer = BufferUtils.createIntBuffer(1);
    EXTFramebufferObject.glGenFramebuffersEXT(buffer); // generate id

    // Bind the FBO
    _fboID = buffer.get(0);
    EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, _fboID);

    // initialize our color renderbuffer
    EXTFramebufferObject.glGenRenderbuffersEXT(buffer); // generate id
    _colorRBID = buffer.get(0);
    EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _colorRBID);
    EXTFramebufferObject.glRenderbufferStorageEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, GL11.GL_RGBA, width,
            height);

    // Attach color renderbuffer to framebuffer
    EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT,
            EXTFramebufferObject.GL_COLOR_ATTACHMENT0_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT,
            _colorRBID);

    // initialize our depth renderbuffer
    EXTFramebufferObject.glGenRenderbuffersEXT(buffer); // generate id
    _depthRBID = buffer.get(0);
    EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _depthRBID);
    EXTFramebufferObject.glRenderbufferStorageEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT,
            GL11.GL_DEPTH_COMPONENT, width, height);

    // Attach depth renderbuffer to framebuffer
    EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT,
            EXTFramebufferObject.GL_DEPTH_ATTACHMENT_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT, _depthRBID);

    // Check FBO complete
    LwjglTextureRenderer.checkFBOComplete(_fboID);

    // Now do it all again for multisample, if requested and supported
    if (_useMSAA) {

        // Init our ms FBO.
        EXTFramebufferObject.glGenFramebuffersEXT(buffer); // generate id

        // Bind the ms FBO
        _msfboID = buffer.get(0);
        EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, _msfboID);

        // initialize our ms color renderbuffer
        EXTFramebufferObject.glGenRenderbuffersEXT(buffer); // generate id
        _mscolorRBID = buffer.get(0);
        EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _mscolorRBID);
        EXTFramebufferMultisample.glRenderbufferStorageMultisampleEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT,
                _settings.getSamples(), GL11.GL_RGBA, width, height);

        // Attach ms color renderbuffer to ms framebuffer
        EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT,
                EXTFramebufferObject.GL_COLOR_ATTACHMENT0_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT,
                _mscolorRBID);

        // initialize our ms depth renderbuffer
        EXTFramebufferObject.glGenRenderbuffersEXT(buffer); // generate id
        _msdepthRBID = buffer.get(0);
        EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _msdepthRBID);
        EXTFramebufferMultisample.glRenderbufferStorageMultisampleEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT,
                _settings.getSamples(), GL11.GL_DEPTH_COMPONENT, width, height);

        // Attach ms depth renderbuffer to ms framebuffer
        EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT,
                EXTFramebufferObject.GL_DEPTH_ATTACHMENT_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT,
                _msdepthRBID);

        // Check MS FBO complete
        LwjglTextureRenderer.checkFBOComplete(_msfboID);

        // enable multisample
        GL11.glEnable(ARBMultisample.GL_MULTISAMPLE_ARB);
    }

    // Setup our data buffer for storing rendered image data.
    _data = ByteBuffer.allocateDirect(width * height * 4).order(ByteOrder.LITTLE_ENDIAN).asIntBuffer();

    // Add context to manager and set as active.
    ContextManager.addContext(this, currentContext);
    ContextManager.switchContext(this);

    // Setup a default bg color.
    _renderer.setBackgroundColor(ColorRGBA.BLACK);

    // Setup a default camera
    _camera = new Camera(width, _settings.getHeight());
    _camera.setFrustumPerspective(45.0f, (float) width / (float) _settings.getHeight(), 1, 1000);
    _camera.setProjectionMode(ProjectionMode.Perspective);

    // setup camera orientation and position.
    final Vector3 loc = new Vector3(0.0f, 0.0f, 0.0f);
    final Vector3 left = new Vector3(-1.0f, 0.0f, 0.0f);
    final Vector3 up = new Vector3(0.0f, 1.0f, 0.0f);
    final Vector3 dir = new Vector3(0.0f, 0f, -1.0f);
    _camera.setFrame(loc, left, up, dir);

    // release our FBO(s) until used.
    EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, 0);
}