Progress of new backend API

Progress of new backend API



  • implement some basic feature of metal backend
  • can run the project, but nothing is drawn, i found the vertex data is correct, don’t know why

If somebody is metal expert, please help to fix it too.



the first metal test case can run, it is because i don’t set window width and height, then the view port size is 0. Currently, i just write metal shader by hand, not translate it to metal shader in runtime. It can polish the API more quickly.

IOS and openGL?


GLSL shader works on metal backend. We are using glsl-optimizer to translate GLSL shader to metal shader. glsl-optimizer doesn’t translate GLSL builtin functions, we are fixing it.


Update: texture is supported in metal backend, texture array currently is not supported. And i created an issue to trace the progress of GLSL builtin functions supporting.


I think this is a standalone project which should not depend on cocos2d-x.
It’s cocos2d-x uses this module instead.
So autorelease stuff may not be in this project.


It seems that this design doesn’t consider multi-thread usage.
There isn’t any concept of Fence, Event, Semaphore.


@dumganhar it is part of cocos2d-x. For convenient, i use a separate repo when developing. I learned from mac and fixed it:

  • createXXX return an autoreleased object
  • newXXX return a not autoreleased object

Yep, multiple thread concept is not included now. I don’t know if it is needed, the first purpose is to support metal, and we can optimize it if it is needed.


Update: blending is supported on metal, and the API is simplified a bit. I will add more test case for it.