public void drawWindow(RenderEngine renderEngine, FontRenderer fontRenderer) {
        if (!(this instanceof SceneScreen)) {
            if (this instanceof IRendersEventProvider) {
                IRendersEventProvider provider = (IRendersEventProvider) this;
                provider.preRenderScreen(renderEngine, fontRenderer);
            } else {
                renderEngine.bindMaterial(backgroundImage);
                renderEngine.renderQuad(10, 10, GameApplication.getScreenWidth() - 20, GameApplication.getScreenHeight() - 20);
            }
        }

        renderScreen(renderEngine, fontRenderer);

        for (IScreenComponent g : screenComponents) {
            if (g != null)
                g.renderComponent(renderEngine, fontRenderer);
        }

        if (theGame.gameSettings.showFPS) {
            fontRenderer.setRenderingSize(4);
            fontRenderer.setRenderingColor(ColorHelper.RED);
            fontRenderer.renderString("FPS : " + theGame.getGameFPS(), 0, 50);
        }

        if (displayedMessage != null) {
            displayedMessage.renderMessage(renderEngine, fontRenderer);
        }

        if (!(this instanceof SceneScreen)) {
            if (this instanceof IRendersEventProvider) {
                IRendersEventProvider provider = (IRendersEventProvider) this;
                provider.postRenderScreen(renderEngine, fontRenderer);
            }
        }
    }