OpenVG学习
来源:互联网 发布:天锐绿盾加密软件破解 编辑:程序博客网 时间:2024/06/06 16:57
初次接触这个东西,理解肤浅,还请海涵。
OpenVG是用于嵌入式设备上的矢量图形开发接口,并且希望利用硬件加速技术来提高性能。国外有商业化的OpenVG软硬件实现,国内也有牛人作了OpenVG的软件实现,效率比官方实现高很多。而且提供了一些文档及例程方便OpenVG的学习,下面的学习即取材于此。可以在这里下载http://www.hygraphics.com/download/gingkoVG/OpenVG%20Release.zip
基本背景
计算机系统可以有多种显示引擎,用于支持界面的显示、GUI交互、绘图、视频等等。通常情况下,嵌入式系统的显示系统有以下几种模式:
1) 无加速 (帧缓冲 – framebuffer)
2) 硬件Blitter和 alpha-blending 混合
3) 硬件2D 矢量绘图函数
4) 固定渲染管线 3D引擎
5) 可编程渲染管线 3D 引擎
可以根据不同的硬件显示系统,选择合适的引擎。这么说来OpenVG属于其中的第3)种引擎了。
OpenVG的使用
OpenVG里的api函数命名与OpenGL类似,都包括vg开头的模块名,然后是函数功能名称,最后是参数类型。稍有些不同,例如不是根据函数参数中数组的长度的不同而命名不同的函数,而是统一成一个函数,参数包括数组名及数组长度。
api使用步骤
类似于GPU硬件实现的流程一样,先设置好所有的参数,包括颜色、路径、模式等,然后再调用绘制函数。
示例1:场景(context)参数的获取与设置
vgSetfv( VG_CLEAR_COLOR, 4, clear );//设置清除背景的颜色,参数为float的数组clear,长度为
4
vgClear( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );//清除指定面积的背景
vgSeti( VG_SCISSORING, VG_TRUE );//设置允许裁剪
vgSetiv( VG_SCISSOR_RECTS, 8, rects );//设置裁剪的范围,参数为整形数组rects,长度为8
vgGetfv( VG_CLEAR_COLOR, 4, color );//获取清除背景的颜色,参数为float数组color,长度为4
示例2:基本几何体的绘制
包括点、线、三角形、矩形、椭圆、曲线等
以三角形为例:
VGubyte segments[] = { VG_MOVE_TO_ABS, VG_LINE_TO_REL, VG_LINE_TO_REL, VG_CLOSE_PATH };//设置每个顶点的动作
VGfloat coords[] = { 0.0f, 0.0f, 50.0f, 0.0f, -25.0f, 25.0f };//顶点坐标
path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL);//创建路径
vgAppendPathData( path, 4, segments, coords );//为路径添加数据
vgDrawPath( path, VG_STROKE_PATH );//绘制路径
- OpenVG学习
- OpenVG学习
- OpenVG学习
- OpenVG
- OpenVG
- 原生OpenVG
- OpenVG是什么?
- OpenVG简介
- OpenVG是什么?
- OpenVG介绍
- OpenVG简介
- Qt 4.6支持OpenVG
- OpenVG 1.1 SPEC 正式Release
- 关于openGL, openGL ES, openVG
- 可实用的OpenVG的实现发布
- OpenVG – 矢量图象加速度的标准
- OpenGL、OpenGL ES、OpenVG、GLX、EGL名词解释
- OpenGL、OpenGL ES、OpenVG、GLX、EGL简介
- C/C++代码批量格式化
- 深度介绍Linux内核是如何工作的
- 回顾2011
- OpenVG是什么?
- Java中日期的处理
- OpenVG学习
- cygwin编译mplayer
- 巧妙证明点到直线距离公式
- 马上又是新的一年了
- SDL编程一(环境配置)
- SDL编程二(视频)
- SDL编程三(音频)
- 充满梦想和不确定的的2012
- SDL编程四(事件)