AVCaptureSession и Cocos2d-x на macOS

Я внедряю функцию записи геймплея в кроссплатформенную игру Cocos2d-x. Мне удалось реализовать эти функции для iOS и Android, но я изо всех сил пытаюсь добиться хорошей производительности на macOS. Я успешно реализовал запись геймплея, используя функцию glReadPixels, но производительность очень низкая. Я получаю около 10-15 кадров в секунду на моем MacBook Pro. Я пытался реализовать AVCaptureSession для записи всего экрана, а затем обрезать требуемую область, как в примере AVScreenShack от Apple, но я получаю ошибки Cocos2d-x Renderer.

Журнал ошибок выглядит так:

OpenGL error 0x0501 in /Users/milosz/Documents/job/butterflix/blix/cocos2d/cocos/2d/CCParticleSystemQuad.cpp postStep 458
OpenGL error 0x0506 in /Users/milosz/Documents/job/butterflix/blix/cocos2d/cocos/renderer/CCFrameBuffer.cpp applyFBO 445
FrameBuffer Status Error 33305
OpenGL error 0x0506 in /Users/milosz/Documents/job/butterflix/blix/cocos2d/cocos/renderer/CCFrameBuffer.cpp applyFBO 445
FrameBuffer Status Error 33305
FrameBuffer Status Error 33305
OpenGL error 0x0501 in /Users/milosz/Documents/job/butterflix/blix/cocos2d/cocos/renderer/CCRenderer.cpp saveRenderState 161
OpenGL error 0x0501 in /Users/milosz/Documents/job/butterflix/blix/cocos2d/cocos/renderer/CCTextureAtlas.cpp drawNumberOfQuads 691
FrameBuffer Status Error 33305
OpenGL error 0x0501 in /Users/milosz/Documents/job/butterflix/blix/cocos2d/cocos/renderer/CCRenderer.cpp restoreRenderState 192
OpenGL error 0x0501 in /Users/milosz/Documents/job/butterflix/blix/cocos2d/cocos/2d/CCParticleSystemQuad.cpp postStep 458
OpenGL error 0x0501 in /Users/milosz/Documents/job/butterflix/blix/cocos2d/cocos/2d/CCParticleSystemQuad.cpp postStep 458
OpenGL error 0x0506 in /Users/milosz/Documents/job/butterflix/blix/cocos2d/cocos/renderer/CCFrameBuffer.cpp applyFBO 445
FrameBuffer Status Error 33305
OpenGL error 0x0506 in /Users/milosz/Documents/job/butterflix/blix/cocos2d/cocos/renderer/CCFrameBuffer.cpp applyFBO 445
FrameBuffer Status Error 33305
FrameBuffer Status Error 33305
OpenGL error 0x0501 in /Users/milosz/Documents/job/butterflix/blix/cocos2d/cocos/renderer/CCRenderer.cpp saveRenderState 161

Моей первой мыслью было, что AVCaptureSession использует NSOpengGLContext для рендеринга кадров, поэтому я проверил, изменился ли контекст, но не изменился. Я также пытался CVOpenGLTextureCache в соответствии с методом, который я использую на iOS, но безуспешно.

Однако, когда я запускаю пример AVScreenShack во время игры, он записывает весь экран и не связывается с рендерером Cocos2d-x. Я думаю, это потому, что оба приложения работают в разных основных потоках и, следовательно, не возникает каких-либо условий гонки. Могу ли я воспроизвести такое поведение в одном приложении Mac? Или есть какой-нибудь другой способ записать геймплей Cocos2d-x с разумной производительностью на MacOS?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]