GB学习【9】--渲染流程

GB第9个例子也是最后一个基本例子。

讲了GB的frame render system 和renderTexture

通过重载createframe来加入自己需要的渲染。

m_spScene->GetObjectByName("DisplayScreen")可以得到屏幕当亲的backbuffer.

然后通过得到对应的属性NiTexturingProperty* pkTexturing = (NiTexturingProperty*)
        m_spDisplayScreen->GetProperty(NiProperty::TEXTURING)

来替换当前渲染的对象。

渲染对象可以通过NiRenderedTexture::Create这个静态函数创建。然后按照前一章说过的SetbaseTexture()设置我们的渲染对象。应用模式设置为替换就可以了。

创建一个Ni3DRenderView 用来渲染我们想要看到的东西。

pkRenderedTextureRenderView->SetName(m_kRenderedTextureRenderViewName);
    pkRenderedTextureRenderView->AppendScene(m_spScene);

    // Create the rendered texture NiRenderClick.
    NiViewRenderClick* pkRenderedTextureRenderClick = NiNew NiViewRenderClick;
    pkRenderedTextureRenderClick->SetName(m_kRenderedTextureRenderClickName);
    pkRenderedTextureRenderClick->AppendRenderView(
    pkRenderedTextureRenderView);
    pkRenderedTextureRenderClick->SetRenderTargetGroup(m_spRenderTargetGroup);
    pkRenderedTextureRenderClick->SetClearAllBuffers(true);
    pkRenderedTextureRenderClick->SetPreProcessingCallbackFunc(
    RenderedTextureRenderClickPre, this);
    pkRenderedTextureRenderClick->SetPostProcessingCallbackFunc(
    RenderedTextureRenderClickPost, this);

    NiDefaultClickRenderStep* pkMainStep = NiDynamicCast(
    NiDefaultClickRenderStep, m_spFrame->GetRenderStepByName(
    m_kMainRenderStepName));
    NIASSERT(pkMainStep);
    pkMainStep->PrependRenderClick(pkRenderedTextureRenderClick);

可以看出GB的RenderStep有点类似于一个tech可以包含多click(pass)

可以设置一个一个step的回调来出行一些前期后期的处理。很方便。

看起来很玄妙其实也就是fx那套。把渲染分成一组一组的。

最后一个教程弄完发现他的远程原来就是围绕 Niapplication的每一个虚函数重载一次让你知道他的框架怎么运行的。还是比较有意思的。下面要进行高级教程了。不过最近遇到一件心烦的事情,今天都是强写的。不知道以后还有没有机会继续写。希望吧。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值