Я пытаюсь создать эффект растягивания изображения на iphone. Я делаю массив вершин и смещаю данные текстуры для каждого индекса в пределах произвольного радиуса фонового изображения. Затем сделайте следующие вызовы для отображения:
int n = gridSize_.x * gridSize_.y;
glEnableClientState( GL_VERTEX_ARRAY);
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
glVertexPointer(3, GL_FLOAT, 0, vertices);
glTexCoordPointer(2, GL_FLOAT, 0, texCoordinates);
glDrawElements(GL_TRIANGLES, n*6, GL_UNSIGNED_SHORT, indices);
//if(num_myindices > 0)
// glDrawElements(GL_TRIANGLES, num_myindices*6, GL_UNSIGNED_SHORT, myindices);
glDisableClientState(GL_VERTEX_ARRAY );
glDisableClientState( GL_TEXTURE_COORD_ARRAY );
Моя проблема в том, что край растянутой области выглядит очень изменчивым с относительно небольшим размером сетки, например, 32x32 или даже 64x64. Чем больше, тем плавнее, но намного медленнее.
Поэтому я попытался добавить копию фонового изображения и ограничил массив вершин только затронутыми индексами. Я использую гораздо меньший размер сетки, но для меньшей площади. Код для рисования выше теперь выглядит так:
//glDrawElements(GL_TRIANGLES, n*6, GL_UNSIGNED_SHORT, indices);
if(num_myindices > 0)
glDrawElements(GL_TRIANGLES, num_myindices*6, GL_UNSIGNED_SHORT,myindices);
Зона поражения отображается, но фоновое изображение мигает и исчезает, моя растянутая область плавает на черном фоне. Очевидно, что сначала отображается мой фон, а затем мой код выше перезаписывает и отображает только данные в моем массиве вершин.
У кого-нибудь есть советы, как эффективно комбинировать рисование изображений?
Я планирую создать 2-й простой массив вершин для фона и вызвать glDrawArray непосредственно перед моим оператором if, чтобы все рисование выполнялось в одном методе. Это правильный путь? Есть ли способ лучше? Должны ли все данные изображения быть как-то объединены в 1 простой массив вершин?