为了在Android上构建除Java / Dalvik之外的其他平台,我已禁用zygote并尝试了此处列出的想法:
http://jiggawatt.org/badc0de/android/index.html#opengl
我已经成功编译了OpenGL测试代码并将其推送到Android模拟器(我正在运行2.3 / gingerbread)。它只是使引导屏幕闪烁而不是彩色三角形,而是#34; ANDROID _"文字闪烁。这是输出:
root@android:/data/misc # ./test1
GL version: 1.4
Window specs: 0*0 format=-1416517231
GL context: 162f8
GL surface: 163d0
这似乎表明来自libui的android_createDisplaySurface()没有返回正确大小的窗口。但是模拟器上的logcat显示以下内容,这似乎意味着相反:
D/libEGL ( 73): loaded /system/lib/egl/libEGL_emul.so
D/libEGL ( 73): loaded /system/lib/egl/libGLESv1_CM_emul.so
D/libEGL ( 73): loaded /system/lib/egl/libGLESv2_emul.so
D/eglWrapper( 73): Loading egl dispatch for test1
D/eglWrapper( 73): isNeedEncode? for test1
D/eglWrapper( 73): Initializing native opengl for test1
D/eglWrapper( 73): loading /system/lib/egl/libGLES_android.so into /system/lib/egl/libGLESv1_CM_emul.so complete
D/eglWrapper( 73): loading /system/lib/egl/libGLES_android.so into /system/lib/egl/libGLESv2_emul.so complete
I/gralloc ( 73): using (fd=6)
I/gralloc ( 73): id =
I/gralloc ( 73): xres = 320 px
I/gralloc ( 73): yres = 480 px
I/gralloc ( 73): xres_virtual = 320 px
I/gralloc ( 73): yres_virtual = 960 px
I/gralloc ( 73): bpp = 16
I/gralloc ( 73): r = 11:5
I/gralloc ( 73): g = 5:6
I/gralloc ( 73): b = 0:5
I/gralloc ( 73): width = 49 mm (165.877548 dpi)
I/gralloc ( 73): height = 74 mm (164.756760 dpi)
I/gralloc ( 73): refresh rate = 651.04 Hz
I/pixelflinger( 73): Needs: n=0x03010144 p=0x00000177 t0=0x00000000 t1=0x00000000
I/ARMAssembler( 73): generated scanline__00000177:03010144_00000000_00000000 [ 26 ipp] (63 ins) at [0x4009f1e8:0x4009f2e4] in 9552233 ns
到目前为止,我唯一的猜测是堆栈上的某些东西正在等待SurfaceFlinger,而没有Dalvik就没有运行。但它不在日志中。
我意识到这已经走了很多路,但是希望一些android / OpenGL专业人士可能会有一些线索,关于它是怎么回事。任何帮助都真诚地感激。
答案 0 :(得分:0)
Android原生表面自eclair或froyo以来已经改变。你应该试试framework/base/opengl/tests/angeles/app-linux.cpp。