Я рисую несколько «простых» 2D-графиков с использованием OpenGL ES, glDrawArrays и GL_TRIANGLE_STRIP.Текстурированные треугольные полосы - строки за пределами первого ряда дают искаженный вывод
Я пишу функцию, цель которой состоит в том, чтобы взять одну текстуру 13x13 (или другую произвольно размерную) и вывести ее в указанное количество столбцов и строк. Таким образом, для 2-х рядов и 3-х столбцов это будет означать площадь, покрытую 6 плитами, на 26х39 точек. Первая строка хорошо работает с приведенным ниже кодом, но как только я укажу 2 или более строк, это просто искаженный вывод.
for (int row = 0; row < heightInTiles; row++) {
for (int col = 0; col < widthInTiles; col++) {
vertexIndexOffset += 8;
startX = (GLshort)(col * TEXTUREWIDTH);
startY = (GLshort)(row * TEXTUREHEIGHT);
// Vertices
vertices[vertexIndexOffset] = startX; // 1
vertices[vertexIndexOffset + 1] = startY; //0.0;
vertices[vertexIndexOffset + 2] = startX; // 2
vertices[vertexIndexOffset + 3] = startY + (GLshort)TEXTUREHEIGHT;
vertices[vertexIndexOffset + 4] = (GLshort)(startX + TEXTUREWIDTH); // 3
vertices[vertexIndexOffset + 5] = startY;
vertices[vertexIndexOffset + 6] = (GLshort)(startX + TEXTUREWIDTH); // 4
vertices[vertexIndexOffset + 7] = startY + (GLshort)TEXTUREHEIGHT;
// Texture coords
uvs[vertexIndexOffset] = WRESULT; // 1
uvs[vertexIndexOffset + 1] = 0;
uvs[vertexIndexOffset + 2] = WRESULT; // 2
uvs[vertexIndexOffset + 3] = HRESULTNEXT;
uvs[vertexIndexOffset + 4] = WRESULTNEXT; // 3
uvs[vertexIndexOffset + 5] = 0;
uvs[vertexIndexOffset + 6] = WRESULTNEXT; // 4
uvs[vertexIndexOffset + 7] = HRESULTNEXT;
}
}
Спасибо. Отличный ответ. Размещение вершиныIndexOffset + = 8 было ошибкой: -P – Jonny