文档章节

OpenVG学习

来来叔叔
 来来叔叔
发布于 2017/08/04 23:57
字数 611
阅读 6
收藏 0
点赞 0
评论 0
 

初次接触这个东西,理解肤浅,还请海涵。

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 );//绘制路径


© 著作权归作者所有

共有 人打赏支持
来来叔叔
粉丝 0
博文 100
码字总数 55732
作品 0
广州
高级程序员
Scene Graph 小记(Qt5)

在Qt5中,传统的QWidget系列,仍然使用BackStoring技术,但新的Qt Quick2,将使用Scene Graph。后者能更好地发挥GPU的性能,但是移植QWidget到这上面来的话,工作量似乎又太大。所以... 本文...

晨曦之光 ⋅ 2012/05/08 ⋅ 0

pcDuino V3 发布

pcDuino V3 发布,这是个高性能,成本低的迷你 PC 平台,可以运行类似 OS 的系统,比如 Ubuntu 和 Android。It outputs itsscreen to HDMI enabled TV or monitor via the built in HDMI in...

clouddyy ⋅ 2014/02/26 ⋅ 23

图形硬件驱动API--Gallium3D

Gallium3D (Mesa 3D图形库)提供一套统一的 API,这套 API 将标准的硬件特性(而非软件特性) 暴露出来(如shader units),也就是说,Gallium3D 直接与统一的硬件级特性打交道,而非充当一个...

匿名 ⋅ 2010/09/22 ⋅ 0

软硬件结合的扩展平台--pcDuino

pcDuino是一种高性能,高性价比的迷你PC的平台,能够运行PC操作系统,如Ubuntu和Android的ICS等。它可以通过内置HDMI接口输出视频到电视或显示器屏幕。pcDuino专门针对开源社区快速增长的需求...

红薯 ⋅ 2013/06/27 ⋅ 12

pcDuino 书籍_第一章:pcDuino的硬件和软件

上篇:pcDuino 书籍入门指南_引子 pcDuino是一款高性能高效益的运行类PC操作系统,比如UbuntU Linux操作系统,的迷你PC平台。它可以通过内置的HDMI接口输出视频到HDMI的高清电视机或者显示器上...

pc朵拉 ⋅ 2013/08/05 ⋅ 0

Rayeager PX2 1GB/2GB增强版上市

Rayeager PX2 开发板采用Rockchip PX2处理器,内置双核ARM Cortex-A9核心,内存:1GB DDR3@400MHz,最高运行频率1.4GHz,配备Mali-400 MP4 GPU,支持OpenGL ES 1.1/2.0和OpenVG 1.1,同时支持...

穿prada的008 ⋅ 2014/09/15 ⋅ 1

2014年4月1日 pcDuino V3今天全球正式发布,4月6日全球同步限量发售,

pcDuino 3照片和配置公布 pcDuino官网链接:http://www.pcduino.com/?pageid=1960 接口图: 基本配置: 硬件 软件

pc朵拉 ⋅ 2014/04/01 ⋅ 3

pcDuino是一个带 mini PC 功能的加强版Arduino,开源软件Linux和开源硬件Arduino在pcDuino上完美的结合

pcDuino是一个带 mini PC 功能的加强版Arduino。开源软件Linux和开源硬件Arduino在pcDuino上完美的结合。目前,大多的Arduino生态体系的Shields可以在pcDuino上跑。但是,需要一个 T board的...

pc朵拉 ⋅ 2013/07/25 ⋅ 5

Android 自定义相机开发(三) —— 了解下EGL

胡说八道 如果要使用OpenGl来自定义相机,这个还是要了解下的。可能大多数开发者使用过OpengGL但是不知道EGL是什么?EGL的作用是什么?这其实一点都不奇怪,因为Android中的GlSurfaceView已经...

aserbao ⋅ 05/10 ⋅ 0

Icaros Desktop 1.2.6 发布了!

Icaros Desktop, AROS Research Operating System(经典AmigaOS的一款开源复兴版本)的i386 PC发行版出炉1.2.6版本,推出了全新的提升和功能。 他们试图同时满足老的Amiga用户, 采用图像化...

OSnews中文 ⋅ 2011/02/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Thrift RPC实战(二) Thrift 网络服务模型

TServer类层次体系 TSimpleServer/TThreadPoolServer是阻塞服务模型 TNonblockingServer/THsHaServer/TThreadedSelectotServer是非阻塞服务模型(NIO) 1 TServer抽象类的定义 内部静态类Args的...

lemonLove ⋅ 5分钟前 ⋅ 0

vim命令用法

第五章 vim命令 vim和vi几乎是一样的,唯一的区别就是当编辑一个文本时,使用vi不会显示颜色,而使用vim会显示颜色。 vim有三个模式:一般模式,编辑模式,命令模式。 系统最小化安装时没有安...

弓正 ⋅ 7分钟前 ⋅ 0

MyBatis源码解读之配置

1. 目的 本文主要介绍MyBatis配置文件解析,通过源码解读mybatis-config.xml(官方默认命名)、Mapper.xml 与Java对象的映射。 2. MyBatis结构 查看大图 MyBatis结构图,原图实在太模糊了,所以...

无忌 ⋅ 10分钟前 ⋅ 0

Ignite的jdbc与网格的连接方式的查询性能对比

环境: 数据量100万 Ignite2.5 Windows10 8g jdbc方式连接 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; i......

仔仔1993 ⋅ 25分钟前 ⋅ 0

收集自网络的wordpress 分页导航的代码教程(全网最全版)

wordpress 分页导航是用来切换文章的一个功能,添加了 wordpress 分页导航后,用户即可自由到达指定的页面数浏览分类文章,而这样的一个很简单功能却有很多朋友在用插件:WP-PageNavi,插件的...

Rhymo-Wu ⋅ 41分钟前 ⋅ 0

微服务 WildFly Swarm 入门

Hello World 就像前面章节中的其他框架一样,我们希望添加一些基本的 Hello-world 功能,然后在其上逐步添加更多的功能。让我们从在我们的项目中创建一个 HolaResources 开始。您可以使用您的...

woshixin ⋅ 48分钟前 ⋅ 0

Maven的安装和Eclipse的配置

1. 下载Maven 下载地址 2. 解压压缩包,放到自己习惯的硬盘中 此处我将其放到了 D:\Tools 目录下。 3. 配置环境变量 右键此电脑 -> 属性 -> 高级系统设置 -> 环境变量。 在系统变量中新建,变...

影狼 ⋅ 55分钟前 ⋅ 0

python pip使用国内镜像的方法

国内源 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:http://......

良言 ⋅ 56分钟前 ⋅ 0

对于url变化的spa应该如何使用微信jssdk

使用vue单页面碰上微信jssdk config验证失败的坑。第一次成功 之后切换页面全部失败,找到了解决方法,第一次验证成功后保存验证信息 切换页面时验证信息直接拿来用,加一个wx.error() 失败时...

孙冠峰 ⋅ 今天 ⋅ 0

Spring Cloud Gateway 一般集成

SCF发布,带来很多新东西,不过少了点教程,打开方式又和以前的不一样,比如这个SCG,压根就没有入门指导,所以这里写一个,以备后用。 一、集成 pom.xml <dependency> <groupI...

kut ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部