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