主要是字体的效果区别?背景图颜色变得更深一点了?
字体效果区别最明显,颜色用的是#7B3113,字体用的是方正黑体简体。你这么一说,好像背景颜色确实深了一些。这个问题怎么解决呢??
能给个重现的例子吗?
哦,RenderTexture::save()保存生成的图片确实有问题,在程序中渲染就没问题。
可是有黑边……
就是背景是黑色的……实际上需求要的是透明的
不过导出jpg的话,确实字体就没那个问题了,先暂时导出jpg的好了。
如果是这样的话,那么rendertexture应该创建和图片一样大小的图片,而不是整个窗口大小。
OK,我大概明白意思了,谢谢
渲染简单的是没问题的, 如果渲染多个堆叠的带半透明的图片 是会有问题的, 题主发的图, 文字都出现了毛边. 我这里cocos2d-js 3.15.1的版本, 很多问题.
重现步骤
- 创建一个renderTexture
- clear为完全透明
- 画一张背景图
- 在背景图上画几个label
- 把rt加到屏幕上
会发现label变得透明了, 可以透出后面的背景
上面是原始的
下面是renderTexture上的效果
把renderTexture的getSprite() 的blendFunc改成{src = gl.ONE, dst = gl.ZERO}, 字就没问题了, 但是png的透明部分会变成黑色.
望解决一下, 谢谢
对 大概就是这样, 不止文字,如果一张不透明的背景图A,上面有半透明的child图B,渲染A后,A上面B所在的位置也会变得半透明。@minggo 很久没上过论坛了, @wangzhe @leda @dumganhar
意思是我如果要缓存一个面板的话, 就一个个的去遍历所有子对象。然后设置
GL::blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE);
?????
这个问题怎么解决,我在做绘画功能,需要动态修改图片,然后保存图片,然后再使用。也发现这样有黑边、锯齿,怎么办?
这个可以解决渲染结果展示的灰边:
https://github.com/cocos2d/cocos2d-x/pull/19748
// Texture2D 新增一个设置方法
// 设置 rt 内部的 texture 为 true
texture->setPremultipliedAlpha(true);
saveToFile 的解决目前可以参考:
https://github.com/cocos2d/cocos2d-x/issues/18980#issuecomment-410534926
std::unique_ptr<cocos2d::Image> image(cocos2d::utils::captureNode(this));
image->saveToFile(filePath);
这问题后来解决了吗?你是一个个遍历吗?