Как проще всего придать 2D-текстуре в OpenGL (lwjgl) какую-то «Толщину». Конечно, я мог бы каким-то образом получить границу текстуры и добавить квадроциклы, ориентированные по нормали квадроцикла, на котором рисуется текстура, в цвет соседнего пикселя текстуры. Но должен быть более простой способ сделать это. Minecraft также использует lwigl, и есть (новые) 3D-элементы, которые вращаются по земле и не вызывают такой большой проблемы с производительностью, как если бы они были нарисованы из десятков полигонов. Кроме того, когда вы держите предмет в руке, появляется своего рода «растянутая» Текстура по глубине, которая также работает с текстурами высокого разрешения. Кто-нибудь знает, как это делается?
Толщина 2D-текстур OpenGL
comment
Единственный известный мне способ, которым текстура может иметь кажущуюся толщину, — это рельефное наложение (и даже это только кажущаяся толщина, она разрушается при просмотре под крайними углами). Чтобы создать реальную толщину, должен быть какой-то эффект генерации геометрии.
- person Durandal   schedule 03.09.2014
comment
Да, геометрический шейдер можно было бы использовать здесь очень хорошо.
- person Iggy   schedule 03.09.2014
Ответы (1)
2D-текстура всегда бесконечно тонкая. Если вам нужна реальная толщина (когда вы смотрите на нее с кромки), вам нужна геометрия. В Minecraft вещи выглядят блочными, потому что они были смоделированы таким образом.
Если вы посмотрите под некоторым углом и проигнорируете края, вы можете использовать наложение параллакса, чтобы «подделать» некоторую глубину текстуры. Или вы можете использовать карту глубины и использовать комбинацию шейдеров тесселяции и вершинных шейдеров для реализации карты смещения, которая генерирует геометрию из текстуры.
person
datenwolf
schedule
04.09.2014