从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以后直接悲剧了。

android ge模拟器,在Android模拟器上的一些小陷阱相关推荐

  1. python unpacking_Python在unpacking上的一个小陷阱

    在Python中,交换两个变量的值很方便: a, b = b, a 同样的,对于列表也简单直接: a[i], a[j] = a[j], a[i] 至此都很trivial.但是请看下面这个交换: j = ...

  2. 在PC上安装Android SDK与Android模拟器 - 使用Android Studio 3.1.1

    一. 前言 最近重新安装了一下Android环境,发现现在已经在Google官网找不到独立的Android SDK可以下载了,而网上的其它教程比较旧,还是描述怎么SDK Manager里设置使用国内的 ...

  3. BlueStacks模拟器:多平台上运行Android应用

    BlueStacks模拟器:多平台上运行Android应用http://www.csdn.net/article/2012-08-16/2808708 手机智能化的快速发展使得移动操作系统和桌面操作系 ...

  4. Mac上搭建Flutter开发环境(Android模拟器和IOS模拟器开发)

    前言 最近公司要求使用跨平台语言开发新的应用,这几天也对比了ReactNative和Flutter,最终决定入坑Flutter,今天刚配置完Flutter的开发环境,Flutter中文网也有相应的安装 ...

  5. android7.0模拟器调试,android - 为什么在android 7.0及更高版本上出现模拟器错误? - 堆栈内存溢出...

    我正在开发将联系人保存在.vcf文件中的应用程序. 当我运行模拟器来测试应用程序时,我还会收到以下错误. 应用程序正在物理设备上运行. 但是android 7.0及更高版本的模拟器也给出了错误. (警 ...

  6. 【Android开发】在Android Studio上关联使用第三方模拟器(MuMu模拟器)调试方法

    Android Studio自带的模拟器不用我说了吧,卡出翔,那么如何换成其他模拟器呢?不多说,方法如下: 一.找到自己SDK的安装目录 比如我的SDK是安装在:D:\53-AndroidStudio ...

  7. Android连接不上第三方模拟器(夜神模拟器、海马模拟器、逍遥模拟器、Mumu模拟器)

    在IDE(Android Studio.VsCode等)的终端配置adb命令即可: connect 127.0.0.1:62001 例如在Android Studio中:连接夜神模拟器: 其它模拟器使 ...

  8. 逍遥android模拟器设置,逍遥安卓模拟器最佳设置电脑上玩手游流畅不卡多开更好用...

    电脑上玩腾讯手游使用哪个手游模拟器助手软件?对于目前大部分用户来说适合自己电脑情况的才是最好用的.大部分想在电脑上使用手游模拟器的用户要么是为了手游挂机方便,要么就是为了能够使用鼠标键盘大屏幕更好的操 ...

  9. Android模拟器运行MIUI,电脑上玩小米枪战吃鸡手游 逍遥安卓模拟器设置教程

    原标题:电脑上玩小米枪战吃鸡手游 逍遥安卓模拟器设置教程 电脑上玩小米枪战手游,和绝地求生一样吃鸡的手游,使用逍遥安卓模拟器,电脑上大屏幕鼠标键盘操控,比手机屏幕更大,操作更爽. 首先你需要在逍遥安卓 ...

最新文章

  1. 从言行合一到知行合一
  2. python2x NameError: name ‘abc‘ is not defined
  3. 模拟电梯2.0(继承机制实验)
  4. 在虚机上安装WIN2003
  5. java参数传入的是一个类名_Java编程细节——泛型的定义(类、接口、对象)、使用、继承...
  6. 每日一题(50)—— 各类型与零值的比较
  7. 现代软件工程 - 期末评比及作业要求
  8. Qt工作笔记-QSplitter的使用(老版本里面发现的神控件在新版本内使用)
  9. 数据库设计技巧系列(二)——设计表和字段
  10. 大学计算机科学计术的总结,学好大学计算机科学与技术 要注意当天小结
  11. mybatis list为入参_Mybatis进阶学习
  12. android状态栏自定义,如何自定义Android状态栏颜色
  13. coreldraw铺花纹_Coreldraw绘图实例教程,教你cdr环形花边绘制方法
  14. 学c语言前要学计算机导论吗,计算机导论与C语言
  15. pdf转换成jpg python_怎样利用python将pdf转换成jpg格式
  16. 号外:Axure导入有了!思维导图也正式上线了!
  17. dialog 刘海屏、水滴屏、全面屏 全屏显示
  18. python+sklearn实现决策树模型
  19. phpems考试系统如何处理word txt题库并导入系统
  20. python如何分割年月日_将日期拆分为年、月和日,分隔符不一致

热门文章

  1. Linux进入单用户模式(passwd root修改密码)
  2. MongoDB 基础教程CURD帮助类
  3. 上下文管理、线程池、redis订阅和发布
  4. TFS2013 微软源代码管理工具 安装与使用图文教程
  5. OUR D3.JS 数据可视化专题站(转)
  6. Java多线程系列--“JUC原子类”03之 AtomicLongArray原子类
  7. 三层着装概念 ,是户外着装的基本要求
  8. CBitMap的用法 from http://www.cnblogs.com/toconnection/archive/2012/08/04/mfc.html
  9. Codeforce C. Buns
  10. 谈表达式树的缓存(7):五种缓存方式的总体分析及改进方案