CanvasWebgl项目介绍
CanvasWebgl 介绍
CanvasWebgl 是一个基于webgl 开发的2d绘图框架,使用TypeScript开发
CanvasWebgl的功能,是在屏幕空间 或者 3D空间产生一个画布
画布的坐标系采用最直观的左上角0,0,右下角(w,h)的模式
封装了图片集和字体的支持


1.屏幕空间

2.3D空间

CanvasWebgl 和 引擎的适配需要一个适配器,这个适配器我们已经编写了BabylonJS 和 Egret3D的版本(egret3d 的 屏幕空间视频需要稍微修改一下egret3d源码,已经向egret方面反馈,希望他们给出扩展预留接口)

Babylonjs的版本

ScreenCanvas 的尺寸自动使用 屏幕webgl区域的像素分辨率
3DCanvas 需要指定 像素宽、高,会创建一个3D实体,改变此实体的位置,即可移动3DCanvas的位置
CanvasWebgl代码用法
第一步是初始化材质,第二步是注册资源
材质就是一个txt文件,你可以在例子中找到
Svn地址http://code.taobao.org/svn/falconconv/trunk/babylonfan/webgl/canvas

贴图 支持 jpg png,这些浏览器支持的格式,虽然也可以直接注册贴图。
通常高级的用法是注册图集与字体。这里各提供一个示例。
第三步是创建画布

我们提供两种画布,屏幕空间的和3D空间的,用一个就行了,一般从屏幕空间的开始吧,
那个MyCanvasAction是你自己写代码的地方,他继承自接口 canvasAction

Onresize 尺寸变化通知
Onpointevent 是指针事件,简洁易懂
Ondraw里面自己发挥了
在ondraw里面可以有三类操作
1.直接画一个贴图

2. 画一个sprite(图集中的一块称为一个sprite)

"1"是图集的名字,前面注册的,第二个参数 是 sprite的名字,最后是一个rect
3.画一行文字

"f1"是字体的名字,第二个参数是显示的文本,最后是一个rect
用rect的高度作为字体的大小,用rect的左上角开始绘制文字
如何制作canvasWebgl的图集
CanvasWebgl 使用著名工具TexturePacker 制作图集

通过给tp增加两个文件,来增加我们的导出格式

可以从svn位置
http://code.taobao.org/svn/falconconv/trunk/babylonfan/webgl/ext_texturepacker
取得这两个文件
Tp的使用略
导出后会得到两个文件

丢进项目使用即可
如何制作canvasWebgl的字体
我们专门开发了一个字体导出工具
Svn地址
http://code.taobao.org/svn/falconconv/trunk/babylonfan/webgl/fonttool

只需要选择ttf字体,可以自己将ttf字体 copy 到 font目录
然后选择准备导出的文字,默认从word.txt中读取
然后点菜单里面的export 选择 合适的贴图大小 导出即可

导出的资料如图
放入项目中使用即可
这是sdf字体,不用考虑字号,导出的30点阵的,可以适应很大范围的缩放,各种字号都不会出问题
通过优化字体shader,可以很容易的实现抗锯齿、描边、投影。现在只是简单做了这个字体shader,还没有优化
小鸟例子

http://101.81.249.255:8039/canvasWebgl_Demo2/
加一个例子
CanvasWebgl项目介绍的更多相关文章
- Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍
网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edisonchou/p/4458219.html 网站日志分析项目案例 ...
- 10年C#历程的MVP之路与MVP项目介绍
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 1.意外的惊喜 10月份收到微软总部寄来的荣誉证书,非常激动, ...
- Openlayers+Geoserver(一):项目介绍以及地图加载
项目验收完,趁着事情不是很多,对这个项目进行梳理.我主要负责地图模块,网站其他模块主要有两个,一个是报表,主要是100多张报表,技术没有难度,主要是工作量的问题.另一个是数据的校验,就是 ...
- CoinPunk项目介绍
CoinPunk是一个bitcoin比特币钱夹服务web应用程序,你可以自己构建钱夹服务.开源,免费. 轻量级,高效 响应式设计 轻易创建新账户 详细的交易记录 构建于Node.js与H ...
- Android Hotpatch系列之-项目介绍
给现实Android apk打补丁,不用强迫客户升级客户端,悄悄的就把bug修复了,程序猿再也不用被老大骂娘了. 客户端例子实现:https://github.com/fengcunhan/Hotpa ...
- xcode新建项目介绍
xcode新建项目介绍 1.打开xcode选择“create a new xcode project 2.product name 工程名称 campany identifter 公司id 一般都写公 ...
- 斗地主算法的设计与实现--项目介绍&如何定义和构造一张牌
本篇主要讲解斗地主中如何比较两手牌的大小. 友情提示:本篇是接着以下两篇文章就讲解的,建议先看看下面这2篇. 斗地主算法的设计与实现--如何判断一手牌的类型(单,对子,三不带,三带一,四代二等) 斗地 ...
- Oschat IM 开源即时通讯项目介绍 - FengJ的个人页面 - 开源中国社区
Oschat IM 开源即时通讯项目介绍 - FengJ的个人页面 - 开源中国社区 Oschat IM 开源即时通讯项目介绍 255人收藏此文章, 我要收藏 发表于5天前(2013-08-28 ...
- NiftyNet项目介绍
NiftyNet项目介绍 简述 NiftyNet是一款开源的卷积神经网络平台,旨在通过实现医学图像分析的深度学习方法和模块,支持快速原型和再现性,由WEISS (Wellcome EPSRC Ce ...
随机推荐
- AutoMapper
什么是AutoMapper? AutoMapper是一个对象和对象间的映射器.对象与对象的映射是通过转变一种类型的输入对象为一种不同类型的输出对象工作的.让AutoMapper有意思的地方在于它提供了 ...
- SSH实战 · 唯唯乐购项目(中)
用户模块 三:一级分类的查询 创建一级分类表并导入基本数据 CREATE TABLE `category` ( `cid` int(11) NOT NULL AUTO_INCREMENT, ` ...
- redis集成到Springmvc中及使用实例
redis是现在主流的缓存工具了,因为使用简单.高效且对服务器要求较小,用于大数据量下的缓存 spring也提供了对redis的支持: org.springframework.data.redis.c ...
- Java FtpClient 实现文件上传服务
一.Ubuntu 安装 Vsftpd 服务 1.安装 sudo apt-get install vsftpd 2.添加用户(uftp) sudo useradd -d /home/uftp -s /b ...
- 通过自定义特性,使用EF6拦截器完成创建人、创建时间、更新人、更新时间的统一赋值(使用数据库服务器时间赋值,接上一篇)
目录: 前言 设计(完成扩展) 实现效果 扩展设计方案 扩展后代码结构 集思广益(问题) 前言: 在上一篇文章我写了如何重建IDbCommandTreeInterceptor来实现创建人.创建时间.更 ...
- [转载]网站地址栏小图标favicon.ico的制作方法
有人也许会好奇,有的网址前面有个漂亮的小图标而且有的网站图标还会动,这是怎么做到的呢? 如下图所示: 那个小图标有个名字叫favicon.ico,网站图标虽小但可以起到很好的点缀作用,尤其是当浏览者将 ...
- 记:MySQL 5.7.3.0 安装 全程截图
前言: 下一个班快讲MySQL数据库了,正好把服务器里面的MySQL卸了重装了一下. 截个图,作为笔记.也正好留给需要的朋友们. 目录: 下载软件 运行安装程序 安装程序欢迎界面 许可协议 查找更新 ...
- 我的MYSQL学习心得(十六) 优化
我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- Spark笔记:RDD基本操作(下)
上一篇里我提到可以把RDD当作一个数组,这样我们在学习spark的API时候很多问题就能很好理解了.上篇文章里的API也都是基于RDD是数组的数据模型而进行操作的. Spark是一个计算框架,是对ma ...
- 死去活来,而不变质:Domain Model(领域模型) 和 EntityFramework 如何正确进行对象关系映射?
写在前面 阅读目录: 设计误区 数据库已死 枚举映射 关联映射 后记 在上一篇<一缕阳光:DDD(领域驱动设计)应对具体业务场景,如何聚焦 Domain Model(领域模型)?>博文中, ...