一、背景
通常而言,C/C++制作二维图形的绘制程序采用GDI或者GDI+已经足够,不论是绘制的效率还是绘制图元的类别。制作跨平台的程序的主要目的是将已有的绘制程序转移到移动端,以安卓为例,可以使用android studio编译出的.so文件,进而做二次开发。
如果是仅仅制作一个apk文件,那推荐使用现有的封装好的平台,如cocos2dx,同样的代码可以在安卓、IOS/MAC、Windows等平台编译出可执行程序。但是这里的需求要把绘制模块独立出来(不能把场景之类的东东带上),数据访问形成jar包供二次开发使用。从cocos2dx中分离绘制 VS 另写一个绘制模块,选择了后者。
既然跨平台,首选当然是openGL,悲催的是,接触后发现移动端不支持很多原生态的函数,诸如glBegin glLineStipple这样的函数都不支持,而不得不使用GLES。以下是一篇介绍从openGL转换到ES的文章:
https://pandorawiki.org/Porting_to_GLES_from_GL
即便是最简单的绘制线,也不得不使用glDrawArrays这样的函数来执行了。
二、绘图简介
这个系列将用几篇文章来介绍近期GLES学习和使用的心得。绘图程序需要考虑的因素有:
(1)绘制效率,库文件编译出后需要在手机端二次开发使用,因此需要保证绘图效率;
(2)绘制图元,包括点、线、多边形(含不规则多边形)、文字;
(3)绘制顺序,所有的图元有先后顺序,保证叠加的次序和读取的数据一致;
(4)图元特性,例如线宽、线型、符号等的支持;
三、效果图
通过这一段时间的尝试,得到了如下的展示效果,拥有较高效率且支持主要图元的跨平台程序。