Molehill 2D 研究2

搁置了半个月的Molehill2D研究重新开始,是因为今天在研究3D的时候发现之前的有一个做法是有问题的。

而明白这个问题之后之前StarM2D效率比位图渲染方式还要低的情况就真相大白了。

 

 

context3D.setVertexBufferAt(0, vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_3);

context3D.setVertexBufferAt(1, vertexBuffer, 3, Context3DVertexBufferFormat.FLOAT_2);

 

context3D.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, matrix, true);

 

重点简而言之如下:

之前的做法是每次render都执行一次 vertexBuffer.uploadFromVector(vertices, 0, 4);

vertices是根据坐标进行计算所得,目前看来这种做法的问题就是实际显示的顶点坐标还是由cpu运算所得,所以效率很低。

现在的做法是,vertexBuffer是保存起来的,一般只在第一遍创建之后执行一次 vertexBuffer.uploadFromVector(vertices, 0, 4);

所有的坐标变换都用一个对应的matrix去处理,所以render时只要传入保存下来的vertexBuffer和对应的matrix即可。

 

看看变态的效率:

 

25*25 = 625帧动画同时显示

625*2 = 1250个三角形同时显示

帧频稳定的30帧左右

 

远超之前所做的位图渲染方式的效率

 

看到这样的效率,继续StarM2D的想法瞬间爆发

接下来就是沿着位图渲染引擎的老路,逐渐把其他一些功能实现

 

从各方面考量,Molehill2D引擎的开发比Molehill3D引擎的开发简单很多,时间上也会少非常多。

所以六月份先搁置Molehill3D的研究,以实现一个基本功能比较完善的Molehill2D引擎为目标!

你可能感兴趣的:(Molehill研究,matrix,引擎)