在Android模拟器上的一些小陷阱
来源:互联网 发布:九章算法班视频百度云 编辑:程序博客网 时间:2024/06/07 20:20
从Android SDK R17开始,模拟器就支持OpenGL ES 2。如果能让KlayGE在模拟器上跑起来,开发和测试就能方便许多。于是我装了最新的R21和Android 2.1的ARM v7a的镜像,经过几个小时的努力,终于成功执行了一些原来能在Android x86 2.3上跑的简单例子。途中发现了一些小陷阱,这里总结一下。
屏幕宽高
原先我的做法是通过ANativeWindow_lock获得buffer,再拿buffer的width和height。在ICS上,这么做会导致后面eglCreateWindowSurface失败。原因似乎是ANativeWindow_lock之后这个窗口就被连到2D API,那么在eglCreateWindowSurface的时候就会说那个窗口已经被别的API连接了。即便是ANativeWindow_unlockAndPost也没用。解决方法是改成用ANativeWindow_getWidth和ANativeWindow_getHeight。原先这两个函数总返回0,现在似乎好了,其实用起来更方便。
glDeleteShader
原先我的习惯都是在glAttachShader之后就立刻调用glDeleteShader,因为GLES的文档中有一句话:
If a shader object to be deleted is attached to a program object, it will be flagged for deletion, but it will not be deleted until it is no longer attached to any program object…
但模拟器的实现似乎没遵守这点。如果delete了,后面的glGetAttribLocation都会返回-1,所有attrib都不存在了。所以也得去掉glDeleteShader。
缺少wchar_t的完整支持
这是一直存在的问题。 Bonic 2.3对wchar_t的系列函数也没做到完整支持。最恶心的是mbstowcs和wcstombs,内部只是memcpy了一下,根本没有转码。。。原先一直用Crystax的NDK,没这个问题,转回官方的NDK以后直接悲剧了。
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 在Android模拟器上的一些小陷阱
- vba的一些小陷阱
- C++ 的一些小陷阱
- android在模拟器上的部分快捷键
- android在模拟器上跑。。
- 如何在Android模拟器上运行Adobe的Android程序
- 在eclipse运行android模拟器的一些有用的参数
- adb命令 软件安装在android模拟器的一些事
- raw input 使用上的一些陷阱
- 在模拟器上运行编译好的android
- 在模拟器上安装Android market的方法
- 在Android模拟器上安装apk软件 - ADB的应用
- 在模拟器上运行编译好的android
- 在android模拟器上安装apk程序的方法
- 在Android模拟器上安装已下载的APK软件包
- 在Windows系统上使用Android模拟器的方法
- 在电脑的Android模拟器上安装APK软件
- 在android模拟器上安装软件的方法
- UIP协议栈 百度百科介绍
- 挖掘内心的声音
- hdu 1847 Good Luck in CET-4 Everybody!
- Exception in thread "main" java.io.IOException: Cannot run program "chmod": CreateProcess error=2
- SQL用法注意事项(1)
- 在Android模拟器上的一些小陷阱
- 多目录Makefile写法
- 如何生成一个bmp文件
- Java基础之数组的操作
- Real Time Clock (RTC) Drivers for Linux
- UVa 123 Searching Quickly
- 几种任务调度的 Java 实现方法与比较
- 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
- 解决./configure ,make,make install的报错