Я пишу приложение для Android, используя Gameplay3D. Я могу скомпилировать нормально, используя NDK, и сгенерировать APK, используя ANT (как отладку, так и выпуск). Приложение отлично устанавливается, запускается и работает на Galaxy S3 и Nexus 4, но когда я пытаюсь запустить его на Nexus 7, оно просто ничего не отображает. Просто черный экран с панелью навигации внизу.
У меня есть два Nexus 7, каждый с разной версией Android (один 4.3, другой 4.4).
Я не очень опытен в разработке под Android, но вот мой манифест:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.secretCompany.secretGame"android:versionCode="15"android:versionName="1.0.0">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- This is the platform API where the app was introduced. -->
<uses-sdk android:minSdkVersion="10" />
<uses-feature android:glEsVersion="0x00020000"/>
<application android:icon="@drawable/icon" android:label="@string/app_name" android:hasCode="true">
<!-- Our activity is the built-in NativeActivity framework class.
This will take care of integrating with our NDK code. -->
<activity android:name="android.app.NativeActivity"android:label="@string/app_name"android:configChanges="orientation|keyboardHidden"android:theme="@android:style/Theme.NoTitleBar.Fullscreen"android:screenOrientation="landscape">
<!-- Tell NativeActivity the name of or .so -->
<meta-data android:name="android.app.lib_name"android:value="secretGame" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Я изменил название игры и компанию, так как они в настоящее время являются секретом, но в остальном именно так оно и есть в файле.
Любая помощь будет принята с благодарностью 🙂
Дополнительная информация:
Единственное, что делает приложение, это рендерит спрайты и принимает ввод. Нет звука, нет интернета, нет ничего другого.
Оба Nexuses (Nexi?: P) являются выпуском 2012 года, а не новой версией 2013 года.
Я использую рендеринг в текстуру. Может ли это быть проблемой? Может быть, с текстурами не-степени-2?
Я проверил, и код все еще работает, я просто ничего не вижу.
А, наконец, я понял это сам, из эта почта. Проблема заключалась в том, что почти все мои текстуры не были мощными, а те, что были в то время за кадром.
Дурак я.
Редактировать: Или, может быть, нет … теперь он не будет отображать НИЧЕГО, даже текстуры, которые были степенью 2 до того … разве FBO OpenGL должен иметь квадратную текстуру для работы на устройствах степени 2?
Edit2: Ах, хорошо, я наконец нашел проблему. Сначала я был прав насчет спрайтов, у которых не было текстур степени 2, но затем я снова включил рендеринг в текстуру, и он перестал работать. Оказывается, проблема была в том, что я рендерил в другой FBO, а затем извлекал текстуру, чтобы превратить ее в спрайт и сделать рендеринг в основной FBO … и, конечно, текстура не была степенью 2. Я просто создал текстуру с наименьшим размером PO2, в которую будет помещаться весь экран, затем изменил UV-координаты полноэкранного спрайта, чтобы лишние части текстуры были выведены за пределы экрана. Задача решена!