针对不同平台的不同方式,可以更改LWJGL 3.1中的GLFW 3窗口图标

时间:2017-01-17 18:40:42

标签: java lwjgl glfw


我正在创建一个与LWJGL 3一起使用的游戏引擎。 我正在创建一个名为' FrameManager'希望处理窗口输入(如大小,位置等),但我已在许多网站,文档等中寻找,我没有找到如何创建一个简单的方法希望设置窗口图标。 首先,我找到了一个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();

我在Window Creation / Show之前/之后尝试过,但在macOS Sierra 10.12中没有任何问题(没有错误,但没有图标)。

所以,我认为它适用于Window,但不适用于Mac。

我找了一个Apple解决方案,而不是找到两种方法,但它不起作用:(
首先,在VM启动参数中添加它:-Xdock:icon=/path/myIcon.png
但没有任何事情发生:( 我也试过了:

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

它不会创建一个图标并中断线程(此时线程被阻止)。

我知道应用程序包存在,但实际上没有其他解决方案吗?

感谢您的帮助! 祝你有愉快的一天!

1 个答案:

答案 0 :(得分:0)

根据the GLFW documentation GLFW图标API不起作用,请参阅API文档中的“备注”。

它提到您应该使用捆绑包图标来设置停靠栏图标。