游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8008|回复: 0

[原]安卓openglES20下做的文字气泡

[复制链接]

33

主题

159

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
QQ
发表于 2012-9-2 22:20:00 | 显示全部楼层 |阅读模式


首先,文字气泡也可以用2D直接DrawBitmap ,效率高,
但做在GLES 3D环境下也有他的好处,可以通过着色器实现一些2D上无法做到的效果,而且也可以无关于屏幕尺寸及纵横屏方式。

这东西看着简单,做起来费时间,习惯了直接LIGHTWAVE做模型,要自定义几个空间点费时费力来着
程序思想是把一个框4个点(后来变成7个点了)直接定义成投影矩阵下的position放在近平面来显示,跟directX FVF:3DFVF_XYZRHW差不多道理
做了这几天还是摸索到一点东西的:
首先安卓屏座标系与GLES的投影座标系的Y轴是相反的
屏座标:
--------->x(1,0)
|
|
|y(0,1)
投影系

(-1,1)          (1,1)
  ______________
  |            |
  |            |
  |            |
  |            |
  |            |
  ______________
(-1,-1)          (1,-1)

代码里有我做的 ,屏座标系转投影系的函数

第二个让我迷惑了一整天的问题是GL线程
调试时你可以看到有一个线程名字是 GLThread,它掌控所有opengl状态机的状态改变
所以要调用 GLES20内函数的时候(我碰到的是使用GLES20的函数把一个bitmap绑定到TEXTURE ID上)必须在GLThread上
在其它线程上操作的话,它倒是不会报错(GLERROR也没显示),但我申请一个Texture Id的时候总是给我0值,当然就什么都显示不出来了。

学的不精,粗算了一下,也只有GLSurfaceView::Render()类下的几个overide函数是跑在GL线程里的  
PS 在杭州,想换工作
喵喵,请了5天假陪老婆儿子去海南了哈。


http://upload.gameres.com/20129/sf_222174_7525.zip
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-27 19:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表