MGD 调试 Lives2d 文字破碎问题 (MX2)
Posted _Captain
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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还是不太熟悉,所以就直接看文字纹理了。
以上是关于MGD 调试 Lives2d 文字破碎问题 (MX2)的主要内容,如果未能解决你的问题,请参考以下文章
QT Creator 无法在 i.Mx6 (buildroot) 上远程运行和调试
Dreamweaver MX 2004中文字的位置如何设置?