gpt4 book ai didi

java - 使用 glfwSetWindowIcon() 时出现 GLFW_PLATFORM_ERROR

转载 作者:行者123 更新时间:2023-11-30 08:35:40 25 4
gpt4 key购买 nike

我目前使用 LWJGL 3 编写一个项目。自 GLFW 3.2 以来,它可以添加一个窗口图标。我像你在下面看到的那样使用它,但我一直收到错误,我不知道为什么。我做错了什么?

我已经尝试过的:

  • 我已确定该文件存在于“res/img/icon.png”中。

  • PNGLoader(找到 here)可以正常工作,因为我正在使用纹理并且加载它们没有任何问题。

代码:

PNGDecoder dec = null;
try {
dec = new PNGDecoder(new FileInputStream("res/img/icon.png"));
int width = dec.getWidth();
int height = dec.getHeight();
ByteBuffer buf = BufferUtils.createByteBuffer(width * height * 4);
dec.decode(buf, width * 4, PNGDecoder.Format.RGBA);
buf.flip();
Buffer images = new Buffer(buf);
GLFW.glfwSetWindowIcon(window, images);
} catch (IOException e) {
e.printStackTrace();
}

这是我得到的错误:

[LWJGL] GLFW_PLATFORM_ERROR error
Description : Win32: Failed to create RGBA bitmap
Stacktrace :
org.lwjgl.glfw.GLFW.nglfwSetWindowIcon(GLFW.java:1802)
org.lwjgl.glfw.GLFW.glfwSetWindowIcon(GLFW.java:1829)
ch.norelect.emulator.designer.Designer.initialize(Designer.java:81)
ch.norelect.emulator.designer.Designer.start(Designer.java:48)
ch.norelect.emulator.Main.main(Main.java:27)

最佳答案

您将原始像素数据作为 GLFWImage.Buffer 传递,但 GLFW 也需要宽度和高度。 GLFWImage.Buffer 只是一个方便的类,用于将多个 GLFWImage 彼此相邻放置,每个都保存有关图像的属性。

GLFWImage image = GLFWImage.malloc();
image.set(width, height, buf);
GLFWImage.Buffer images = GLFWImage.malloc(1);
images.put(0, image);

glfwSetWindowIcon(window, images);

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

关于java - 使用 glfwSetWindowIcon() 时出现 GLFW_PLATFORM_ERROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38053553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com