2012-03-01 142 views
1

我在cocos2d draw()方法中做了一些opengl,因为我需要一些3d效果。为了测试,我用三角形条纹来绘制纹理。问题是结果图片只是倒过来。代码非常简单,我想不通为什么它是上下颠倒:opengl画三角形带纹理颠倒

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

请发表图片,它会更有帮助。 – LebRon 2012-03-01 04:56:39

+0

对不起,作为新用户,我还没有权限上传图片。但是,正如所说的那样,这个图像很简单,就是颠倒过来。 – yorkdu 2012-03-01 06:32:48

回答

1

有些图书馆只具有点上的纹理不同的想法是(0,0)(左上或左下角)。我猜测,无论您使用的图像加载库认为(0,0)是左上角,而opengl认为它是左下角。

要纠正它,你既可以告诉可可加载它倒挂(不知道如何,或者如果它甚至有可能),或翻转你UV的veritcal方向:从

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

到:

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