OpenGL ES 1.1 до 2.0 серьезное изменение? - PullRequest
5 голосов
/ 15 октября 2011

Я создаю приложение для iPhone с cocos2d и пытаюсь использовать следующий код OpenGL ES 1.1.Тем не менее, я не очень хорошо разбираюсь в OpenGL, и мое приложение использует OpenGL ES 2.0, поэтому мне нужно конвертировать его.

Поэтому мне было интересно, насколько сложно будет преобразовать следующий код из ES 1.1 вES 2.0?Есть какой-нибудь источник, который мог бы сказать мне, какие методы нужно заменить и т. Д.

-(void) draw
{
    glDisableClientState(GL_COLOR_ARRAY);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisable(GL_TEXTURE_2D);

    glColor4ub(_color.r, _color.g, _color.b, _opacity);
    glLineWidth(1.0f);
    glEnable(GL_LINE_SMOOTH);

    if (_opacity != 255)
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

    //non-GL code here

    if (_opacity != 255)
        glBlendFunc(CC_BLEND_SRC, CC_BLEND_DST);

    glEnableClientState(GL_COLOR_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    glEnable(GL_TEXTURE_2D);
}

1 Ответ

9 голосов
/ 15 октября 2011

Это будет не так просто, если вы не очень вписываетесь в OpenGL.

OpenGL ES 2.0 больше не имеет конвейера с фиксированными функциями. Это означает, что вы должны сами управлять преобразованиями вершин, освещением, текстурированием и тому подобным, используя вершинные и фрагментные шейдеры GLSL. Вы также должны сами отслеживать матрицы преобразования, таких glMatrixMode, glPushMatrix, glTranslate, ... больше нет.

Также нет больше атрибутов вершин buitlin (например, glVertex, glColor, ...). Таким образом, эти функции вместе с соответствующими функциями массива (например, glVertexPointer, glColorPointer, ...) и gl(En/Dis)ableClientState также были удалены. Вместо этого вам нужны общие функции атрибутов вершин (glVertexAttrib, glVertexAttribPointer и gl(En/Dis)ableVertexAttribArray, которые ведут себя одинаково) вместе с соответствующим вершинным шейдером, чтобы придать этим атрибутам их правильное значение.

Я предлагаю вам ознакомиться с хорошим учебником или книгой по OpenGL ES 2.0, поскольку перенос с версии 1.1 на 2.0 - это серьезное изменение, по крайней мере, если вы никогда не слышали о шейдерах.

...