使用GLI加载GLFWimage

时间:2018-06-06 12:39:43

标签: c++ opengl glfw

我试图用GLFW设置一个窗口图标,这要求我将GLFWimage作为函数参数。我想使用OpenGL Image (GLI)将.png文件加载到内存中,然后以某种方式将其转换为GLFW图像。但是,经过深入研究后,我一直无法找到解决方法。我知道你可以用SOIL加载图像数据:

GLFWimage icons[1];
icons[0].pixels = SOIL_load_image("icon.png", &icons[0].width, &icons[0].height, 0, SOIL_LOAD_RGBA);

然后使用glfwSetWindowIcon

中的图标进行操作
glfwSetWindowIcon(window.window, 1, icons);

但我很难在GLI中找到与SOIL_load_image类似的功能。

我已尝试使用gli::texture将图片加载到内存中,但我不确定这是否是正确的方法,因为我还没有找到任何可以转换{的函数{1}} gli::texture可用的任何内容(例如GLFWimage)。

简而言之:如何使用GLI将图像加载到OpenGL中以用作GLFW的窗口图标?

编辑:我已尝试过以下内容:

const char*

抱怨"不兼容的指针类型' unsigned char *'和' const char *'"。所以我尝试将它转换为unsigned char:

GLFWimage icons[1];
icons[0].pixels = static_cast< const char* >( gli::convert( gli::load("img.png"), gli::format::FORMAT_RGBA8_UINT_PACK8 ).data() );

以及我的IDE很高兴的icons[0].pixels = (unsigned char *) static_cast< const char* >( gli::convert(gli::load("img.png"), gli::format::FORMAT_RGBA8_UINT_PACK8 ).data() ); static_cast< unsigned char* >,但是给了我以下编译器错误:

static_cast< const unsigned char* >

EDIT2:我发现使用此方法纹理实际上并未转换为其他类型。它保持C:/Users/Lars/CLionProjects/FluidSim/include/GLI/texture.hpp:231:66: error: invalid static_cast from type 'glm::vec<3, int, (glm::qualifier)0>' to type 'std::size_t {aka unsigned int}' GLI_ASSERT(static_cast<size_t>(gli::levels(Storage.extent(0))) < this->ImageMemorySize.size()); ^ ,不能投放到gli::texture,但这仍然无法解决问题。

0 个答案:

没有答案