Смешивание OpenGL ES 1 и OpenGL ES 2 - PullRequest
1 голос
/ 19 марта 2012

Можно ли смешивать вызовы OpenGL ES 1 и OpenGL ES 2? Скажем, вы используете библиотеки, в которых реализованы некоторые подпрограммы в OpenGL ES 1, а ваша существующая база кода - OpenGL ES 2. Что было бы хорошим способом сделать это, предположим, что они выполняют рендеринг на разных этапах рендеринга?

Ответы [ 2 ]

4 голосов
/ 10 января 2013

Вы можете смешивать OpenGL ES 2.0 и OpenGL ES 1.1 в одном приложении, но вы не можете смешивать команды из двух разных API с одной привязкой контекста.Как только вы введете команду GL только для ES 1.1 для привязки контекста ES 2.0 или наоборот, ваше приложение будет аварийно завершено, и не будет понятно, почему оно завершится, если вы не знаете об этом.

Когда контекстысоздаются, вы должны выбрать API, который вы используете, и придерживаться его для каждой команды GL, выдаваемой, когда этот контекст связан.

Итак, что касается смешанного использования двух API в одном приложении, то ничего нетпредотвращение привязки контекста ES 1.1 в одном потоке и выдача только вызовов ES 1.1 для этого потока в том же приложении, в котором у вас есть контекст ES 2.0 в другом потоке, и только команды ES 2.0, выданные в этом потоке.

Но, как говорили господа охотников за привидениями: «Не пересекайте потоки !!».

4 голосов
/ 19 марта 2012

OpenGL ES 2.0 не имеет обратной совместимости с OpenGL ES 1.x.По определению это означает, что 2.0 не совместим с 1.x.По большей части.

В зависимости от языка и привязки к GL ES (что вы не указали), возможно, вы сможете перекомпилировать код, написанный для ES 1.x для ES 2.0.Или что инициализация ES 2.0 вызовет маршрутизацию всех функций GL.Это означает, что если ES 1.x и 2.0 совместно используют некоторую функцию, то код, вызвавший эту функцию, будет вызывать любую версию GL ES, которая была инициализирована.Опять же, вы не сказали, на каком языке и как его инициализировали.

В ES есть некоторые функции, которые работают более или менее одинаково с ES 1.1 и ES 2.0.Я бы сказал, что инициализация и настройка текстуры не сильно изменились (вы должны прочитать спецификации, чтобы увидеть, сколько изменилось).И фактические вызовы рисования массива (glDrawArrays, glDrawElements) более или менее одинаковы.И некоторые из основных компонентов, таких как glViewport, glDepthRangef и т. П., Одинаковы.

Но все остальное (как используются массивы вершин, режим немедленного запуска и т. Д.) Отличается и несовместимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...