cocos2dx面试总结

1.安卓和ios纹理压缩

  安卓:etc 部分pvrtc

  ios : pvrtc

2.etc1 和 etc2的区别 

ect2相对于etc1 有更高的压缩比和展现,需要设备支持OpenGL es 3.0 ,目前大部分手机只支持OpenGLes2.0

3.etc纹理不支持alpha通道,需要进行拼图,只支持1024x1024以内的


4.cocos3.0什么样的渲染命令可以合并

3.0之后绘制:从主循环分离,图元拼接阶段丢掉不用渲染的,自动批处理绘制,更简单的自定义绘制

渲染过程:生成命令->放入栈:如果相邻使用相同纹理、着色器->自动批绘制,命令排序:先按globalOrder再按ui遍历顺序,命令执行->自动批绘制

相邻相同纹理的使用自动批绘制

5.openGL渲染管线

记忆:片渲染,顶点着色,图元装配,光栅化,绘制

渲染管线:定点数组-》定点着色器-》图元装配-》光栅化-》片段着色器-》片段操作-》帧缓冲。

可操作部分

OpenGL es 版本:1.0固定管线,2.0可编程管线,3.0对2.0进行优化修改了固定参数为可传入参数

6.jpg和png的区别

7.监测内存

3.0版本使用getCachedTextureInfo() 获取纹理内存信息,也可以打印ui树的方式查未释放内存

8.openGL drawcall 次数

默认调用一次glDraw函数一次drawcall,这样 绘制三个点可以用glDrawArrays,传入三个顶点的数组,同理,绘制n个不重复数组可以使用索引模式GL_TRIANGLE_FAN只有一次drawcall, 有重复点则不能用索引模式,需要多次

9.cocos2d中 OpenGL渲染过程

cocos2.0版本在draw函数中进行绘制,3.0版本在draw函数中生成绘制命令,

整个流程:

director->drawScence() => node->visit()=>node->draw() =>render->addCommand()=>command->sort()

cocos2dx面试总结