Я работаю с Минко и, кажется, столкнулся с небольшой проблемой с Android.
Мне удалось скомпилировать для linux64, Android и HTML модифицированный код (на основе учебников, предоставленных Minko). Я просто загружаю и вращаю 4 файла .obj (один пиратский предоставлен, а 3 найдены на turbosquid только для демонстрационных целей).
Правильный результат просматривается в версиях linux64 и html, но в Android-версии есть «красноватый» свет, хотя двоичные файлы генерируются из того же кода c ++.
Вот несколько фотографий, чтобы продемонстрировать проблему:
linux64:
Версия Android:
http://tinypic.com/r/23mn0p3/8
(Невозможно связать версию html, но она близка к версии linux64.)
Вот часть кода, связанная со светом:
// create the spot light node
auto spotLightNode = scene::Node::create("spotLight");
// change the spot light position
//spotLightNode->addComponent(Transform::create(Matrix4x4::create()->lookAt(Vector3::zero(), Vector3::create(0.1f, 2.f, 0.f)))); //ok linux - html
spotLightNode->addComponent(Transform::create(Matrix4x4::create()->lookAt(Vector3::zero(), Vector3::create(0.1f, 8.f, 0.f))));
// create the point light component
auto spotLight = SpotLight::create(.15f, .4f); //ok linux and html
// update the spot light component attributes
spotLight->diffuse(4.5f); //ori - ok linux - html
// add the component to the spot light node
spotLightNode->addComponent(spotLight);
//sets a red color to our spot light
//spotLightNode->component<SpotLight>()->color()->setTo(2.0f, 1.0f, 1.0f);
// add the node to the root of the scene graph
rootNode->addChild(spotLightNode);
Как вы можете заметить color()->setTo
был выключен и работает для всех, кроме Android (очистить и восстановить). Любая идея, что может быть источником проблемы здесь?
Любой указатель будет высоко ценится.
Спасибо.
Можете ли вы протестировать его на других устройствах Android или с более свежим ПЗУ и дать нам результат? LG-D855 (LG G3) работает на Adreno 330: известно, что эти графические процессоры имеют недостатки компиляции GLSL, особенно с петлями и / или структурами, которые мы используем в Phong.fragment.glsl на мастер ветке.
Phong.fragment.glsl на ветке разработчика был сильно переработан, чтобы это исправить (только для направленного света).
Вы можете попробовать ветку dev и направленный свет и посмотреть, решит ли это проблему. Будьте осторожны: ветка dev представляет бета-версию 3 с некоторыми изменениями API. Самое большое изменение API — это математический API, теперь использующий GLM, и формат файла * .effect. Лучший способ — просто обновить свой математический код для использования нового API, все остальное должно быть простым.