关于CocosCreator里的engine和cocos2d-x-lite

最近在研究shader时有了疑问。creator官方git里有engine和cocos2d-x-lite两个文件夹。
在engine里engine/cocos2d/shaders目录下有CCGLProgram.js。而cocos2d-x-lite/cocos/renderer目录下有名字一样的c++文件(CCGLProgram.h和CCGLProgram.cpp)。第一处疑问,这两者之间有什么联系与区别?

cocos2d-x-lite的CCGLProgram.cpp中addAttribute方法被删除,并在link函数中进行了顶点相关属性的绑定。engine的CCGLProgram.js中还有addAttribute方法,需要手动“添加”顶点属性。

在进行shader的书写时,我所搜到的例子都先判断了cc.sys.isNative,如果为假就判断是运行在浏览器上,就调用addAttribute方法,反之,则不会调用。第二处疑问,那是不是可以说用模拟器时调用的是cocos2d-x-lite里的代码,运行在浏览器端调用不到cocos2d-x-lite里的代码?

抱歉,我是新手,可能上述的表述会有术语上的不准确。
麻烦前辈们指点迷津,给个提示也好,谢谢。

我觉得可能我是某个基础性的概念不懂,能否恳请前辈给个方向性的提示,谢谢。

我的理解:

cocos2d-x-lite 是为适应 creator 的 cocos2d-x 的迷你变形

目前 creator 里面的 shader ,creator 里面最先调用中间层 CCGLProgram.js (
然后它再根据运行环境调用具体的渲染方式。

  • web 调用 webgl 渲染(CCGLProgram.js --> webgl )

  • 原生调用 opengl 渲染 (CCGLProgram.js --> JSB --> CCGLProgram.cpp --> opengl )

(具体实现还有一些骇客的方式)

如果你想在编辑器下即时显示 shader 效果,你必须把 webgl 环境下的书写规范好
(比如如何传值,传纹理,片段着色器值类型转换,顶点着色器还要重写?)

同时在 cc.Class 添加

editor: {
        executeInEditMode: true
        //允许当前组件在编辑器模式下运行。
},

编辑器环境可以理解一个静止 web 画面。

建议等官方规范好接口再开始学习(目前光是要往片段着色器传个值也要好几行代码)。
另外网络上的资料十分匮乏,你得去看 cocos2d-x 的书。

以上表述仅供参考。

(creator shader 的具体实现需要官方解答,或者得问当初在 creator 上首发 shader 的人)

感谢你的回复和建议。
也就是说,官方可能会在之后对shader进行规范。