private void render() {
        if (!initialized) {
            if (this instanceof IPreloadModifier){
                IPreloadModifier modifier = (IPreloadModifier) this;
                modifier.renderPreLoadScreen();
            } else {
                fontRenderer.setRenderingSize(5);
                fontRenderer.setRenderingColor(ColorHelper.GREEN);
                fontRenderer.renderString("SLDT's GameEngine " + EngineConstants.ENGINE_VERSION, getScreenWidth() - fontRenderer.getStringWidth("SLDT's GameEngine " + EngineConstants.ENGINE_VERSION), getScreenHeight() - 64);
                Material i = renderEngine.getMaterial(background);
                renderEngine.bindMaterial(i);

                renderEngine.addTranslationMatrix(10, 10);
                renderEngine.enableMiddleRotationScale();
                renderEngine.setRotationLevel(-rotate);
                renderEngine.setScaleLevel(1 - scale);
                renderEngine.renderQuad(10, 10, getScreenWidth() - 20, getScreenHeight() - 20);
            }
        }

        if (!gameUsesDefaultCursor) {
            Mouse.setGrabbed(true);
        }

        if (!isWindowExiting) {
            if (currentFrame != null) {
                currentFrame.drawWindow(renderEngine, fontRenderer);
                if (!gameUsesDefaultCursor) {
                    Mouse.setGrabbed(true);
                } else if (!currentFrame.showCursor){
                    Mouse.setGrabbed(true);
                }
            }
        }

        if (isWindowExiting) {
            renderEngine.bindColor(ColorHelper.BLACK);
            renderEngine.renderQuad(0, 0, getScreenWidth(), getScreenHeight());
            fontRenderer.setRenderingColor(ColorHelper.WHITE);
            fontRenderer.renderString("Loading...", 20, 20);
        }

        particleEngine.doRender(renderEngine, fontRenderer);

        renderGameOverlay();
    }