当前位置: 首页 > 知识库问答 >
问题:

LWJGL 3.1中不同平台更改GLFW 3窗口图标的不同方法

农鸿达
2023-03-14


我正在创建一个与LWJGL 3一起工作的游戏引擎。
我正在创建一个名为“框架管理器”的类,希望处理窗口输入(如大小、位置等),但我在许多网站、留档等中寻找,我没有找到如何创建一个简单的方法希望设置窗口图标。首先,我发现了一个GLFW 3方法:glfwSetWindowIcon(frameId,图像);
但是它似乎在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个答案

戎俊
2023-03-14

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

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

 类似资料:
  • 我需要调用不同的头来托管和关于下面提到的页面,当执行下面的代码时,我得到的错误是“未定义的类常量‘hosting’”。建议我如何解决这个问题,并为不同的页面调用不同的标题。

  • 本文向大家介绍Python 多个图同时在不同窗口显示的实现方法,包括了Python 多个图同时在不同窗口显示的实现方法的使用技巧和注意事项,需要的朋友参考一下 Python的matplotlib包可以轻松的将数据可视化,博主最近遇到了一个问题,博主想同时在两个窗口展示两张图,但是代码运行结果总是显示一张图,把当前的图删掉之后才能显示另一张图。网上找了一些解决方案都是把它们放在一个窗口中,两个图片分

  • 我在制作这个项目网站的时候,突然想到要制作一个弹出框来显示产品的描述。当我制作弹出式消息框时,它会出现在单击不同的图像时,我看到它会显示不同产品的相同消息,即使在对每种产品给出不同的描述之后也是如此。我不太懂JavaScript,但我想必须在那里添加一些代码。 这里是代码- 这是我从codepen中获取的模板。木卫一。

  • 2.6 在不同的窗口中切换 当CGDB最初运行时,CGDB默认处于GDB模式。状态栏右侧的 * 符号显示当前的输入会被传入GDB窗口。按下 ESC 键可切换至代码窗口,CGDB模式切换键是将用户从别的模式切换到CGDB模式的快捷键,默认的CGDB模式切换键是 ESC 。如果您想改变CGDB模式切换键对应的快捷键,请查阅CGDB的配置选项。参见第4章。 现在CGDB处于CGDB模式。要切换回GDB模

  • 这不会改变我的标签。只有第一个运行,其他的不会改变。在Java摇摆中,它起作用了,但在Javafx中没有。

  • 问题内容: 一些旧代码依赖于平台的默认字符集进行翻译。对于“西方世界”中的Windows和Linux安装,我知道这意味着什么。但是考虑到俄罗斯或亚洲平台,我完全不确定其平台的默认字符集是什么(只是UTF-16?)。 因此,我想知道执行以下代码行会得到什么: PS: 我不想在这里讨论字符集的问题及其与Unicode的区别。我只想收集什么操作系统会导致什么特定字符集。请仅发布具体值! 问题答案: 这是