MGD 调试 Lives2d 文字破碎问题 (MX2)

今天把FreeType加入到Lives2D中,在Win上表现正常,但是在Android上面,文字一闪而过,然后就糊掉了,猜测是Texture被损坏,于是计划用MGD来调试GLES查看具体问题。


MGD需要Root手机,我手里的是魅族MX2,魅族的Flyme 首先需要在设置的个人中心里面开放权限,然后再安装KingRoot完全开启Root权限,其它Root软件是不行的。


然后电脑连接手机,在MGD中安装MGD Android App 和 Root Interceptor。



 安装好之后,双击设备,就可以开始监听了。

转自http://blog.csdn.net/huutu http://www.liveslives.com

在手机上打开MGD,设置里面选择监听所有应用,然后在列表中打开应用。

电脑上的MGD就开始收集ES的渲染信息。


在左侧帧列表选择一帧,右侧就可以看到详细的DrawCall调用。


来看看问题。

Lives2d 使用FreeType来生成文字纹理,在Win上面一切安好。文字能正常 显示。


在MX2上表现为文字破碎



在MGD中,显示第3帧的时候,才有字体纹理,并且纹理上只有Ag 2个字母。转自http://blog.csdn.net/huutu http://www.liveslives.com


为什么界面上显示有好多字母,但是实际上这一帧的纹理却只有Ag 2个字母呢?


在我的代码中,对 label_name 先生成纹理,然后绘制。然后对 label_Age 生成纹理,再绘制。

在生成纹理的操作中,会先检测当前字符是否已经生成过纹理,如果生成过,就直接返回UV。


按照上面的测试,反映出来的是对 label_Age生成纹理的操作中,把label_name对应的纹理 删掉了。


然后再看第4帧。


第四帧的时候,字体纹理没有了。


可见代码中的错误,导致下一帧会清空上一帧生成的 字体纹理。


原因是这样的,在绘制文字之前,我又调用了一次glTexImage2D,生成了新的Texture,覆盖了生成好的文字Texture。是复制代码的时候,直接粘帖过来,导致了问题。


删除这句代码后,Android上也可以正常显示了。



详情请看我在Github上的Commit:

https://github.com/ThisisGame/Lives2D/commit/951dc800ceb6c10720da7eceac223f2741f5ec74#diff-3a1dd030e46b971c7eda6511eea59bd4


MGD功能强大,这次的文字破碎问题直接看GL Function调用应该也能看出来,不过我对MGD和GL还是不太熟悉,所以就直接看文字纹理了。

猜你喜欢

转载自blog.csdn.net/cp790621656/article/details/78307712