我正在使用Gameplay3D编写Android应用程序。我可以用NDK编译好,用ANT生成APK(调试和发布)。这款应用在Galaxy S3和Nexus 4上安装、启动和运行都很完美,但当我试图在Nexus 7上启动它时,它什么也显示不出来。只有一个底部有导航条的黑屏。
我有两部Nexus 7,每一部都安装了不同版本的安卓系统(一个是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的幂次,而那些是在屏幕上。
愚蠢的我。
编辑:或者不是…现在它不会显示任何东西,甚至不显示以前的2次方的纹理…OpenGL FBO是否必须具有方形纹理才能在2次方设备上工作?
编辑2:啊,好吧,我终于找到问题了。我最初是正确的,精灵没有2次幂纹理,但后来我重新启用了渲染到纹理,它停止工作了。原来问题是,我渲染到一个不同的FBO,然后提取纹理,把它变成一个精灵,渲染到主要的FBO…当然,纹理也不是2的幂。我只是在最小的PO2尺寸下创建纹理,这样整个屏幕仍然可以容纳,然后修改全屏精灵的UV线,这样额外的纹理部分就会被移出屏幕。问题解决了!