Я пишу небольшой рендер рендеринга карт OpenGL на C# с OpenTK. Чтобы отобразить плитки, я сначала создаю массив вершин, а затем буфер вершин.
В следующий раз я перебираю все плитки и зависит от типа плитки. Я добавляю два треугольника в буфер вершин с соответствующими вершинами (текстурные координаты, цвет, положение).
Чтобы избежать перетаскивания текстуры, я использую одну большую текстуру со всеми текстурами плитки с названием текстурного атласа.
Но у меня проблема при работе с атласом текстуры.
Проблема в том, что я получаю некоторые артефакты на краю некоторых фрагментов, если я увеличиваю масштаб и передвигаю камеру.
Решения, которые я нашел в Интернете были ...OpenGL 4.4 текстурные атласные артефакты
- ... для расчета текстуры COORDS с половиной коррекции пикселей.
- ... использовать массив текстура
Первый я пытался, но он не работал, как ожидалось (Более объяснено ниже).
Второй, я не знаю, как работать с массивами текстур, и я не мог найти много о массивах текстур в Интернете.
Я использовал следующие фильтры текстур:
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Nearest);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest);
текстуры Coords расчета с половины коррекции пикселей: расчет
text_coord_x = (0.5f + pixel_x)/texture_width;
text_coord_y = (0.5f + pixel_x)/texture_height;
Texture Coords без половины коррекции пикселей:
text_coord_x = pixel_x/texture_width;
text_coord_y = pixel_y/texture_height;
Одна плитка с половины коррекции пикселей:
Одна плитка без половины коррекции пикселей:
Несколько плиток с половины коррекции пикселей:
Несколько плиток без половины коррекции пикселей:
Спасибо, что это было бы решением, которое я, вероятно, должен использовать, но нет ли лучшего способа? Например, файл плитки minecraft не содержит границ, и в игре нет артефактов. Знать кого-то, как это было исправлено? – Michael
Не могли бы вы описать свой случай подробно? Что вы хотите сделать? – MrShoor
Интересно, как minecraft использует атлас текстуры без границ или paddings без каких-либо артефактов в игре. – Michael