Универсальный считыватель изображений OpenGL и поддержка GLFW (glfwReadImage, glfwLoadTexture2D) для различных форматов изображений

При изучении 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 а также 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 по отдельности.

2

Решение

DevIL имеет довольно приличную поддержку широкого выбора форматов изображений, но больше не находится в стадии активной разработки; автор слишком занят

GLI это также хороший выбор; это только DDS, но это не такая большая проблема, как можно подумать. Загрузка JPG / PNG / и т. Д. удобен для разработки прототипов (и простой настройки для конечных пользователей), но файлы DDS, как правило, являются лучшим долгосрочным выбором из-за их собственной поддержки нескольких функций, которые обычно используются в играх и интерактивных приложениях (BCn сжатые форматы текстур, кубические карты окружения, объемные текстуры и т. д.).

1

Другие решения

Вы должны взглянуть на DevIL — это, вероятно, именно то, что вы хотите.

2

По вопросам рекламы [email protected]