当场景内有Sprite3D时,用RenderTexture对场景截屏时显示有问题

模型显示完全错乱了,怎么解决呐:883:

能把代码和截图传上来看看吗?只是描述没法解决呀。

— Begin quote from ____

引用第1楼songmiao于2015-01-04 17:07发表的 :
能把代码和截图传上来看看吗?只是描述没法解决呀。 http://www.cocoachina.com/bbs/job.php?action=topost&tid=279914&pid=1212839

— End quote

    local size = cc.Director:getInstance():getWinSize()
    local texture = cc.RenderTexture:create(size.width, size.height)
    texture:retain()
    texture:begin()
    currentScene:visit()
    texture:end()

原模型

截图后

:6:顶起来

captureScreen已经绑了Lua。

从截图看应该是把DepthTest关闭了导致3d模型渲染不正确。

— Begin quote from ____

引用第4楼偶尔e网事于2015-01-06 11:58发表的 回 3楼(getovermvp) 的帖子 :
captureScreen已经绑了Lua。 http://www.cocoachina.com/bbs/job.php?action=topost&tid=279914&pid=1214584

— End quote

我不想截图保存,只截图,不保存,保存之后再读取出来太慢啦

— Begin quote from ____

引用第5楼songmiao于2015-01-06 17:29发表的 回 2楼(getovermvp) 的帖子 :
从截图看应该是把DepthTest关闭了导致3d模型渲染不正确。 http://www.cocoachina.com/bbs/job.php?action=topost&tid=279914&pid=1214975

— End quote

要怎么开启呢?
试了一下cc.Director:getInstance():setDepthTest(true),还是和之前一样

local texture = cc.RenderTexture:create(size.width, size.height)
创建一个有深度的rendertexture

楼主你好,我遇到了和你同样的问题,请问你这个问题解决了没有?

楼主你好,我遇到的问题是整个3D场景都截出不来,只能截出2D的布景。

我也遇到了和楼主一样的问题,研究了很久无解,一开始3d模型都渲染不出来,问题原因在于RenderTexture内部的渲染命令是在2d命令队列中,而Sprite3d的渲染命令是在3d命令中,我的解决方法是修改RenderTexture的渲染命令为3d命令,并且把_isTransparent设置成false( 防止命令被忽略),然后渲染出来的结果是视觉上看起来缺少深度测试,我用opengl api检查了3d模型渲染前的深度测试开关和深度mask,都没有发现异常,请问楼主现在解决了吗?

终于解决了,问题本质不是深度方面的问题,我试过关闭深度测试进行渲染,得到的结果是不一样的。
原因和解决方案见我在cocos2d-x论坛上发起的提问:
http://discuss.cocos2d-x.org/t/failed-to-render-sprite3d-to-rendertexture/25870

1赞

3.15 中解决了这个。

测试 RenderTextureWithSprite3DIssue16894

但是一个3d 的动画依然不能渲染到纹理~

3d动画是可以渲染到RenderTexture的;测试用例中不能动起来是因为没有吧模型add到父节点;没有update驱动不能做动画