У меня есть сетка 8 х 8 точек, и я хочу наложить на нее изображение. Я делю внутреннюю сетку 6 X 6 на 4 равных части размером 3 X 3 каждая. Давайте назовем эту часть как плитку. Идея состоит в том, чтобы визуализировать эти плитки вместе с соответствующими им текстурами. Я делю сетку на плитки, потому что в будущем я хочу протестировать ее на большей сетке.
Я сделал это, используя следующий подход, но я получаю швы по краям. Я не могу понять, почему появляются швы.
Сначала плитки имеют соответствующие стартовые коды как {(0,0), (0,3), (3,0), (3,3)}.
У меня есть изображение размером 8 X 8, которое я хочу наложить на super_grid, и я сохраняю его значения rgba в некоторых super_data (8 X 8).
При рендеринге плиток я рисую их в виде квадратов, а затем накладываю на них соответствующую текстуру. Итак, если (a, b) являются стартовыми ко-ордами для конкретной плитки, то я инициализирую
четыре вершины = {(a-0,5, b-0,5), (a + 3-0,5, b-0,5), (a + 3-0,5, b + 3-0,5), (a-0,5, b + 3-0,5 )}
и если xs = 1 / (tileWidth + 1) = 1 / (3 + 1) = 1/4 и ys = 1 / (tileHeight + 1) = 1/4, то
Координаты текстуры: {(xs / 2, ys / 2), (1-xs / 2, ys / 2), (1-xs / 2,1-ys / 2), (xs / 2,1-ys / 2 )}
Итак, для первой плитки,
quadVertices={(-0.5,-0.5),(3.5,-0.5),(3.5,3.5),(-0.5,3.5)}
textureCoords={(1/8,1/8),(1-1/8,1/8),(1-1/8,1-1/8),(1/8,1-1/8)}.
Перед передачей текстуры для плитки я инициализирую текстуру: int image = new int [tileWidth + 2] [tileHeight + 2] с помощью super_data. Мы берем эти размеры, потому что некоторая часть текстуры плитки перекрывается с соседними плитками (именно поэтому мы учитываем эту часть при расчете quadVertices).
Наконец, чтобы сгенерировать текстуру, используйте
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tileWidth + 2, tileHeight + 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, image);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
Все выше работает нормально, я получаю сетку с наложенным на нее изображением. Тем не менее, я получаю швы по краям. Как мне избавиться от швов?