GLFW 设置窗口图标

Ido*_*ftw 6 c++ opengl glfw

所以,我正在尝试为我的 glfw 窗口设置窗口图标(显然),但我在这样做时遇到了麻烦,因为我不知道如何使用 GLFWimage 设置图标。文档中的代码如下所示:

GLFWimage images[2];
images[0] = load_icon("my_icon.png");
images[1] = load_icon("my_icon_small.png");
glfwSetWindowIcon(window, 2, images);
Run Code Online (Sandbox Code Playgroud)

但在那里,它没有显示如何使用或创建“load_icon”函数。所以,任何人都可以帮忙,因为我一直在寻找几个月。

eld*_*ldo 12

glfwSetWindowIcon(GLFWwindow * window, int count, const GLFWimage * images)
Run Code Online (Sandbox Code Playgroud)

我认为前两个参数很清楚,还有第三个,GLFWimage这是一个带有字段的结构,int width, int height, unsigned char * pixels但您的任务是为其提供数据,GLFW 不提供加载图像的功能,但有几个库可以,或者您可以编写自己的函数来获取图像数据。

我不是真正的 C++ 人,所以我不知道目前最新/最好的库,但是例如有土壤可以正常工作。像这样的东西:

GLFWimage icons[1];
icons[0].pixels = SOIL_load_image("icon.png", &icons[0].width, &icons[0].height, 0, SOIL_LOAD_RGBA);
glfwSetWindowIcon(window.window, 1, icons);
SOIL_free_image_data(icons[0].pixels);
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用 stb_image.h,这是您应该使用的代码: GLFWimage images[1]; 图像[0].pixels = stbi_load("路径", &images[0].width, &images[0].height, 0, 4); //rgba 通道 glfwSetWindowIcon(window, 1, images); stbi_image_free(图像[0]。像素); (16认同)
  • 老兄,就这个答案吧。 (4认同)

小智 7

如果您使用“stb_image.h”,这是您应该使用的代码:

GLFWimage images[1]; 
images[0].pixels = stbi_load("PATH", &images[0].width, &images[0].height, 0, 4); //rgba channels 
glfwSetWindowIcon(window, 1, images); 
stbi_image_free(images[0].pixels);
Run Code Online (Sandbox Code Playgroud)