2012-04-10 2 views
1

У меня есть iPhone-игра, которую я переношу на ПК. В игре используется OpenGL ES 2 (шейдеры), и я должен решить, какую версию OpenGL использовать.Портирование OpenGL ES 2 в OpenGL

Должен ли я переносить все шейдеры на OpenGL 2 (и поддерживать устаревшее оборудование)? Или я должен портировать OpenGL 3 (чего я еще не очень хорошо знаю, но кажется, что шейдеры более совместимы)? Что будет проще для порта?

ответ

2

Поскольку OpenGL ES 2 является подмножеством настольного OpenGL 2, вы должны быть довольно хорошо с 2.x, если вам не нужна ваша игра, чтобы использовать более сложные приемы на ПК (например, instancing, массивы текстур, геометрические шейдеры, ..., о чем никогда не слышал ваш ES-устройство).

Просто имейте в виду, что тот факт, что вы можете использовать немедленный режим и конвейер с фиксированной функцией в настольном GL 2, не означает, что вы должны. В OpenGL 2.0 вы можете полностью переписывать полностью совместимые современные GL (VBOs, shaders, ...). С другой стороны, GL 3.x на самом деле не отличается от предыдущих версий, он просто приносит некоторые дополнительные функции, которые могут быть включены позже, если возникнет необходимость. Реального решения между GL 2 или 3 нет, только между современными GL-модулями на основе VBO-шейдеров и старыми GL-функциями, основанными на немедленном режиме, и с вашей игрой, уже использующей GL ES 2.0, вы уже приняли правильное решение.

На самом деле ваши шейдеры будут более совместимы с GL 2, чем 3, поскольку ES 2 использует старый атрибут/изменяющийся синтаксис. Но в качестве побочной заметки вам нечего принимать во внимание, так как вам, возможно, придется немного изменить свои шейдеры (например, дескриптор/удалить определители точности).