CocosStudio合图自动拆切有bug
勾选自动拆切,可能有奇数图,导致渲染出来是胡的。
勾选自动拆切,可能有奇数图,导致渲染出来是胡的。
错误信息
validateFunctionArguments:3577: failed assertion `Fragment Function(xlatMtlMain2): missing sampler binding at index 1 for _mtlsmp_u_texture1[0].'
原因是shader使用了第二张纹理,但是精灵没有设置这张纹理,
片段着色器代码如下:
uniform sampler2D u_texture1;
解决办法,无论是否用到了u_texture1,都需要设置一次。
shader在intel核显驱动中,glLinkProgram相当耗时,和独显性能差距巨大。
并且自定义shader的对象是无法自动合批渲染的。需要控制使用范围。
光图参数
cc.blendFunc(cc.backendBlendFactor.SRC_COLOR, cc.backendBlendFactor.DST_ALPHA)
Component 挂事件监听不遵循传播规则,总可以收到监听,透明区域的点击判断需要一个单独的透明图形来挂监听器。
GList不能挂事件监听,不然GList滚动行为不正常。
测试稳定后发布到http://www.cocos2d-lua.org。
在4.0.0发布以来,进过了大量的改进。FairyGUI的支持上踩了大量的坑:绑定补全、hitTest、富文本的支持、window的事件封装等等。Spine的3.8运行时也有大量的改进,进行了同步。新加了Linux的支持个测试,修正了一些问题,但还遗留了EditBox这个已知坑点。加入了AsyncTCP,文档后补吧。TiledMap继续进行功能支持改进。
在加载ttc字体时,某些fontsize下,FT_Load_Char出来的位图格式是FT_PIXEL_MODE_MONO,导致渲染不正常,暂时未找解决方案。
_fontRef->glyph->bitmap.pixel_mode
GList的setVirtualAndLoop之后,顺序有问题,可如下修正。但是循环滚动位置错乱的问题没有定位到原因。
void GList::removeChildrenToPool(int beginIndex, int endIndex)
{
if (endIndex < 0 || endIndex >= _children.size())
endIndex = (int)_children.size() - 1;
#if 1
// fix item order: returnToPool() use push, and getObject() use pop, the order will broken
for (int i = endIndex; i >= beginIndex; --i)
removeChildToPoolAt(i);
#else
// backup old codes
for (int i = beginIndex; i <= endIndex; ++i)
removeChildToPoolAt(beginIndex);
#endif
}
display.newSprite("hideback.png"):addTo(self):center()
local render = cc.RenderTexture:create(display.width, display.height):center():addTo(self)
local sp = cc.Sprite:create("HelloWorld.png"):center()
render:begin()
sp:visit()
render:endToLua()
local circle = display.newSolidCircle(20,{color = cc.c4f(0.5, 0.5, 0.5, 0)})
circle:retain()
circle:setBlendFunc(cc.blendFunc(cc.backendBlendFactor.SRC_ALPHA, cc.backendBlendFactor.ZERO))
self:addNodeEventListener(cc.NODE_TOUCH_EVENT,function ( event )
if event.name == "began" then
return true
end
if event.name == "moved" then
circle:pos(event.x,event.y)
render:begin()
circle:visit()
render:endToLua()
end
end)
self:setTouchEnabled(true)