Различные способы, для разных платформ, чтобы изменить значок окна GLFW 3 в LWJGL 3.1

Я создаю игровой движок, который работает с LWJGL 3.

Я создаю класс под названием «FrameManager» wish handle Window inputs (как размер, положение и т. д.), Но я искал во многих веб-сайтах, документации и т. д., и я не нашел, как создать простой метод wish set the Window icon.
Во-первых, я нашел метод GLFW 3: glfwSetWindowIcon(frameId, images);

но он, похоже, не работает на macOS Sierra 1.12 (я не могу тестировать на Window на данный момент).
Вот как я использую этот метод:


                log.debug(" -> Setting Icon...");
                final PNGDecoder decoder = new PNGDecoder(new FileInputStream(iconPath));
                final int iconWidth = decoder.getWidth();
                final int iconHeight = decoder.getHeight();
                final ByteBuffer buffer = createByteBuffer(iconWidth * iconHeight * 4);
                decoder.decode(buffer, iconWidth * 4, PNGDecoder.Format.RGBA);
                buffer.flip();
                final GLFWImage image = malloc();
                image.set(iconWidth, iconHeight, buffer);
                final GLFWImage.Buffer images = malloc(1);
                images.put(0, image);

                glfwSetWindowIcon(frameId, images);

                images.free();
                image.free();

Я пробовал это до / после создания окна / показать, но ничего не происходит в macOS Sierra 10.12 (нет ошибки, но нет значка).

Итак, я считал, что он работает на Windows, но не на Mac.

Я искал решение Apple, чем я нашел 2 способа, но это не работает 🙁

Во-первых, добавление этого в args запуска виртуальной машины: -Xdock:icon=/path/myIcon.png

но ничего не происходит 🙁
И я также пытался, что:


Application.getApplication().setDockIconImage(Image img);

Он не создает иконку и не прерывает поток (Поток заблокирован в данный момент).

Я знал, что пакет приложений существует, но действительно ли нет другого решения ?

Спасибо за помощь!
Хорошего дня!

1 ответ

  1. Согласно документации GLFW API значка GLFW не работает, см. «Примечания» в документации API.

    Он упоминает, что вы должны использовать значок bundles, чтобы установить значок панели dock.