我正在创建一个与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);
它不会创建一个图标并中断线程(此时线程被阻止)。
我知道应用程序包存在,但实际上没有其他解决方案吗?
感谢您的帮助! 祝你有愉快的一天!