opengl绘制纹理与三角形条带颠倒

时间:2012-03-01 03:20:01

标签: opengl cocos2d-iphone textures

我在cocos2d draw()方法中做了一些opengl,因为我需要一些3d效果。为了测试,我通过三角形条绘制纹理。问题是结果图片只是颠倒了。代码很简单,我无法弄清楚为什么它是颠倒的:

ccVertex3F newPoint[4] = {{-20,0, -100}, 
    {20,0, -100},
    {-20,40, -100},
    {20,40, -100}
};

ccVertex2F _textCoordArray[4] = {{0,0}, {1,0}, {0,1}, {1,1}};

glDisableClientState(GL_COLOR_ARRAY);

glBindTexture(GL_TEXTURE_2D, [lineTexture name]);

glMatrixMode(GL_MODELVIEW);
glPushMatrix();

glLoadIdentity();

glVertexPointer(3, GL_FLOAT, 0, newPoint);
glTexCoordPointer(2, GL_FLOAT, 0, _textCoordArray);
glEnableClientState(GL_VERTEX_ARRAY);

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glPopMatrix();

1 个答案:

答案 0 :(得分:1)

有些图书馆对纹理的哪个点(0,0)(左上角或左下角)有不同的想法。我猜你所使用的任何图像加载库都认为(0,0)是左上角,而opengl认为它是左下角。

要纠正它,你可以告诉cocoa颠倒加载它(不知道它是怎么或者它是否可能),或者翻转UV的veritcal方向:

从:

_textCoordArray[4] = {{0,0}, {1,0}, {0,1}, {1,1}};

为:

_textCoordArray[4] = {{0,1}, {1,1}, {0,0}, {1,0}};