在学习OpenGL的同时,我正在寻找能够评估各种图像类型的图像阅读器,例如".png", ".bmp", ".tga", ".dds", ...
。我的计划是提取图像文件的height
,width
,type
等参数,并使用以下函数进行设置:
glTexImage2D(GL_TEXTURE_2D, 0, <color format>, <width>, <height>,
0, <color orientation>, <data type>, <actual data>);
我经历了CImg library和stb_image.c。但是,我无法了解如何获取widhth
,height
,type
等参数。
<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
设置它。
答案 0 :(得分:2)
你应该看看DevIL - 它可能正是你想要的。
答案 1 :(得分:1)
DevIL对广泛的图像格式选择提供了相当不错的支持,但不再处于积极开发阶段;作者太忙了。
GLI也是一个不错的选择;它只是DDS,但这并不像人们想象的那么大。正在加载JPG / PNG /等。对于原型开发(以及最终用户的轻松定制)非常方便,但DDS文件通常是更好的长期选择,因为它们本身支持游戏和交互式应用程序中常用的几个功能(BCn compressed texture formats,立方环境贴图,体积纹理等)。