16384 65535 TMX 渲染 部分 不显示 显示不全
好大一个坑,但解决办法却很简单。
表现:瓦片超过16384个(65536个点)个, 后面的无论是全部还是局部均无法显示。整个矩形瓦片矩阵 从下方开始,部分无法显示。
原因:cocos2d::TMXLayer (或cocos2d::experimental::TMXLayer)中, ogl渲染时VerterxBuffer没问题,IndexBuffer使用的索引值indices均为Glshort类型 (可能最初觉得不可能最多渲染这么多,为了节省一点点缓存)。 Glushort上限65536个,也就是说无论vertexBuffer如何折腾,后面的点索引都无法指得到。
解决办法:cocos2d::TMXLayer (或cocos2d::experimental::TMXLayer) 类:
成员变量 std::vector _indices; 改为 std::vector _indices;
函数 updateIndexBuffer 中 IndexBuffer::IndexType::INDEX_TYPE_SHORT_16 改为 IndexBuffer::IndexType::INDEX_TYPE_UINT_32
