• 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

  • 相关阅读:
    JS闭包
    webpack管理资源
    在webpack中使用配置文件
    webpack起步
    buuctf-MISC 面具下的flag
    Kali linux Steghide开源隐写工具
    buuctf-misc 九连环
    buuctf-Crypto rsarsa 1
    buuctf-web HardSQL 1
    buuctf-web Hack World 1
  • 原文地址:https://www.cnblogs.com/mikewolf2002/p/2404617.html
Copyright © 2020-2023  润新知