如何对动画Armature变成灰色 shader使用

 我来答
岂不思
2016-01-29 · 知道合伙人教育行家
岂不思
知道合伙人教育行家
采纳数:2004 获赞数:45382
在校参与征文比赛,获市奖 获上海文学发展基金会发起的“品读25部经典”大赛入围奖

向TA提问 私信TA
展开全部
1、用push2Draw(Node* node); 方法将待绘制的节点添加到sRenderChild中等待处理。
2、参考 RenderTexture 的实现,也利用 begin,end将需要绘制的节点利用visit访问添加到当前的 RenderShader 类所在的render层中进行绘制。
3、在实际绘制过程中调用的 onBegin 中缓存对应的坐标系,同时绑定并创建的FBO使得visit进来的节点可以 绘制到当前FBO 中。然后在 onEnd 中调用 render方法 将我们的FBO内容 绘制 原来cocos2dx底层的FBO上。
4、在 render() 实现如何绘制当前FBO的内容到cocos2dx的FBO上。(实际shader作业的地方)
约定20125
2015-06-29 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.1万
采纳率:96%
帮助的人:2940万
展开全部
bone:getDisplayRenderNode()是指骨骼当前的图片,但是有的骨骼在不同的动作中可能不是同一图片,需要改用bone->getDisplayManager()->getDecorativeDisplayList();
但是lua里这个接口取出来是空的,所以我直接试了C++的接口代码如下(但是最终效果还是有点问题,有些帧会重叠,我也查不出问题在哪里了,如果你能完美解决请务必告诉我)

cocostudio::Bone * bone=(cocostudio::Bone *)tolua_tousertype(L,1,0);
int state = lua_tointeger(L,2);

GLProgramState *glState = getGLstate(state);
if (glState)
{
auto ls=bone->getDisplayManager()->getDecorativeDisplayList();
for (int i=0;i<ls.size();i++)
{
auto e=ls.at(i);
auto disnode=e->getDisplay();
if (disnode)
{
disnode->setGLProgramState(glState);
}
}
return 1;
}
return 0;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
遇萌1989
2016-01-08 · 知道合伙人软件行家
遇萌1989
知道合伙人软件行家
采纳数:637 获赞数:2219
深圳广播电视大学电子商务专业在读,曾在从事过三年系统推广和系统规划的工作,现任恒新国仪电子商务专员。

向TA提问 私信TA
展开全部
bone:getDisplayRenderNode()是指骨骼当前的图片,但是有的骨骼在不同的动作中可能不是同一图片,需要改用bone->getDisplayManager()->getDecorativeDisplayList();
但是lua里这个接口取出来是空的,所以我直接试了C++的接口代码如下(但是最终效果还是有点问题,有些帧会重叠,我也查不出问题在哪里了,如果你能完美解决请务必告诉我)

cocostudio::Bone * bone=(cocostudio::Bone *)tolua_tousertype(L,1,0);
int state = lua_tointeger(L,2);

GLProgramState *glState = getGLstate(state);
if (glState)
{
auto ls=bone->getDisplayManager()->getDecorativeDisplayList();
for (int i=0;i<ls.size();i++)
{
auto e=ls.at(i);
auto disnode=e->getDisplay();
if (disnode)
{
disnode->setGLProgramState(glState);
}
}
return 1;
}
return 0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
木一秋恒
2015-12-20 · TA获得超过293个赞
知道答主
回答量:161
采纳率:50%
帮助的人:33.7万
展开全部
  bone:getDisplayRenderNode()是指骨骼当前的图片,但是有的骨骼在不同的动作中可能不是同一图片,需要改用bone->getDisplayManager()->getDecorativeDisplayList();
  但是lua里这个接口取出来是空的,所以我直接试了C++的接口代码如下(但是最终效果还是有点问题,有些帧会重叠,我也查不出问题在哪里了,如果你能完美解决请务必告诉我)

  1.cocostudio::Bone * bone=(cocostudio::Bone *)tolua_tousertype(L,1,0);
  int state = lua_tointeger(L,2);

  2. GLProgramState *glState = getGLstate(state);
  if (glState)
  {
  3. auto ls=bone->getDisplayManager()->getDecorativeDisplayList();
  for (int i=0;i<ls.size();i++)
  {
  4. auto e=ls.at(i);
  auto disnode=e->getDisplay();
  if (disnode)
  {
  5. disnode->setGLProgramState(glState);
  }
  }
  6. return 1;
  }
  7. return 0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式