iOS: путаница с координатами текстуры для рендеринга текстуры на экране - PullRequest
0 голосов
/ 14 января 2012

Я пытаюсь отобразить текстуру, сгенерированную камерой, на экране iPhone.Я скачал пример отслеживания цвета с Брэда Ларсона на http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios (прямая ссылка для примера кода: http://www.sunsetlakesoftware.com/sites/default/files/ColorTracking.zip).

В методе drawFrame ColorTrackingViewController он использует следующий код для генерации вершины и соответствующих координат текстуры длярендеринг текстурированного квадрата:

static const GLfloat squareVertices[] = {
    -1.0f, -1.0f,
    1.0f, -1.0f,
    -1.0f,  1.0f,
    1.0f,  1.0f,
};

static const GLfloat textureVertices[] = {
    1.0f, 1.0f,
    1.0f, 0.0f,
    0.0f,  1.0f,
    0.0f,  0.0f,
};

Я не понимаю, почему эти текстурные координаты работают правильно.

По моему мнению, и в другом примере кода, который я видел, который работает также правильно, онидолжно быть:

static const GLfloat textureVertices[] = {
    0.0f, 1.0f,
    1.0f, 1.0f,
    0.0f,  0.0f,
    1.0f,  0.0f,
};

Я прошел весь код, но не могу понять, почему вышеуказанные координаты текстуры работают правильно. Чего мне не хватает?

1 Ответ

1 голос
/ 17 января 2012

Я считаю, что это потому, что данные изображения с камеры iphone всегда представлены повернутыми на 90 CCW. Чтобы противодействовать этому вращению, он также устанавливает координаты текстуры, которые должны быть повернуты на 90 CCW. Иногда два зла делают правду?

...