OpenGL рисовать текстуры с треугольной полосой вверх ногами - PullRequest
2 голосов
/ 01 марта 2012

Я делаю opengl в методе cocos2d draw (), так как мне нужны некоторые 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 Ответ

1 голос
/ 02 марта 2012

В некоторых библиотеках просто разные представления о том, какая точка текстуры (0,0) (левый верхний или левый нижний угол).Я предполагаю, что любая используемая вами библиотека загрузки изображений считает (0,0) верхним левым, а opengl считает ее левым нижним.

Чтобы исправить это, вы можете указать какао:загрузите его вверх ногами (не знаю, как или если это вообще возможно), или переверните вертикальную ориентацию вашего УФ:

от:

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

до:

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