⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xd3dutil.cpp

📁 MFC+D3D编程:在MFC单文档界面下使用D3D9.0进行编程
💻 CPP
字号:
#include "stdafx.h"
#include "XD3DUtil.h"

// color bits in a D3D format

UINT RGBBITS(D3DFORMAT fmt)
{
    switch (fmt)
    {
    case D3DFMT_A2B10G10R10:	return 10;
    case D3DFMT_A2R10G10B10:	return 10;    
	case D3DFMT_R8G8B8:			return 8;
    case D3DFMT_A8R8G8B8:		return 8;
    case D3DFMT_X8R8G8B8:		return 8;
	case D3DFMT_R5G6B5:			return 5;
    case D3DFMT_X1R5G5B5:		return 5;
    case D3DFMT_A1R5G5B5:		return 5;
	case D3DFMT_A4R4G4B4:		return 4;
    case D3DFMT_X4R4G4B4:		return 4;
	case D3DFMT_R3G3B2:			return 2;
    case D3DFMT_A8R3G3B2:		return 2;
	default:					return 0;
    }
}

// alpha bits in a D3D format

UINT ALPHABITS(D3DFORMAT fmt)
{
    switch (fmt)
    {
    case D3DFMT_A8R8G8B8:		return 8;
    case D3DFMT_A8R3G3B2:		return 8;
    case D3DFMT_A4R4G4B4:		return 4;    
	case D3DFMT_A2B10G10R10:	return 2;
    case D3DFMT_A2R10G10B10:	return 2;
	case D3DFMT_A1R5G5B5:		return 1;
	case D3DFMT_X8R8G8B8:		return 0;
    case D3DFMT_X4R4G4B4:		return 0;
    case D3DFMT_X1R5G5B5:		return 0;
    case D3DFMT_R8G8B8:			return 0;
    case D3DFMT_R5G6B5:			return 0;
    case D3DFMT_R3G3B2:			return 0;
    default:					return 0;
    }
}

// depth bits in a D3D format

UINT DEPTHBITS(D3DFORMAT fmt)
{
    switch (fmt)
    {
    case D3DFMT_D32:		return 32;
    case D3DFMT_D24X8:		return 24;
    case D3DFMT_D24S8:		return 24;
    case D3DFMT_D24X4S4:	return 24;
    case D3DFMT_D16:		return 16;
    case D3DFMT_D15S1:		return 15;
    default:				return 0;
    }
}

// stencil bits in a D3D format

UINT STENCILBITS(D3DFORMAT fmt)
{
    switch (fmt)
    {
    case D3DFMT_D24S8:		return 8;
    case D3DFMT_D24X4S4:	return 4;
    case D3DFMT_D15S1:		return 1;
    case D3DFMT_D16:		return 0;
    case D3DFMT_D24X8:		return 0;
    case D3DFMT_D32:		return 0;
    default:				return 0;
    }
}

// VP type to string UNUSED

TCHAR* VPTYPESTRING(VPTYPE vpt)
{
	switch (vpt)
	{
	case SOFT_VP: return TEXT("SOFTWARE_VP");
	case MIXD_VP: return TEXT("MIXED_VP");
	case HARD_VP: return TEXT("HARDWARE_VP");
	case PURE_VP: return TEXT("PURE_HARDWARE_VP");
	default:	  return TEXT("Unknown VP Type");
	}
}

// D3D device type to string, with optional prefix removal

TCHAR* DEVICETYPESTRING(D3DDEVTYPE dt, bool bPrefix)
{
    TCHAR* pRet = NULL;

    switch (dt)
    {
    case D3DDEVTYPE_HAL: pRet = TEXT("D3DDEVTYPE_HAL"); break;
    case D3DDEVTYPE_SW:  pRet = TEXT("D3DDEVTYPE_SOF"); break;
    case D3DDEVTYPE_REF: pRet = TEXT("D3DDEVTYPE_REF"); break;
    default:             pRet = TEXT("Unknown Device Type"); break;
    }

	if (bPrefix || _tcsstr(pRet, TEXT("D3DDEVTYPE_")) == NULL)
		return pRet;

	return pRet + lstrlen(TEXT("D3DDEVTYPE_"));
}

// Multisample type to string converter, with optional prefix removal

TCHAR* MULTISAMPLESTRING(D3DMULTISAMPLE_TYPE mst, bool bPrefix)
{
    TCHAR* pRet = NULL;

	// notice we'll skip the D3DMULTISAMPLE_NONE case
    switch (mst)
    {
    case D3DMULTISAMPLE_NONMASKABLE:	pRet = TEXT("D3DMULTISAMPLE_NONMASKABLE"); break;
    case D3DMULTISAMPLE_2_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_2_SAMPLES");   break;
    case D3DMULTISAMPLE_3_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_3_SAMPLES");   break;
    case D3DMULTISAMPLE_4_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_4_SAMPLES");   break;
    case D3DMULTISAMPLE_5_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_5_SAMPLES");   break;
    case D3DMULTISAMPLE_6_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_6_SAMPLES");   break;
    case D3DMULTISAMPLE_7_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_7_SAMPLES");   break;
    case D3DMULTISAMPLE_8_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_8_SAMPLES");   break;
    case D3DMULTISAMPLE_9_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_9_SAMPLES");   break;
    case D3DMULTISAMPLE_10_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_10_SAMPLES");  break;
    case D3DMULTISAMPLE_11_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_11_SAMPLES");  break;
    case D3DMULTISAMPLE_12_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_12_SAMPLES");  break;
    case D3DMULTISAMPLE_13_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_13_SAMPLES");  break;
    case D3DMULTISAMPLE_14_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_14_SAMPLES");  break;
    case D3DMULTISAMPLE_15_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_15_SAMPLES");  break;
    case D3DMULTISAMPLE_16_SAMPLES:		pRet = TEXT("D3DMULTISAMPLE_16_SAMPLES");  break;
    default:							pRet = TEXT("");
    }

	if (bPrefix || _tcsstr(pRet, TEXT("D3DMULTISAMPLE_")) == NULL)
		return pRet;

	return pRet + lstrlen(TEXT("D3DMULTISAMPLE_"));
}

// Presentation interval to string, with optional prefix removal

TCHAR* PRESENTINTERVALSTRING(UINT pi, bool bPrefix)
{
    TCHAR* pRet = NULL;

    switch(pi)
    {
    case D3DPRESENT_INTERVAL_IMMEDIATE: pRet = TEXT("D3DPRESENT_INTERVAL_IMMEDIATE"); break;
    case D3DPRESENT_INTERVAL_DEFAULT:   pRet = TEXT("D3DPRESENT_INTERVAL_DEFAULT"); break;
    case D3DPRESENT_INTERVAL_ONE:       pRet = TEXT("D3DPRESENT_INTERVAL_ONE"); break;
    case D3DPRESENT_INTERVAL_TWO:       pRet = TEXT("D3DPRESENT_INTERVAL_TWO"); break;
    case D3DPRESENT_INTERVAL_THREE:     pRet = TEXT("D3DPRESENT_INTERVAL_THREE"); break;
    case D3DPRESENT_INTERVAL_FOUR:      pRet = TEXT("D3DPRESENT_INTERVAL_FOUR"); break;
    default:                            pRet = TEXT("Unknown Present Interval"); break;
    }

	if (bPrefix || _tcsstr(pRet, TEXT("D3DPRESENT_INTERVAL_")) == NULL)
		return pRet;

	return pRet + lstrlen(TEXT("D3DPRESENT_INTERVAL_"));
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -