【问题标题】:opengl draw texture with triangle strip upside downopengl用倒置的三角形条绘制纹理
【发布时间】:2012-03-02 05:19:26
【问题描述】:

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

【问题讨论】:

  • 请张贴图片,这样会更有帮助。
  • 对不起,作为一个新用户,我还没有上传图片的权限。但这很简单,就像说的那样,图像只是颠倒了。

标签: opengl cocos2d-iphone textures


【解决方案1】:

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

要纠正它,您可以告诉 cocoa 将其倒置加载(不知道如何或是否可能),或者翻转 UV 的垂直方向:

来自:

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

到:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 2015-05-26
    • 1970-01-01
    • 2014-07-08
    • 2013-08-14
    相关资源
    最近更新 更多