В OpenGL я пытаюсь отобразить местности с 8 512x512 изображений с использованием texture3D, чтобы получить смешанные изменения текстуры. Но OpenGL заставляет меня выделить 512x512x512 массив вместо 512x512x8 Что может быть решениеOpenGL Terrain Texture3D Карта
ответ
Но OPENGL заставляет меня выделить 512x512x512
Что дал вам эту идею? 512 × 512 × 8 - полностью допустимый размер 3D-текстуры. Для ландшафтов вы также можете посмотреть GL_TEXTURE_2D_ARRAY, который также инициализируется с помощью glTexImage3D, но не интерполирует между слоями, что полезно в определенных ситуациях.
Но мне нужна интерполяция, чтобы наложить одну текстуру на другую –
@ user2362969: Тогда просто используйте GL_TEXTURE_3D, вы можете использовать тот формат, который хотите использовать просто отлично. – datenwolf
Извините, я получил то, что я ошибался .... да, это работает –
Даже если вам нужна интерполяция для смешивания одной текстуры в другую, вы также должны попробовать использовать GL_TEXTURE_2D_ARRAY и просто вручную смешать текстуры вместе в шейдере фрагмента. Хотя может показаться, что лучше воспользоваться автоматическим фильтром увеличения аппаратного обеспечения, помните, что для реализации GL_TEXTURE_3D гораздо более вероятно, что соседние пиксели в 6 направлениях будут кэшироваться, и, насколько я понимаю, вы уделяете больше внимания отдельные 2D-текстуры в наборе и их соседние слои, поэтому вам лучше иметь аппаратное обеспечение 3 строки кэша, каждый по 4 направлениям. Попробуйте оба и посмотрите, что лучше работает
* «Но OpenGL заставляет меня выделять 512x512x512 массив вместо 512x512x8. Что может быть решением» * - Это правда? Как вы пришли к такому выводу? Поскольку до тех пор, пока вы используете версию OpenGL версии 2.0+ (и, таким образом, реализацию не старше 10 лет), вы можете использовать произвольные размеры текстур (и пропорции). –
@ChristianRau: 3D текстуры никогда не должны были быть кубиками. Вы можете * всегда * использовать 512x512x8 (при условии, что максимальный размер текстуры 3D разрешен 512 вообще). –
@NicolBolas Interresting, и я подумал, что это NPOT, который допускает прямоугольные размеры, но я предполагаю тогда только для 2D-текстур. А как насчет текстуры 512x8x512, тогда (глупый вопрос, но, возможно, часть 2D обрабатывается специально?)? –