2013-05-08 3 views
0

В OpenGL я пытаюсь отобразить местности с 8 512x512 изображений с использованием texture3D, чтобы получить смешанные изменения текстуры. Но OpenGL заставляет меня выделить 512x512x512 массив вместо 512x512x8 Что может быть решениеOpenGL Terrain Texture3D Карта

+2

* «Но OpenGL заставляет меня выделять 512x512x512 массив вместо 512x512x8. Что может быть решением» * - Это правда? Как вы пришли к такому выводу? Поскольку до тех пор, пока вы используете версию OpenGL версии 2.0+ (и, таким образом, реализацию не старше 10 лет), вы можете использовать произвольные размеры текстур (и пропорции). –

+0

@ChristianRau: 3D текстуры никогда не должны были быть кубиками. Вы можете * всегда * использовать 512x512x8 (при условии, что максимальный размер текстуры 3D разрешен 512 вообще). –

+0

@NicolBolas Interresting, и я подумал, что это NPOT, который допускает прямоугольные размеры, но я предполагаю тогда только для 2D-текстур. А как насчет текстуры 512x8x512, тогда (глупый вопрос, но, возможно, часть 2D обрабатывается специально?)? –

ответ

2

Но OPENGL заставляет меня выделить 512x512x512

Что дал вам эту идею? 512 × 512 × 8 - полностью допустимый размер 3D-текстуры. Для ландшафтов вы также можете посмотреть GL_TEXTURE_2D_ARRAY, который также инициализируется с помощью glTexImage3D, но не интерполирует между слоями, что полезно в определенных ситуациях.

+0

Но мне нужна интерполяция, чтобы наложить одну текстуру на другую –

+0

@ user2362969: Тогда просто используйте GL_TEXTURE_3D, вы можете использовать тот формат, который хотите использовать просто отлично. – datenwolf

+0

Извините, я получил то, что я ошибался .... да, это работает –

0

Даже если вам нужна интерполяция для смешивания одной текстуры в другую, вы также должны попробовать использовать GL_TEXTURE_2D_ARRAY и просто вручную смешать текстуры вместе в шейдере фрагмента. Хотя может показаться, что лучше воспользоваться автоматическим фильтром увеличения аппаратного обеспечения, помните, что для реализации GL_TEXTURE_3D гораздо более вероятно, что соседние пиксели в 6 направлениях будут кэшироваться, и, насколько я понимаю, вы уделяете больше внимания отдельные 2D-текстуры в наборе и их соседние слои, поэтому вам лучше иметь аппаратное обеспечение 3 строки кэша, каждый по 4 направлениям. Попробуйте оба и посмотрите, что лучше работает

 Смежные вопросы

  • Нет связанных вопросов^_^