Загрузка OpenGL изображений 64-битная глубина

0

Как загрузить PNG файл с 64-битным цветом глубины в openGL? Я попробовал SOIL и SDL, но текстура, которую она отображает, является белой. Для 32-битной глубины работает отлично (только если мой PNG содержит градиент, он не отображается плавно, а цвета немного размываются) → что-то не работает должным образом. Я пробовал на форумах numoues, но ничего не исправляет мою проблему. Вот функция, которую я использую с SOIL:

    bool LoadGLTextures()                                  
    {
        texture = SOIL_load_OGL_texture 
    (
    "mountain.png",
    SOIL_LOAD_AUTO,
    SOIL_CREATE_NEW_ID,
    SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
    );


glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    return true;
  }

когда я рисую текстуру, которую я использую:

    glBindTexture(GL_TEXTURE_2D, texture);
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
    //Code for drawing quad with texture (glTexCoord and  glVertex)

У меня есть файл png в моем каталоге проектов.

Теги:
opengl
soil

1 ответ

2
Лучший ответ

Есть 64-битные PNG файлы? Давайте посмотрим:

  1. Библиотека stb_image, используемая SOIL, не поддерживает 64-разрядный PNG: http://nothings.org/stb_image.c
  2. SDL использует libpng, который должен поддерживать все.
  3. Убедитесь, что текстура использует GL_RGBA16.

Я предлагаю попробовать вручную создать 64-битную текстуру, чтобы убедиться, что ваша реализация OpenGL поддерживает GL_RGBA16. Пример. Создайте простой градиент красного цвета в памяти, затем загрузите его как текстуру. Затем, как только вы начнете работать, попробуйте загрузить текстуру с помощью SDL.

  • 0
    Спасибо за совет. SDL, который использует libpng, работал с GL_RGBA16. Единственная ошибка, которую я получаю сейчас - это то, что SDL_GetError (); указывает, что я использую sRGB, и это не правильный цветовой формат. Изображение по-прежнему отображается с более высоким качеством, чем раньше, но оно перевернуто, даже если я указал координаты, которые должны быть нарисованы нормально. Все еще улучшение. Еще раз спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню