zoukankan      html  css  js  c++  java
  • Directx11教程(11) 增加一个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;
        }
    其它类似的代码我就不贴了。

    完整的代码请参考:

    工程文件myTutorialD3D11_10

    代码下载:

    https://files.cnblogs.com/mikewolf2002/myTutorialD3D11.zip

  • 相关阅读:
    xss漏洞
    web日志分析(待)
    linux命令学习摘记
    浏览器的MIME映射(程序映射)
    文件上传靶场-Upload-Labs
    目录遍历用字典
    cmd、bat分割单行字符串
    iptables使用
    Spring AOP 学习(五)
    Spring 使用注解注入 学习(四)
  • 原文地址:https://www.cnblogs.com/mikewolf2002/p/2404617.html
Copyright © 2011-2022 走看看