Оптимизация скорости работы кода, opengl

Требуется оптимизировать цикл, как я могу это сделать? Его задача - пробежаться по всему двухмерному массиву (условно, размер которого 50 * 50), и каждую ячейку отправить на рисовку в другой метод, hashTable вместо hashMap тк генерация идет в другом потоке. Как только он отправит весь массив на рисовку, то меняет буффер, и начинает по новой. Просто не знаю как починить 14фпс, но перерисовка всего массива вроде вменяемая тактика и нормальная практика в некоторых играх

public void loop() {
        Hashtable<String, ByteBuffer> byteBuffer = WorldGenerator.GenerateByteBuffer();
        Hashtable<String, BufferedImage> bufferedImage = WorldGenerator.GenerateBufferedImage();
        int x = 0;
        int y = 0;
        boolean start = false;
        WorldObjects[][] objects;
        Physics thread = new Physics();
        thread.setDaemon(true);

        glfwSwapBuffers(glfwWindow);
        glClear(GL_COLOR_BUFFER_BIT);

        //пока окно не закрыто - каждый такт опрашивает glfw
        while (!glfwWindowShouldClose(glfwWindow)) {
            glfwPollEvents();
            if (start == true) {
                objects = thread.getWorldObjects();
                TextureDrawing.draw(objects[x][y].path, objects[x][y].x, objects[x][y].y, byteBuffer.get(objects[x][y].path), bufferedImage.get(objects[x][y].path));
                x++;

                if (x == 50) {
                    y++;
                    x = 0;
                }
                if (y == 50) {
                    glfwSwapBuffers(glfwWindow);
                    y = 0;
                    x = 0;
                }
            }
            //f1
            else if (glfwGetKey(glfwWindow, 290) == 1) {
                thread.start();
                start = true;
            }
        }
    }

Примечание: буффер изменяется практически каждый кадр (передвижение игрока, уничтожение чего либо, и тд)


Ответы (0 шт):