public int draw(int x, int y){
        if(framebuffer1 == null){
            return 378;
        }
        front = !front;
        
        FrameBuffer frontBuffer = front ? framebuffer1 : framebuffer2;
        FrameBuffer backBuffer = front ? framebuffer2 : framebuffer1;
        frontBuffer.bind();
  
        
        sp.enable();
        GL11.glDisable(GL_BLEND);
        GL20.glUniform2f(sp.getUniformLocation("cursor"), x, height - y);
        GL11.glBindTexture(GL_TEXTURE_2D, 0);
        GL11.glBindTexture(GL_TEXTURE_RECTANGLE, backBuffer.framebuffertex);

        glBegin(GL_TRIANGLES);
            glVertex2f(-1, -1);
            glVertex2f(-1, 1);
            glVertex2f(1, 1);
            
            glVertex2f(-1, -1);
            glVertex2f(1, -1);
            glVertex2f(1, 1);
        GL11.glEnd();
        
        sp.disable();
        if(firstFrame){
            firstFrame = false;
            logodump.enable();
            GL11.glBindTexture(GL_TEXTURE_RECTANGLE, 0);
            title.bind();
            glBegin(GL_TRIANGLES);
                glVertex2f(-1, -1);
                glVertex2f(-1, 1);
                glVertex2f(1, 1);

                glVertex2f(-1, -1);
                glVertex2f(1, -1);
                glVertex2f(1, 1);
            GL11.glEnd();
            title.unbind();
            logodump.disable();
            title.destroy();
            title = null;
        }
        
        screenBuffer.bind();
        
        sp2.enable();
        GL11.glBindTexture(GL_TEXTURE_RECTANGLE, backBuffer.framebuffertex);
        glBegin(GL_QUADS);
            glTexCoord2f(0, height);
            glVertex2f(0, 0);
            glTexCoord2f(0, 0);
            glVertex2f(0, 378);
            glTexCoord2f(width, 0);
            glVertex2f(600, 378);
            glTexCoord2f(width, height);
            glVertex2f(600, 0);
        glEnd();
        sp2.disable();
        
        GL11.glBindTexture(GL_TEXTURE_RECTANGLE, 0);
        
        GL11.glEnable(GL_BLEND);
        
        return 378;
    }