Giter VIP home page Giter VIP logo

c-zhuo / easycanvas Goto Github PK

View Code? Open in Web Editor NEW
330.0 11.0 49.0 37.85 MB

数据驱动、2D&3D、渐进式Canvas库,支持JSX,配备Chrome调试插件,支持微信小游戏、物理引擎等。

Home Page: https://c-zhuo.github.io/easycanvas/

License: MIT License

JavaScript 95.05% Vue 3.22% CSS 1.25% HTML 0.34% Shell 0.14%
canvas canvas-game javascript-library webgl webgl-library canvas-library animation

easycanvas's Introduction

Easycanvas

https://raw.githubusercontent.com/c-zhuo/easycanvas/master/demos/index_v2.gif

Easycanvas是一个同时支持2D和3D渲染、轻量、高效、MVVM模式的渐进式canvas渲染库。提供了基于组件的开发方式,支持JSX写法,可在浏览器、微信小游戏和小程序中使用,并具备Chrome插件来便于开发(包括数据结构的显示、对canvas中某个元素的样式进行调整等),也支持物理引擎、3D模型渲染等插件的渐进式引入。

浏览器兼容性:IE>=9(原因为defineProperty)

https://c-zhuo.github.io/easycanvas/

https://c-zhuo.github.io/easycanvas/

Feature

  • ☑ 渐进式基础库
  • ☑ JSX写法
  • ☑ 脚手架
  • ☑ 2D渲染
  • ☑ 精灵动画(组件形式)
  • ☑ 物理引擎(插件)
  • ☑ 事件、生命周期钩子、自定义钩子
  • ☑ 使用JSX开发(babel-plugin)
  • ☑ 开发者工具(Chrome扩展插件)
  • ☑ 基础文档
  • ☑ 基础功能的单元测试
  • ☑ 3D渲染(插件)
  • ☑ 2D、3D混合渲染
  • ☑ 3000个150x150的图片2D渲染时保持60fps
  • ☑ 1000个3D模型渲染时保持60fps
  • ☑ 允许自定义组件
  • ☑ 允许自定义插件
  • ☑ 2D图片的运行时像素编辑
  • ☑ 文档补齐
  • ☑ 支持加载mmd模型(插件)
  • ☑ 支持加载3ds模型(插件)
  • ☑ 支持加载fbx模型(插件)
  • ☑ 支持加载dds图片(插件)
  • ☑ 支持微信小游戏(插件)
  • ☑ 支持微信小程序(插件)
  • ☑ CanvasUI基础组件
  • ☐ 支持typescript
  • ☐ 导出原生javascript+canvas骨架屏(未开放)
  • ☐ 调试工具完善
  • ☐ CanvasRouter路由(插件)
  • ☐ CanvasStore数据管理(插件)
  • ☐ 更多功能的单元测试
  • ☐ Webgl的3D渲染性能优化

Changelog

Chrome调试工具

Clone这个仓库,打开Chrome://extensions,然后将chrome-devtools/dist目录拽进去安装即可。

Introduction

A lite(30kb+) canvas library, includes a Chrome plugin for debugging. Support physics and animations with high performace. Suits mobile and PC(including IE).

More demos

  • npm run dev, then localhost:8080/demos/demo1.html.

How to use

Import Easycanvas:

  • build/index.common.js: For Node.

  • build/easycanvas.standalone.dev.js: Standalone version, support chrome develop tools.

  • build/easycanvas.standalone.prod.js: Standalone version for production mode, 30kb+.

easycanvas's People

Contributors

c-zhuo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

easycanvas's Issues

webgl添加透明纹理的问题

您好!
我使用Easycanvas的webgl插件渲染图片,添加了一个背景图,又在背景图上增加了一个组件图;
组件图使用的纹理图片是.png格式,图片是透明背景,
但是最终的渲染结果是组件图有了白色的背景,能帮忙指点一下原因吗?这种情况有办法解决吗?
测试代码在这个链接: https://cyitianyou.github.io/easycanvas-demo/demo.html

有没有Easycanvas.webglShapes.custom使用纹理贴图的demo呀?

类似于这样的,我只找到了使用colors的demo,可以使用img吗?
Easycanvas.webglShapes.custom({
   vertices: vertices,
   indices: indices,
   textures: textures,
   img: 'https://raw.githubusercontent.com/c-zhuo/tanyitan/3d/debug/docs/stone.jpg'
})

[BUG]

版本
如:0.8.3,Easycanvas的版本

影响平台
如:iOS真机/
touchstart 事件 与真实的精灵位置偏移半个精灵大小(比如我要触发某个精灵的touchstart 需要点击此精灵的右半部分 或者右侧超出半个精灵大小的区域,感觉判断触发事件的区域偏移了半个精灵大小)ios设备均是如此 安卓正常

问题描述
现象/JS报错信息/截图等

关键代码
例如有问题的Sprite的style属性等

其它
(问题补充)

事件冒泡最好符合业内程序标准设计

嵌套的元素不会进行事件的冒泡传递,例如一个sprite的child触发了事件,那么这个sprite不一定会触发这个事件,取决于父元素的实际范围。这点与javascript在dom上的事件传递规则不同。
最好符合通用设计,不仅是标准,而且为了未来的扩展

没有作者详细信息

好遗憾,看到这么好的产品,但是没有看到作者信息,恕我孤陋寡闻,可以加好友吗,我的微信号:wang532286,或者我的邮箱:[email protected], 期待您的回复

Chrome任务管理器显示GPU内存过高的问题

您好!
我在Canvas画布上显示了一个Easycanvas.webglShapes.custom组件,
跟随鼠标的mousemove事件通过this.updateWebglStyle("vertices")的方式不断的修改组件的顶点坐标。
操作几次之后Chrome浏览器显示当前GPU内存超过1G以上,整个浏览器会变得比较卡
想问下这类现象是因为WebGL中的缓存没有及时释放的原因吗?这种问题可以通过js代码解决吗?

[BUG]在配置比较低的win平台上, 使用chrome浏览器 发现闪屏问题

版本
如:0.7.4,Easycanvas的版本

影响平台
如:Chrome Web

问题描述
绘制画面有闪屏问题

关键代码
无论任何操作, 页面更新就会闪屏

其它
看网上很多绘制复杂页面的 canvas 都有闪屏问题
最终的解决方案都是 使用双缓冲, 使用 画布的canvas 直接复制 缓冲canvas的数据
不知道咱们是不是使用的这个方案呢

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.