Проблема производительности Cocos2dx на Windows Phone 8
Я пытаюсь портировать игру для Android/iOS на Windows Phone 8(cocos2dx v 2.2). Я использую ту же самую базу кода, которую я использовал для Android и iOS. Игра функционирует просто отлично, но я столкнулся с серьезным падением FPS. Игра работает безупречно со скоростью 60FPS в Android и iOS, но я получаю примерно 35FPS в wp8. Это как-то связано с различиями в OpenGL и DirectX?
Я сомневаюсь, что это связано с логикой и расчетами игры, потому что, когда игра запускается в Windows Phone, она запускается с 60FPS в главном меню, которое имеет около 5 спрайтов. Но когда я добавляю на экран больше спрайтов, скажем, около 30 (среднее количество спрайтов, когда я в игре), FPS быстро падает до 35-40. Обратите внимание, что на данный момент нет никаких планировщиков или функций обновления. Я сделал тот же тест на Android, но FPS не упал. Win8 порт cocos2dx отстой?
Любая помощь, комментарии или перенаправление на полезные статьи будут оценены. Спасибо.
2 ответа
На случай, если кто-нибудь столкнется с подобной проблемой, я уменьшу количество дочерних элементов в сцене и разверну сборку в режиме выпуска. Дали серьезный импульс FPS. Кроме того, у меня было несколько преобразований типа float в строку и int в строку, происходящих в каждом кадре внутри функции обновления. Это слишком сильно сказывалось на скорости обработки.
На самом деле, порт Cocos2dx для WP8 в порядке, но устарел. Cocos2d-x сейчас находится на бета-версии 3.0, но WP8 остался на альфа-версии 2.0.
В любом случае... в Cocos есть некоторые рекурсивные функции рисования, которые очень тяжелы для процессора, а также имейте в виду, что, хотя WP8 предполагается поддерживать массивы, списки, карты и т. Д., Они очень медленные на WP8.
И так как вы пришли к этой теме, пожалуйста, дайте мне знать, если вам удалось успешно добавить cocos2d-x в проект XAML+D3D Interop. Я получаю тонны аварий.
РЕДАКТИРОВАТЬ: Действительно, рекурсивные вызовы, которые обрабатывают (рисовать или обновлять) дочерние "CCNode" очень тяжело на устройстве. Однако после установки Cocos2d-x ver. 2.0alpha для WP8 в проект взаимодействия XAML + D3D, я обнаружил много проблем, связанных с памятью. Очевидно, что после этого (или просто потому, что я не знаю, как правильно настроить мой проект VS и разрешить свободную адресацию), многие неинициализированные указатели и данные вызывают некоторые совпадения памяти, что приводит к серьезным сбоям. Это доказывает только то, что это был настоящий альфа-релиз:) Жаль, что нет более новой версии Cocos2d-x для Wp8.