Падает фпс из-за большого кол-ва текста в гуи

Версия Minecraft
1.12.2
API
Forge
459
13
35
Всем привет. Делаю условно список игроков на сервере со скроллом в гуи. Если их слишком много, то ФПС очень сильно падает.
Java:
        for (int i = 0; i < allRows; i++) {
            GL11.glEnable(GL11.GL_SCISSOR_TEST);
            GL11.glScissor(0, (height - maxH + this.height / 16) * 2, this.width * 2, (maxH - minH) * 2);

            double textH = height / 4 - height / 16 + (i * lineSpacing) - scrollY;

            this.mc.fontRenderer.drawString((i + 1) + ".  " + players.get(i), this.width / 4, (int) textH, 0xFFFFFF);
            GL11.glDisable(GL11.GL_SCISSOR_TEST);
        }
На момент, когда я заметил просадки, было 390 строк и 11 фпс.
 
Последнее редактирование:

tox1cozZ

aka Agravaine
8,455
598
2,892
Надо рисовать только то, что попадает в обзор.
Что-то типа такого:
Java:
if(textH > listPosY - lineHeight && textH + lineHeight < listPosY + listHeight)
И естественно не делать glScissor на каждый элемент. Зачем? Ты обрезать должен один раз весь лист и всё.

Я писал лист, который всё это делает и не лагает.
 
459
13
35
Я писал лист, который всё это делает и не лагает.
классный лист, но там больше одного листа установить нельзя
 

tox1cozZ

aka Agravaine
8,455
598
2,892
178
4
42
Ну наконец-то вопрос достойный :)
Лист сделать очень просто - берёшь это и пролистываешь до заголовка "Добавление прокрутки" в конце Шага 3.
Понятно, что ради использования фичи придётся притащить библиотеку и разобраться в использовании, но вроде там понятно расписано. Ну и я думаю, что лист у тебя там такой не один, другие бонусы тоже получишь.
 
Сверху