OpenGL通用图像阅读器和GLFW(glfwReadImage,glfwLoadTexture2D)支持各种图像格式

时间:2012-11-02 14:39:17

标签: c++ c image opengl glfw

在学习OpenGL的同时,我正在寻找能够评估各种图像类型的图像阅读器,例如".png", ".bmp", ".tga", ".dds", ...。我的计划是提取图像文件的heightwidthtype等参数,并使用以下函数进行设置:

glTexImage2D(GL_TEXTURE_2D, 0, <color format>, <width>, <height>,
    0, <color orientation>, <data type>, <actual data>);

我经历了CImg librarystb_image.c。但是,我无法了解如何获取widhthheighttype等参数。

<GL/glfw.h>似乎是一个很好的框架。我的印象是它只使用以下函数加载".tga"格式:

int glfwLoadTexture2D(const char *name, int flags);

它是否支持所有格式?

另外,我在附近看到了下面的功能。如果有人可以简要介绍那么这将是一个奖励。

int  glfwReadImage(const char *name, GLFWimage *img, int flags);
void glfwFreeImage(GLFWimage *img);

其中:

typedef struct {
  int Width, Height;
  int Format;
  int BytesPerPixel;
  unsigned char *Data;
} GLFWimage;

如果GLFW不支持所有格式,那么是否有任何库只能获得上述GLFWimage类似的参数,并允许我们分别通过glTexImage2D设置它。

2 个答案:

答案 0 :(得分:2)

你应该看看DevIL - 它可能正是你想要的。

答案 1 :(得分:1)

DevIL对广泛的图像格式选择提供了相当不错的支持,但不再处于积极开发阶段;作者太忙了。

GLI也是一个不错的选择;它只是DDS,但这并不像人们想象的那么大。正在加载JPG / PNG /等。对于原型开发(以及最终用户的轻松定制)非常方便,但DDS文件通常是更好的长期选择,因为它们本身支持游戏和交互式应用程序中常用的几个功能(BCn compressed texture formats,立方环境贴图,体积纹理等)。