我正在尝试渲染由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,
};
我浏览了整个代码,但我无法弄清楚为什么上面的纹理坐标正常工作。我错过了什么?
答案 0 :(得分:1)
我相信这是因为来自iphone相机的图像数据始终以90°CC旋转。为了抵消这种旋转,他将纹理坐标设置为旋转90°CCW。有时两个错误确实是正确的吗?