2D текстурный массив OpenGL не отображает ничего при определенных размерах размещения - PullRequest
0 голосов
/ 27 февраля 2019

Я использую nuklear с SDL2 и OpenGL для рендеринга GUI поверх игры.Я пытаюсь заставить nuklear считывать игровые ресурсы из текстурного атласа, состоящего из текстуры 2D-массива, так как остальная часть игры будет читать ресурсы через другой шейдер.

Я получаюпроблема, при которой установка depth параметра glTexImage3D на 2 во время выделения памяти текстур не приводит к визуализации ничего, но установка любого из [1, 3, 4, 5] отображает вывод правильно.width и height оба установлены на GL_MAX_TEXTURE_SIZE (16384 в моем случае), и gl не выводит никаких ошибок.

glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, dev->atlas_width, dev->atlas_height, dev->atlas_depth, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); glTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, dev->atlas_offset_x, dev->atlas_offset_y, dev->atlas_offset_z, width, height, 1, GL_RGBA, GL_UNSIGNED_BYTE, image);

Я сделал минимальныйменяется на простое ядерное демо здесь , которое мне не подходит.Должно быть легко клонировать и запускать / тестировать.

  • GL версия 3.3
  • macOS Mojave 10.14.3
  • Intel Iris Graphics 550 1536 МБ

Снимки экрана:

Правильный вывод (глубина glTexImage3D! = 2)

Неверный вывод (глубина glTexImage3D == 2)

...