использует-SDK теги вылетает живые обои - PullRequest
1 голос
/ 07 февраля 2011

Я сделал немного живых обоев.Я хотел загрузить его на рынок и получил информацию, необходимую для определения уровня API.Но когда я устанавливаю

<uses-sdk android:minSdkVersion="7" />

в Манифесте сразу после закрытия тега, обои просто вылетают при загрузке.Я ничего не изменил между двумя компиляциями, и он работает без тега.Ошибка происходит где-то глубоко в потоке opengl, где запускаются обои, поэтому сообщение об исключении не очень полезно.По крайней мере, я не знаю, что там могло произойти.

W/dalvikvm( 3838): threadid=9: thread exiting with uncaught exception (group=0x40201560)
E/AndroidRuntime( 3838): FATAL EXCEPTION: GLThread 10
E/AndroidRuntime( 3838): java.lang.IllegalArgumentException: Must use a native order direct Buffer
E/AndroidRuntime( 3838):    at com.google.android.gles_jni.GLImpl.glVertexPointerBounds(Native Method)
E/AndroidRuntime( 3838):    at com.google.android.gles_jni.GLImpl.glVertexPointer(GLImpl.java:1121)
E/AndroidRuntime( 3838):    at com.mblaster.LaserShowLWP.MyRenderer.drawLaserRays(MyRenderer.java:406)
E/AndroidRuntime( 3838):    at com.mblaster.LaserShowLWP.MyRenderer.onDrawFrame(MyRenderer.java:109)
E/AndroidRuntime( 3838):    at net.rbgrn.android.glwallpaperservice.GLThread.guardedRun(GLWallpaperService.java:675)
E/AndroidRuntime( 3838):    at net.rbgrn.android.glwallpaperservice.GLThread.run(GLWallpaperService.java:540)
I/installd(  134): unlink /data/dalvik-cache/data@app@com.mblaster.LaserShowLWP-1.apk@classes.dex

Если вы хотите прочитать код GLThread, он здесь: https://github.com/markfguerra/GLWallpaperService/blob/master/GLWallpaperService/src/net/rbgrn/android/glwallpaperservice/GLWallpaperService.java

Я надеюсь, что кто-то может помочьмне с этим.

mblaster

1 Ответ

2 голосов
/ 08 февраля 2011

ОК, поскольку никто не ответил, и я сам понял это, вот ответ:

Кажется, что OpenGL имеет разные спецификации относительно буферов в разных версиях SDK.Странно, что тег действительно влияет на него, так как код все равно был скомпилирован для API версии 7.

Так что в основном все мои буферы opengl, которые ранее были определены как:

FloatBuffer.wrap(float[]);

теперь должны быть определены как прямые буферы собственного порядка и заполнены через:

BufferName.put(float[]);
...