2013-06-12 2 views
0

Я пытаюсь использовать порт C++ библиотеки GPUImage в кросс-платформенной игре cocos2d-x. И GPUImage, и cocos2d-x создают свой собственный контекст OpenGL для выполнения операций на графическом процессоре, что вызывает проблемы в приложении. Для исходной библиотеки GPUImage, созданной для iOS, автор предложил использовать «sharegroup» для обмена контекстами между GPUImage и cocos2d here. Использование «sharegroup» также предоставляется в документах Apple here. Поскольку я хочу сделать кросс-платформенную игру (для Android и iOS), я искал такую ​​же функциональность на других платформах, таких как Android? Можно ли реализовать это на кросс-платформенной платформе?EAGLSharegroup как функциональность для кросс-платформенного развития в C++ openGL

ответ

0

Что делать это, как предложено в этом ответе: https://stackoverflow.com/a/7892531/369009

Android поставляет EGL, который поддерживает общую концепцию OpenGL группы акций (хотя неявно, вы поставляете существующий контекст, который вы хотите новый контекст должен находиться в общей группе с помощью третьего аргумента для eglCreateContext). Если два контекста находятся в общей группе , то каждый из них имеет независимое состояние и безопасно вызывать от только один поток, но для каждого из них доступны именованные объекты, такие как текстуры или буфер вершин . Таким образом, используя общие группы, вы можете выполнять действия OpenGL на нескольких потоках одновременно, чтобы быть , способным комбинировать результаты по одному потоку.

Будет ли это работать? Я предполагаю, что это будет довольно кросс-платформа (везде, где поддерживается EGL), однако вам придется синхронизировать доступ к общим объектам (текстурам, ...) каким-то образом.