cc.RenderTexture 原生环境调用 updateSize 报错?

  • Creator 版本: v2.4.0 v2.4.3

  • 目标平台: 非网页 ( Mac Android iOS 原生皆有问题 )

  • 之前哪个版本是正常的:未测试

  • 重现概率: 100%

  • 重现方式:如下

随便新建一个项目,加入如下代码即可 (官方例子 capture_to_native.js 也会错,只要调用 updateSize ) :

let texture = new cc.RenderTexture();
texture.initWithSize(cc.visibleRect.width, cc.visibleRect.height, cc.gfx.RB_FMT_S8);
texture.updateSize(100, 100);

报错信息:

Uncaught Exception:
 - location :  (see stack)
 - msg : Uncaught TypeError: i.update is not a function
 - detail : 
      [0]updateSize@src/cocos2d-jsb.4dd72.js:18362
[1]onLoad@assets/main/index.5a3ad.js:43
[2]eval@(no filename):3
[3]anonymous@src/cocos2d-jsb.4dd72.js:21366
[4]invoke@src/cocos2d-jsb.4dd72.js:21329
[5]activateNode@src/cocos2d-jsb.4dd72.js:31525
[6]_activate@src/cocos2d-jsb.4dd72.js:14640
[7]runSceneImmediate@src/cocos2d-jsb.4dd72.js:12578
[8]anonymous@main.js:70
[9]anonymous@src/cocos2d-jsb.4dd72.js:15469
[10]anonymous@src/cocos2d-jsb.4dd72.js:37542
[11]fireTimeout@jsb-adapter/jsb-builtin.js:2191
[12]tick@jsb-adapter/jsb-builtin.js:2148

简单跟了一下,报错地方在 rbo.update :

然后简单试着打印了一下 :

输出为 false ,确实没有这个函数。

具体没有深入去看,请官方看看这个是不是有 bug ?

看起来是不支持updateSize的,要么initWithSize的时候就确定宽高,要么不带模板测试的参数。
cocos2dx里面的RenderBuffer是没有update的,要照着修改cocos2dx里的代码,glRenderbufferStorage重新设置宽高才能用。

2D版本不知道,但在Cocos Creator 3D 1.2中,有resize函数可以用。