在我的Android应用程序中,我使用以下API:
A)Window.setFormat(PixelFormat)
B)SurfaceView.getHolder()。setFormat(PixelFormat)
C)OpenGL:EGL10.eglCreateWindowSurface(...)
要正确使用/了解这些API,我需要找到以下问题的答案(问题4对我来说最重要):
A)和B)在每个设备型号上支持的值是什么 - 它们仅依赖于Android API版本,还是必须在运行时查询其他API才能找到它?
根本没有调用A)和B)时的默认值是什么?它们只依赖于android API版本,还是必须在运行时查询其他一些API?
当不支持的值传递或者安全降级到较低质量格式(如何找出发生的时间)时,A)和B)是否失败(如何报告此错误)?
A),B)和C)之间必须满足哪些依赖关系才能使应用程序正常工作?
到目前为止我找到的信息:
2
此post声明对于Window.format默认值为
RGB888适用于Android 2.3及更高版本
用于旧设备的RGB565
还有不推荐使用的Display.getPixelFormat()方法(在android api级别17中),现在总是返回RGBA_8888
4
我假设Surface.format必须始终匹配OpenGl.format。但是我发现设置SurfaceView-format == RGB_565和OpenGl-format == RGBA_8888在我的Nexus7上正常工作。
答案 0 :(得分:0)
尝试添加此选项(进入AndroidManifest.xml)以避免默认RGB_565:
<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />