iOS:关于在屏幕上渲染纹理的纹理坐标的混乱

时间:2012-01-14 14:35:03

标签: iphone ios opengl-es coordinates textures

我正在尝试渲染由iPhone屏幕上的相机生成的纹理。 我在http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios下载了Brad Larson的颜色跟踪示例(示例代码的直接链接:http://www.sunsetlakesoftware.com/sites/default/files/ColorTracking.zip)。

在ColorTrackingViewController drawFrame方法中,他使用以下代码生成顶点和相应的纹理坐标,以渲染纹理方块:

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 个答案:

答案 0 :(得分:1)

我相信这是因为来自iphone相机的图像数据始终以90°CC旋转。为了抵消这种旋转,他将纹理坐标设置为旋转90°CCW。有时两个错误确实是正确的吗?