class GraphicalConfiguration {

    private static boolean messageDelivered = false;
    private final GLProfile profile = GLProfile.get(GLProfile.GL2);
    private final GLCapabilities caps = new GLCapabilities(profile);
    private final AbstractGraphicsDevice device = GLDrawableFactory.getFactory(profile).getDefaultDevice();
    private boolean vboSupport = false;
    private boolean pBufferSupport = false;
    private String vendor = "";
    private String renderer = "";
    private String versionStr = "";

    public void checkGeneralCompatibility(GL2 gl) {<FILL_FUNCTION_BODY>}

    public String getVendor() {
        return vendor;
    }

    public String getRenderer() {
        return renderer;
    }

    public String getVersionStr() {
        return versionStr;
    }

    public boolean isPBufferSupported() {
        return pBufferSupport;
    }

    public boolean isVboSupported() {
        return vboSupport;
    }

    public boolean isIntelVendor() {
        return vendor.toLowerCase().contains("intel");
    }
}

        if (messageDelivered) {
            return;
        }

        try {
            //Vendor
            vendor = gl.glGetString(GL2.GL_VENDOR);
            renderer = gl.glGetString(GL2.GL_RENDERER);
            versionStr = gl.glGetString(GL2.GL_VERSION);
            String currentConfig = String
                .format(NbBundle.getMessage(GraphicalConfiguration.class, "graphicalConfiguration_currentConfig"),
                    vendor, renderer, versionStr);

            // Check version.
            if (!gl.isExtensionAvailable("GL_VERSION_1_2")) {
                String err = String
                    .format(NbBundle.getMessage(GraphicalConfiguration.class, "graphicalConfiguration_exception"),
                        versionStr, currentConfig);
                throw new GraphicalConfigurationException(err);
            }

            //VBO
            boolean vboExtension = gl.isExtensionAvailable("GL_ARB_vertex_buffer_object");
            boolean vboFunctions = gl.isFunctionAvailable("glGenBuffersARB")
                && gl.isFunctionAvailable("glBindBufferARB")
                && gl.isFunctionAvailable("glBufferDataARB")
                && gl.isFunctionAvailable("glDeleteBuffersARB");
            vboSupport = vboExtension && vboFunctions;

            //Pbuffer
            pBufferSupport = GLDrawableFactory.getDesktopFactory().canCreateGLPbuffer(device, profile);

        } catch (final GraphicalConfigurationException e) {
            messageDelivered = true;
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    JOptionPane
                        .showMessageDialog(WindowManager.getDefault().getMainWindow(), e.getMessage(), "Configuration",
                            JOptionPane.WARNING_MESSAGE);
                    Exceptions.printStackTrace(e);
                }
            });
        }
    
<no_super_class>