文档章节

OpenVG学习

来来叔叔
 来来叔叔
发布于 2017/08/04 23:57
字数 611
阅读 17
收藏 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 );//绘制路径


© 著作权归作者所有

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

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

晨曦之光
2012/05/08
645
0
图形硬件驱动API--Gallium3D

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

匿名
2010/09/22
3.1K
0
软硬件结合的扩展平台--pcDuino

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

红薯
2013/06/27
47.5K
12
pcDuino V3 发布

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

clouddyy
2014/02/26
8.6K
23
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
329
1

没有更多内容

加载失败,请刷新页面

加载更多

关于ComponentOne For WinForm 的全新控件 – DataFilter数据切片器(Beta)

概述 数据切片器在电子商务网站上很常见 - 它们可以帮助用户快速过滤所选商品,并且所有过滤选项都可以在一个地方使用,通常包含核心控件类型为:清单,范围栏和单选按钮等。在ComponentOne ...

葡萄城技术团队
13分钟前
1
0
Spring Data JPA 常见异常

异常一: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Invocation of init method failed; nested exception i......

小99
13分钟前
1
0
聊聊flink的EventTime

序 本文主要研究一下flink的EventTime SourceFunction flink-streaming-java_2.11-1.7.0-sources.jar!/org/apache/flink/streaming/api/functions/source/SourceFunction.java /** * Inte......

go4it
26分钟前
1
0
如何解决 homebrew 更新慢的问题

之前一直困扰于 Homebrew 的更新速度,曾试过修改更新源(清华、中科大等)的方式,但是并没什么卵用;也试过设置 curl 代理的方式,但是 brew 走的好像不是 curl 的方式,所以也没用。 通过...

whoru
31分钟前
4
0
TiDB EcoSystem Tools 原理解读系列(二)TiDB-Lightning Toolset 介绍

简介 TiDB-Lightning Toolset 是一套快速全量导入 SQL dump 文件到 TiDB 集群的工具集,自 2.1.0 版本起随 TiDB 发布,速度可达到传统执行 SQL 导入方式的至少 3 倍、大约每小时 100 GB,适合...

TiDB
33分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部