免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1804 | 回复: 0
打印 上一主题 下一主题

Android 上的原生 OpenGL/ES [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-11 11:43 |只看该作者 |倒序浏览
surface manager 可以準備一塊 surface,把 surface 的 fd (一塊 ashmem 記憶體) 傳給一個 app,讓 app 可以在上面作畫。有了這層理解,我們對 android 可以有更自由的發揮,例如,可以不改一行 cairo 的程式碼,就利用 cairo 與 c++ 寫出一個會動的時鐘而 Surface manager 顧名思義,就是管理邏輯上眾多的 surface,其底層對應於 OpenGL|ES 的實做。透過 surface 的處理,我們可讓像
fdclock
這樣原生 (native) 的 C 語言程式,透過同樣在 GNU/Linux 上原生的 Cairo 函式庫,無痛的顯示處理。這實在很吸引人,畢竟若能在 Android 平台充分重用 GNU/Linux 既有的軟體功能,會是多麼有趣的事。且讓我們思考是否能在 Android 上撰寫 C 語言的 OpenGL/ES 應用程式。
Android 已提供初步的 OpenGL/ES 封裝,實做則是透過 agl (Android OpenGL) 底層的 PixelFlinger 與 GPU。關於 Java 部份的 OpenGL APIs 操作,可參閱原始程式碼 frameworks/base/opengl/java/android/opengl/GLSurfaceView.java ,不過現在只看 C 程式的部份。動態連結函式庫必須連結到以下三者:

  • libEGL : OpenGL/ES APIs
  • libGLESv1_CM : Reference implementation
  • libui : Android UI framework (native)
準備好我們的程式碼之後,其建構過程如下:
$ . build/envsetup.sh
$ cd angeles-test/
$ mm
make: Entering directory `/home/jserv/Myth/mydroid'
target arm C: angeles-test 參考的螢幕顯示如下:

不過,在模擬器顯示的狀況會比實體遜色頗多,可見到相當嚴重的重繪動作,但基本上是可用的。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/85805/showart_1924207.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP