java以不同的方式,针对不同的平台,更改LWJGL 3.1中的GLFW 3窗口图标
我正在创建一个与LWJGL 3配合使用的游戏引擎。
我正在创建一个名为“FrameManager”的类,希望处理窗口输入(如大小、位置等),但我在许多网站、文档等中查找过,没有找到如何创建一个简单的方法来设置窗口图标。
首先,我找到了一个GLFW3方法:glfwSetWindowIcon(frameId, images);
但它似乎在macOS Sierra 1.12上不起作用(我暂时无法在Windows上测试)。
以下是我如何使用此方法:
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上运行
我寻找了一个苹果解决方案,然后找到了两种方法,但都不管用:(
首先,将其添加到VM启动参数中:-Xdock:icon=/path/myIcon.png
但什么都没发生:(
我也试过:
Application.getApplication().setDockIconImage(Image img);
它不会创建图标并中断线程(此时线程被阻塞)
我知道应用程序包存在,但真的没有其他解决方案吗
谢谢你的帮助! 祝你今天愉快
# 1 楼答案
根据the GLFW documentationGLFW图标API不工作,请参阅API文档中的“备注”
它提到你应该使用bundles图标来设置dock bar图标