我在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();
答案 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}};