• 热门专题

Directx11教程(11) 增加一个debug宏

作者:迈克老狼2012  发布日期:2012-03-21 21:03:35
Tag标签:Directx11  debug宏  
  • 现在我们在common.h中增加一个debug的宏,在每个d3d11函数后调用,如果d3d函数出错,它能够给出程序中错误的代码行数。

    common.h代码如下:

     

    #pragma once
    
    #include <d3d11.h> 
    #include <d3dx10math.h>
    
    #if defined(DEBUG) || defined(_DEBUG) 
    #ifndef D3D_DEBUG_INFO 
    #define D3D_DEBUG_INFO 
    #endif 
    #endif
    
    #if defined(DEBUG) || defined(_DEBUG) 
    #define _CRTDBG_MAP_ALLOC 
    #include <crtdbg.h> 
    #endif
    
    #include <dxerr.h> 
    #include <cassert>
    
    //一个简单的错误检测宏
    
    #if defined(DEBUG) | defined(_DEBUG) 
        #ifndef HR 
        #define HR(x)                                              \ 
        {                                                          \ 
            HRESULT hr = (x);                                      \ 
            if(FAILED(hr))                                         \ 
            {                                                      \ 
                DXTrace(__FILE__, (DWORD)__LINE__, hr, L#x, true); \ 
            }                                                      \ 
        } 
        #endif
    
    #else 
        #ifndef HR 
        #define HR(x) (x) 
        #endif 
    #endif 
    
    //定义一些常用颜色 
    const D3DXVECTOR4 WHITE(1.0f, 1.0f, 1.0f, 1.0f); 
    const D3DXVECTOR4 BLACK(0.0f, 0.0f, 0.0f, 1.0f); 
    const D3DXVECTOR4 RED(1.0f, 0.0f, 0.0f, 1.0f); 
    const D3DXVECTOR4 GREEN(0.0f, 1.0f, 0.0f, 1.0f); 
    const D3DXVECTOR4 BLUE(0.0f, 0.0f, 1.0f, 1.0f); 
    const D3DXVECTOR4 YELLOW(1.0f, 1.0f, 0.0f, 1.0f); 
    const D3DXVECTOR4 CYAN(0.0f, 1.0f, 1.0f, 1.0f); //蓝绿色 
    const D3DXVECTOR4 MAGENTA(1.0f, 0.0f, 1.0f, 1.0f);//洋红色
    
    const D3DXVECTOR4 BEACH_SAND(1.0f, 0.96f, 0.62f, 1.0f); 
    const D3DXVECTOR4 LIGHT_YELLOW_GREEN(0.48f, 0.77f, 0.46f, 1.0f); 
    const D3DXVECTOR4 DARK_YELLOW_GREEN(0.1f, 0.48f, 0.19f, 1.0f); 
    const D3DXVECTOR4 DARKBROWN(0.45f, 0.39f, 0.34f, 1.0f);
    
    

    现在我们修改每一个D3D11函数的调用,比如

     

    // 创建交换链,设备以及设备上下文. 
    result = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL,createDeviceFlags, &featureLevel, 1, 
        D3D11_SDK_VERSION, &swapChainDesc, &m_swapChain, &m_device, NULL, &m_deviceContext); 
    if(FAILED(result)) 
        { 
        HR(result); 
        return false; 
        } 
    

    其它类似的代码我就不贴了。
About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规