Я собираю текстуру из моего текстурного атласа в квадрат на кубе. По какой-то причине ось t инвертирована, а 0 находится сверху, а 1 - внизу. Есть идеи, почему это происходит?OpenGL-ES Texture Atlas. t axis инвертируется
Кроме того, я должен указать координаты текстуры по часовой стрелке, а не против часовой стрелки. Я использую противники против часовой стрелки. Ниже приведены вершины, индексы и координаты текстуры.
float vertices[] = {
// Front face
-width, -height, depth, // 0
width, -height, depth, // 1
width, height, depth, // 2
-width, height, depth, // 3
// Back Face
width, -height, -depth, // 4
-width, -height, -depth, // 5
-width, height, -depth, // 6
width, height, -depth, // 7
// Left face
-width, -height, -depth, // 8
-width, -height, depth, // 9
-width, height, depth, // 10
-width, height, -depth, // 11
// Right face
width, -height, depth, // 12
width, -height, -depth, // 13
width, height, -depth, // 14
width, height, depth, // 15
// Top face
-width, height, depth, // 16
width, height, depth, // 17
width, height, -depth, // 18
-width, height, -depth, // 19
// Bottom face
-width, -height, -depth, // 20
width, -height, -depth, // 21
width, -height, depth, // 22
-width, -height, depth, // 23
};
short indices[] = {
// Front // Back
0,1,2, 0,2,3, 4,5,6, 4,6,7,
// Left // Right
8,9,10, 8,10,11, 12,13,14, 12,14,15,
// Top // Bottom
16,17,18, 16,18,19, 20,21,22, 20,22,23,
};
float textures[] = {
// Front
0.0f, 0.0f, 0.25f, 0.0f, 0.25f, 0.25f, 0.0f, 0.25f,
// Back
0.25f, 0.0f, 0.50f, 0.0f, 0.50f, 0.25f, 0.25f, 0.25f,
// Left
0.50f, 0.0f, 0.75f, 0.0f, 0.75f, 0.25f, 0.50f, 0.25f,
// Right
0.75f, 0.0f, 1f, 0.0f, 1f, 0.25f, 0.75f, 0.25f,
// Top
0.0f, 0.25f, 0.25f, 0.25f, 0.25f, 0.50f, 0.0f, 0.50f,
// Bottom
0.25f, 0.25f, 0.50f, 0.25f, 0.50f, 0.50f, 0.25f, 0.50f,
};
My texture - файл размером 256x256 .png, созданный в mspaint.
alt text http://www.freeimagehosting.net/uploads/9a87120b99.png
Итак, что конкретно возникает у вас на вопрос? В вашем посте нет никаких вопросительных знаков. Ниже приведены общие советы OpenGL (я не работаю с opengl-es): Если вы используете индексированные примитивы, вам нужно всего 8 (не 24) вершин для создания куба. Использование более 8 сделает вещи излишне сложными. Если текстура перевернута, проблема может быть в коде загрузки текстуры (в том, что вызывает glBindTexture2D) - возможно, сначала загружается нижняя строка пикселя. Render/blit texture для отображения в 2D, чтобы убедиться, что это правильно. Убедитесь, что вы где-то не перевернули проекционное преобразование. – SigTerm
Я использую 24 вершины по рекомендации этого вопроса. http://stackoverflow.com/questions/2854237/opengl-es-texture-map-all-faces-of-an-8-vertex-cube/2854444#2854444. Кроме того, я не совсем уверен, что вы подразумеваете под эффектом render/blit texture? – Feet