亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? d3denumeration.cpp

?? VC游戲編程基礎(chǔ)
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//-----------------------------------------------------------------------------
// File: D3DEnumeration.cpp
//
// Desc: Enumerates D3D adapters, devices, modes, etc.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
#include "dxstdafx.h"


//-----------------------------------------------------------------------------
// Name: ColorChannelBits
// Desc: Returns the number of color channel bits in the specified D3DFORMAT
//-----------------------------------------------------------------------------
static UINT ColorChannelBits( D3DFORMAT fmt )
{
    switch( fmt )
    {
        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_R3G3B2:
            return 2;
        case D3DFMT_A8R3G3B2:
            return 2;
        case D3DFMT_X4R4G4B4:
            return 4;
        case D3DFMT_A2B10G10R10:
            return 10;
        case D3DFMT_A2R10G10B10:
            return 10;
        default:
            return 0;
    }
}




//-----------------------------------------------------------------------------
// Name: AlphaChannelBits
// Desc: Returns the number of alpha channel bits in the specified D3DFORMAT
//-----------------------------------------------------------------------------
static UINT AlphaChannelBits( D3DFORMAT fmt )
{
    switch( fmt )
    {
        case D3DFMT_R8G8B8:
            return 0;
        case D3DFMT_A8R8G8B8:
            return 8;
        case D3DFMT_X8R8G8B8:
            return 0;
        case D3DFMT_R5G6B5:
            return 0;
        case D3DFMT_X1R5G5B5:
            return 0;
        case D3DFMT_A1R5G5B5:
            return 1;
        case D3DFMT_A4R4G4B4:
            return 4;
        case D3DFMT_R3G3B2:
            return 0;
        case D3DFMT_A8R3G3B2:
            return 8;
        case D3DFMT_X4R4G4B4:
            return 0;
        case D3DFMT_A2B10G10R10:
            return 2;
        case D3DFMT_A2R10G10B10:
            return 2;
        default:
            return 0;
    }
}




//-----------------------------------------------------------------------------
// Name: DepthBits
// Desc: Returns the number of depth bits in the specified D3DFORMAT
//-----------------------------------------------------------------------------
static UINT DepthBits( D3DFORMAT fmt )
{
    switch( fmt )
    {
        case D3DFMT_D16:
            return 16;
        case D3DFMT_D15S1:
            return 15;
        case D3DFMT_D24X8:
            return 24;
        case D3DFMT_D24S8:
            return 24;
        case D3DFMT_D24X4S4:
            return 24;
        case D3DFMT_D32:
            return 32;
        default:
            return 0;
    }
}




//-----------------------------------------------------------------------------
// Name: StencilBits
// Desc: Returns the number of stencil bits in the specified D3DFORMAT
//-----------------------------------------------------------------------------
static UINT StencilBits( D3DFORMAT fmt )
{
    switch( fmt )
    {
        case D3DFMT_D16:
            return 0;
        case D3DFMT_D15S1:
            return 1;
        case D3DFMT_D24X8:
            return 0;
        case D3DFMT_D24S8:
            return 8;
        case D3DFMT_D24X4S4:
            return 4;
        case D3DFMT_D32:
            return 0;
        default:
            return 0;
    }
}




//-----------------------------------------------------------------------------
// Name: D3DAdapterInfo destructor
// Desc: 
//-----------------------------------------------------------------------------
D3DAdapterInfo::~D3DAdapterInfo( void )
{
    if( pDisplayModeList != NULL )
        delete pDisplayModeList;
    if( pDeviceInfoList != NULL )
    {
        for( UINT idi = 0; idi < pDeviceInfoList->Count(); idi++ )
            delete (D3DDeviceInfo*)pDeviceInfoList->GetPtr(idi);
        delete pDeviceInfoList;
    }
}




//-----------------------------------------------------------------------------
// Name: D3DDeviceInfo destructor
// Desc: 
//-----------------------------------------------------------------------------
D3DDeviceInfo::~D3DDeviceInfo( void )
{
    if( pDeviceComboList != NULL )
    {
        for( UINT idc = 0; idc < pDeviceComboList->Count(); idc++ )
            delete (D3DDeviceCombo*)pDeviceComboList->GetPtr(idc);
        delete pDeviceComboList;
    }
}




//-----------------------------------------------------------------------------
// Name: D3DDeviceCombo destructor
// Desc: 
//-----------------------------------------------------------------------------
D3DDeviceCombo::~D3DDeviceCombo( void )
{
    if( pDepthStencilFormatList != NULL )
        delete pDepthStencilFormatList;
    if( pMultiSampleTypeList != NULL )
        delete pMultiSampleTypeList;
    if( pMultiSampleQualityList != NULL )
        delete pMultiSampleQualityList;
    if( pDSMSConflictList != NULL )
        delete pDSMSConflictList;
    if( pVertexProcessingTypeList != NULL )
        delete pVertexProcessingTypeList;
    if( pPresentIntervalList != NULL )
        delete pPresentIntervalList;
}



//-----------------------------------------------------------------------------
// Name: CD3DEnumeration constructor
// Desc: 
//-----------------------------------------------------------------------------
CD3DEnumeration::CD3DEnumeration()
{
    m_pAdapterInfoList = NULL;
    m_pAllowedAdapterFormatList = NULL;
    AppMinFullscreenWidth = 640;
    AppMinFullscreenHeight = 480;
    AppMinColorChannelBits = 5;
    AppMinAlphaChannelBits = 0;
    AppMinDepthBits = 15;
    AppMinStencilBits = 0;
    AppUsesDepthBuffer = false;
    AppUsesMixedVP = false;
    AppRequiresWindowed = false;
    AppRequiresFullscreen = false;
}




//-----------------------------------------------------------------------------
// Name: CD3DEnumeration destructor
// Desc: 
//-----------------------------------------------------------------------------
CD3DEnumeration::~CD3DEnumeration()
{
    if( m_pAdapterInfoList != NULL )
    {
        for( UINT iai = 0; iai < m_pAdapterInfoList->Count(); iai++ )
            delete (D3DAdapterInfo*)m_pAdapterInfoList->GetPtr(iai);
        delete m_pAdapterInfoList;
    }
    SAFE_DELETE( m_pAllowedAdapterFormatList );
}




//-----------------------------------------------------------------------------
// Name: SortModesCallback
// Desc: Used to sort D3DDISPLAYMODEs
//-----------------------------------------------------------------------------
static int __cdecl SortModesCallback( const void* arg1, const void* arg2 )
{
    D3DDISPLAYMODE* pdm1 = (D3DDISPLAYMODE*)arg1;
    D3DDISPLAYMODE* pdm2 = (D3DDISPLAYMODE*)arg2;

    if (pdm1->Width > pdm2->Width)
        return 1;
    if (pdm1->Width < pdm2->Width)
        return -1;
    if (pdm1->Height > pdm2->Height)
        return 1;
    if (pdm1->Height < pdm2->Height)
        return -1;
    if (pdm1->Format > pdm2->Format)
        return 1;
    if (pdm1->Format < pdm2->Format)
        return -1;
    if (pdm1->RefreshRate > pdm2->RefreshRate)
        return 1;
    if (pdm1->RefreshRate < pdm2->RefreshRate)
        return -1;
    return 0;
}




//-----------------------------------------------------------------------------
// Name: Enumerate
// Desc: Enumerates available D3D adapters, devices, modes, etc.
//-----------------------------------------------------------------------------
HRESULT CD3DEnumeration::Enumerate()
{
    HRESULT hr;
    CArrayList adapterFormatList( AL_VALUE, sizeof(D3DFORMAT) );

    if( m_pD3D == NULL )
        return E_FAIL;

    m_pAdapterInfoList = new CArrayList( AL_REFERENCE );
    if( m_pAdapterInfoList == NULL )
        return E_OUTOFMEMORY;

    m_pAllowedAdapterFormatList = new CArrayList( AL_VALUE, sizeof(D3DFORMAT) );
    if( m_pAllowedAdapterFormatList == NULL )
        return E_OUTOFMEMORY;
    D3DFORMAT fmt;
    if( FAILED( hr = m_pAllowedAdapterFormatList->Add( &( fmt = D3DFMT_X8R8G8B8 ) ) ) )
        return hr;
    if( FAILED( hr = m_pAllowedAdapterFormatList->Add( &( fmt = D3DFMT_X1R5G5B5 ) ) ) )
        return hr;
    if( FAILED( hr = m_pAllowedAdapterFormatList->Add( &( fmt = D3DFMT_R5G6B5 ) ) ) )
        return hr;
    if( FAILED( hr = m_pAllowedAdapterFormatList->Add( &( fmt = D3DFMT_A2R10G10B10 ) ) ) )
        return hr;

    D3DAdapterInfo* pAdapterInfo = NULL;
    UINT numAdapters = m_pD3D->GetAdapterCount();

    for (UINT adapterOrdinal = 0; adapterOrdinal < numAdapters; adapterOrdinal++)
    {
        pAdapterInfo = new D3DAdapterInfo;
        if( pAdapterInfo == NULL )
            return E_OUTOFMEMORY;
        pAdapterInfo->pDisplayModeList = new CArrayList( AL_VALUE, sizeof(D3DDISPLAYMODE)); 
        pAdapterInfo->pDeviceInfoList = new CArrayList( AL_REFERENCE );
        if( pAdapterInfo->pDisplayModeList == NULL ||
            pAdapterInfo->pDeviceInfoList == NULL )
        {
            delete pAdapterInfo;
            return E_OUTOFMEMORY;
        }
        pAdapterInfo->AdapterOrdinal = adapterOrdinal;
        m_pD3D->GetAdapterIdentifier(adapterOrdinal, 0, &pAdapterInfo->AdapterIdentifier);

        // Get list of all display modes on this adapter.  
        // Also build a temporary list of all display adapter formats.
        adapterFormatList.Clear();
        for( UINT iaaf = 0; iaaf < m_pAllowedAdapterFormatList->Count(); iaaf++ )
        {
            D3DFORMAT allowedAdapterFormat = *(D3DFORMAT*)m_pAllowedAdapterFormatList->GetPtr( iaaf );
            UINT numAdapterModes = m_pD3D->GetAdapterModeCount( adapterOrdinal, allowedAdapterFormat );
            for (UINT mode = 0; mode < numAdapterModes; mode++)
            {
                D3DDISPLAYMODE displayMode;
                m_pD3D->EnumAdapterModes( adapterOrdinal, allowedAdapterFormat, mode, &displayMode );
                if( displayMode.Width < AppMinFullscreenWidth ||
                    displayMode.Height < AppMinFullscreenHeight ||
                    ColorChannelBits(displayMode.Format) < AppMinColorChannelBits )
                {
                    continue;
                }
                pAdapterInfo->pDisplayModeList->Add(&displayMode);
                if( !adapterFormatList.Contains( &displayMode.Format ) )
                    adapterFormatList.Add( &displayMode.Format );
            }
        }

        // Sort displaymode list
        qsort( pAdapterInfo->pDisplayModeList->GetPtr(0), 
            pAdapterInfo->pDisplayModeList->Count(), sizeof( D3DDISPLAYMODE ),
            SortModesCallback );

        // Get info for each device on this adapter
        if( FAILED( hr = EnumerateDevices( pAdapterInfo, &adapterFormatList ) ) )
        {
            delete pAdapterInfo;
            return hr;
        }

        // If at least one device on this adapter is available and compatible
        // with the app, add the adapterInfo to the list
        if (pAdapterInfo->pDeviceInfoList->Count() == 0)
            delete pAdapterInfo;
        else
            m_pAdapterInfoList->Add(pAdapterInfo);
    }
    return S_OK;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产一区二区三区免费看| 美女尤物国产一区| 国产成人一级电影| 国产无一区二区| caoporn国产一区二区| 国产精品美女久久福利网站| av一区二区不卡| 亚洲一区二区三区四区在线| 欧美三级在线视频| 奇米888四色在线精品| 精品第一国产综合精品aⅴ| 国产aⅴ综合色| 艳妇臀荡乳欲伦亚洲一区| 欧美日韩国产一区二区三区地区| 日韩成人一区二区三区在线观看| 久久综合久久综合亚洲| 99r精品视频| 麻豆精品视频在线观看视频| 国产农村妇女毛片精品久久麻豆| 色婷婷国产精品久久包臀| 天天综合网天天综合色| 久久亚区不卡日本| 91久久精品日日躁夜夜躁欧美| 日本v片在线高清不卡在线观看| 久久久综合激的五月天| 99精品偷自拍| 美女精品一区二区| 亚洲欧美日韩一区二区| 欧美一级在线观看| 不卡视频在线看| 久久精品噜噜噜成人av农村| 亚洲欧美日韩在线播放| 日韩精品在线看片z| 99re66热这里只有精品3直播| 日韩在线一区二区三区| 日韩欧美色综合| 亚洲四区在线观看| 99国产精品一区| 国产丝袜在线精品| 国产精一区二区三区| 日韩免费一区二区| 亚洲精品国产a| 精一区二区三区| 欧美mv日韩mv国产网站app| 综合久久久久久| 在线观看免费一区| 欧美精品乱码久久久久久| 成人网在线播放| 蜜臀久久99精品久久久久久9 | 国产精品伦理一区二区| 欧美日韩dvd在线观看| 成人免费看片app下载| 久久www免费人成看片高清| 亚洲一区二区精品视频| 国产精品卡一卡二| 久久久高清一区二区三区| 欧美一区日本一区韩国一区| 欧美日韩一级黄| 91小视频在线免费看| 经典三级在线一区| 奇米影视7777精品一区二区| 一区二区三区在线免费播放| 亚洲欧洲美洲综合色网| 日本一区二区三区dvd视频在线 | 91久久国产综合久久| 国产91对白在线观看九色| 国产在线不卡视频| 久久99在线观看| 精品影院一区二区久久久| 日韩激情视频网站| 日日噜噜夜夜狠狠视频欧美人| 亚洲国产精品久久久男人的天堂| 亚洲靠逼com| 一区二区日韩电影| 亚洲第一综合色| 日韩国产在线一| 日韩高清不卡在线| 日本视频中文字幕一区二区三区| 免费的成人av| 激情图片小说一区| 国产在线国偷精品产拍免费yy | 国产91露脸合集magnet| 国产一区二区三区黄视频 | 午夜精品久久久| 9l国产精品久久久久麻豆| 午夜亚洲福利老司机| 国产一区欧美一区| 国产精品一区二区久久不卡| 日日摸夜夜添夜夜添国产精品| 亚洲日本丝袜连裤袜办公室| 国产精品久久久久久妇女6080| 91理论电影在线观看| 免费成人小视频| 日本欧美一区二区| 无码av中文一区二区三区桃花岛| 久久精品国产免费看久久精品| 久久精品72免费观看| 国内精品在线播放| 成人黄色777网| 欧美视频一区二区三区| 777久久久精品| 国产欧美一区二区精品忘忧草| 日韩毛片一二三区| 午夜日韩在线观看| 激情国产一区二区| 大桥未久av一区二区三区中文| 91网站在线播放| 911精品国产一区二区在线| 日韩欧美专区在线| 国产精品免费久久久久| 亚洲欧美一区二区久久| 日本不卡高清视频| av中文字幕亚洲| 欧美一区二区三区成人| 国产精品无遮挡| 无码av中文一区二区三区桃花岛| 国内精品久久久久影院色| 色婷婷综合激情| 精品国产区一区| 亚洲精品免费电影| 精品中文av资源站在线观看| 91啦中文在线观看| 精品国内二区三区| 亚洲欧美乱综合| 国产九九视频一区二区三区| 欧美午夜精品久久久| 国产日韩欧美综合一区| 日韩电影免费一区| 色综合久久天天综合网| 久久夜色精品一区| 午夜影院在线观看欧美| bt欧美亚洲午夜电影天堂| 欧美成人精品高清在线播放| 一区二区三区四区激情| 国产精品一区二区免费不卡 | 不卡欧美aaaaa| 日韩精品一区二区三区三区免费| 亚洲欧美一区二区久久| 国产成人精品影视| 日韩欧美成人激情| 三级欧美在线一区| 91欧美激情一区二区三区成人| 久久久久久久久99精品| 久久精品久久久精品美女| 欧美日本一道本| 亚洲综合视频在线| 91麻豆国产精品久久| 中文字幕高清一区| 欧美日韩精品欧美日韩精品一综合 | 国产精品18久久久久| 欧美无乱码久久久免费午夜一区| 2020日本不卡一区二区视频| 成人精品鲁一区一区二区| 欧美三级日韩三级| 国产精品全国免费观看高清 | 精品一区二区综合| 国产精品久久看| 国产成人aaa| 久久久久九九视频| 久久精品国产亚洲a| 9191精品国产综合久久久久久 | 一区二区激情视频| 成人av高清在线| 亚洲天堂精品在线观看| av在线一区二区三区| 日韩伦理免费电影| 暴力调教一区二区三区| 国产精品久久久久久久久免费相片 | 激情综合色丁香一区二区| 欧美日韩和欧美的一区二区| 一区二区三区四区av| 欧美在线你懂的| 亚洲一二三四区不卡| 在线中文字幕不卡| 亚洲成av人综合在线观看| 精品视频在线免费| 午夜久久久久久电影| 欧美精品第一页| 久久成人羞羞网站| 久久久久9999亚洲精品| 懂色av一区二区在线播放| 中文字幕亚洲一区二区av在线| 成人av在线影院| 一区二区三区欧美| 欧美人与z0zoxxxx视频| 久久66热re国产| 欧美国产视频在线| 色狠狠av一区二区三区| 天天综合日日夜夜精品| 精品久久久久久最新网址| 国产高清在线精品| 亚洲激情图片qvod| 欧美一区二区三区在线观看视频| 久久99久久99| 亚洲欧美在线观看| 欧美高清视频一二三区| 国产精品一区二区久激情瑜伽| 亚洲精品免费在线| 欧美不卡激情三级在线观看| 99精品视频一区|