• dx11 入门 Tutorial 05: DepthBuffer的创建 DirectXSampleBrowser(June 2010)


    本课主要是矩阵变换和DepthBuffer的创建;

    笔记:关于depthBuffer

    问题:1.depthBuffer的作用?

            2.怎么创建?

            作用:我想到的:1.depthTest,保证遮挡,同一个pixel中z值小的渲染;  2.三维世界,需要z值来表示近大远小  3.dx中值在1到0之间

                    MSDN的解释:1.depthBuffer存储每个pixel的z值,也可以存储stencil值,常用32bit,24bit用于depth数据 8bit用于stencil数据

                                        2.当一个pixel渲染后,里面保存color值和depth值,如果一个pixel进行二次render(比如物体遮挡overlap),需要进行depthTest,最终决定绘制结果

             怎么创建:The following code in the sample creates a depth buffer (a DepthStencil texture). It also creates a DepthStencilView of the depth buffer so that Direct3D 11 knows to use it as a Depth Stencil texture.

                        首先先用device创建一块buffer,先申请一块ID3D11Texture2D,在填充相应的数据信息,绑定到texture2D上:    

    hr = g_pd3dDevice->CreateTexture2D( &descDepth, NULL,&g_pDepthStencil );//申请g_pDepthStencil一块buffer,绑定DESC相应信息 

                     但现在dx不知道这块buffer干嘛用的

                         所以device创建DepthStencilView并绑定g_pDepthStencil 告诉dx这用来作为depth和stencil存储

       

    下面context设置后台buffer里的 color和depth:

       g_pImmediateContext->OMSetRenderTargets( 1, &g_pRenderTargetView, g_pDepthStencilView );
    

     记住每帧要先进行clear,以保证上帧的数据不影响现在的render

                       

               

  • 相关阅读:
    【JavaScript】出现即使设置了ID也获取不到的可能原因与window.onload
    雄踞AppStore榜首的游戏<别踩到白块儿>源码分析和下载(一)
    WordPress公布新文章Email通知注冊用户
    BZOJ 1861 ZJOI2006 Book 书架 Splay
    Oracle Outline总结
    Matplot中文乱码完美解决方式
    Linux 在一个命令行上执行多个命令
    tophat
    echo输出到stderr
    随机森林
  • 原文地址:https://www.cnblogs.com/dust-fly/p/4231366.html
Copyright © 2020-2023  润新知