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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? d3dsettingshelper.cpp

?? A few years ago I became interested in first person shooter games and in particular how the world le
?? CPP
字號:
//
//	D3DSettingsHelper.cpp
//
//	Taken from MS DirectX9 SDK
//

#include "stdafx.h"
#include "D3DSettingsHelper.h"
#include <dxerr9.h>


//-----------------------------------------------------------------------------
// Name: FindBestWindowedMode()
// Desc: Sets up m_d3dSettings with best available windowed mode, subject to 
//       the bRequireHAL and bRequireREF constraints.  Returns false if no such
//       mode can be found.
//-----------------------------------------------------------------------------
bool D3DSettingsHelper::FindBestWindowedMode( bool bRequireHAL, bool bRequireREF )
{
    // Get display mode of primary adapter (which is assumed to be where the window 
    // will appear)
    D3DDISPLAYMODE primaryDesktopDisplayMode;
    m_pD3D->GetAdapterDisplayMode(0, &primaryDesktopDisplayMode);

    D3DAdapterInfo* pBestAdapterInfo = NULL;
    D3DDeviceInfo* pBestDeviceInfo = NULL;
    D3DDeviceCombo* pBestDeviceCombo = NULL;

    for( UINT iai = 0; iai < m_d3dEnumeration.m_pAdapterInfoList->GetArrayCount(); iai++ )
    {
        D3DAdapterInfo* pAdapterInfo = m_d3dEnumeration.m_pAdapterInfoList->Get(iai);
        for( UINT idi = 0; idi < pAdapterInfo->pDeviceInfoList->GetArrayCount(); idi++ )
        {
            D3DDeviceInfo* pDeviceInfo = pAdapterInfo->pDeviceInfoList->Get(idi);
            if (bRequireHAL && pDeviceInfo->DevType != D3DDEVTYPE_HAL)
                continue;
            if (bRequireREF && pDeviceInfo->DevType != D3DDEVTYPE_REF)
                continue;
            for( UINT idc = 0; idc < pDeviceInfo->pDeviceComboList->GetArrayCount(); idc++ )
            {
                D3DDeviceCombo* pDeviceCombo = pDeviceInfo->pDeviceComboList->Get(idc);
                bool bAdapterMatchesBB = (pDeviceCombo->BackBufferFormat == pDeviceCombo->AdapterFormat);
                if (!pDeviceCombo->IsWindowed)
                    continue;
                if (pDeviceCombo->AdapterFormat != primaryDesktopDisplayMode.Format)
                    continue;
                // If we haven't found a compatible DeviceCombo yet, or if this set
                // is better (because it's a HAL, and/or because formats match better),
                // save it
                if( pBestDeviceCombo == NULL || 
                    pBestDeviceCombo->DevType != D3DDEVTYPE_HAL && pDeviceCombo->DevType == D3DDEVTYPE_HAL ||
                    pDeviceCombo->DevType == D3DDEVTYPE_HAL && bAdapterMatchesBB )
                {
                    pBestAdapterInfo = pAdapterInfo;
                    pBestDeviceInfo = pDeviceInfo;
                    pBestDeviceCombo = pDeviceCombo;
                    if( pDeviceCombo->DevType == D3DDEVTYPE_HAL && bAdapterMatchesBB )
                    {
                        // This windowed device combo looks great -- take it
                        goto EndWindowedDeviceComboSearch;
                    }
                    // Otherwise keep looking for a better windowed device combo
                }
            }
        }
    }
EndWindowedDeviceComboSearch:
    if (pBestDeviceCombo == NULL )
        return false;

    m_d3dSettings.pWindowed_AdapterInfo = pBestAdapterInfo;
    m_d3dSettings.pWindowed_DeviceInfo = pBestDeviceInfo;
    m_d3dSettings.pWindowed_DeviceCombo = pBestDeviceCombo;
    m_d3dSettings.IsWindowed = true;
    m_d3dSettings.Windowed_DisplayMode = primaryDesktopDisplayMode;
    m_d3dSettings.Windowed_Width = m_rcWindowClient.right - m_rcWindowClient.left;
    m_d3dSettings.Windowed_Height = m_rcWindowClient.bottom - m_rcWindowClient.top;
    if (m_d3dEnumeration.AppUsesDepthBuffer)
	{
		m_d3dSettings.Windowed_DepthStencilBufferFormat = pBestDeviceCombo->pDepthStencilFormatList->Get(0);
		D3DFORMAT depthStencilFmt = D3DFMT_D24X8;
		for (int n=0; n<(int)pBestDeviceCombo->pDepthStencilFormatList->GetArrayCount(); n++)
		{
			D3DFORMAT dSFTest = pBestDeviceCombo->pDepthStencilFormatList->Get(n);
			if (dSFTest == depthStencilFmt)
			{
				m_d3dSettings.Windowed_DepthStencilBufferFormat = dSFTest;
				break;
			}
		}
	}
    m_d3dSettings.Windowed_MultisampleType = pBestDeviceCombo->pMultiSampleTypeList->Get(0);
    m_d3dSettings.Windowed_MultisampleQuality = 0;
    m_d3dSettings.Windowed_VertexProcessingType = pBestDeviceCombo->pVertexProcessingTypeList->Get(1);
    m_d3dSettings.Windowed_PresentInterval = pBestDeviceCombo->pPresentIntervalList->Get(0);
    return true;
}




//-----------------------------------------------------------------------------
// Name: FindBestFullscreenMode()
// Desc: Sets up m_d3dSettings with best available fullscreen mode, subject to 
//       the bRequireHAL and bRequireREF constraints.  Returns false if no such
//       mode can be found.
//-----------------------------------------------------------------------------
bool D3DSettingsHelper::FindBestFullscreenMode( bool bRequireHAL, bool bRequireREF )
{
    // For fullscreen, default to first HAL DeviceCombo that supports the current desktop 
    // display mode, or any display mode if HAL is not compatible with the desktop mode, or 
    // non-HAL if no HAL is available
    D3DDISPLAYMODE adapterDesktopDisplayMode;
    D3DDISPLAYMODE bestAdapterDesktopDisplayMode;
    D3DDISPLAYMODE bestDisplayMode;
    bestAdapterDesktopDisplayMode.Width = 0;
    bestAdapterDesktopDisplayMode.Height = 0;
    bestAdapterDesktopDisplayMode.Format = D3DFMT_UNKNOWN;
    bestAdapterDesktopDisplayMode.RefreshRate = 0;

    D3DAdapterInfo* pBestAdapterInfo = NULL;
    D3DDeviceInfo* pBestDeviceInfo = NULL;
    D3DDeviceCombo* pBestDeviceCombo = NULL;

    for( UINT iai = 0; iai < m_d3dEnumeration.m_pAdapterInfoList->GetArrayCount(); iai++ )
    {
        D3DAdapterInfo* pAdapterInfo = m_d3dEnumeration.m_pAdapterInfoList->Get(iai);
        m_pD3D->GetAdapterDisplayMode( pAdapterInfo->AdapterOrdinal, &adapterDesktopDisplayMode );
        for( UINT idi = 0; idi < pAdapterInfo->pDeviceInfoList->GetArrayCount(); idi++ )
        {
            D3DDeviceInfo* pDeviceInfo = pAdapterInfo->pDeviceInfoList->Get(idi);
            if (bRequireHAL && pDeviceInfo->DevType != D3DDEVTYPE_HAL)
                continue;
            if (bRequireREF && pDeviceInfo->DevType != D3DDEVTYPE_REF)
                continue;
            for( UINT idc = 0; idc < pDeviceInfo->pDeviceComboList->GetArrayCount(); idc++ )
            {
                D3DDeviceCombo* pDeviceCombo = pDeviceInfo->pDeviceComboList->Get(idc);
                bool bAdapterMatchesBB = (pDeviceCombo->BackBufferFormat == pDeviceCombo->AdapterFormat);
                bool bAdapterMatchesDesktop = (pDeviceCombo->AdapterFormat == adapterDesktopDisplayMode.Format);
                if (pDeviceCombo->IsWindowed)
                    continue;
                // If we haven't found a compatible set yet, or if this set
                // is better (because it's a HAL, and/or because formats match better),
                // save it
                if (pBestDeviceCombo == NULL ||
                    pBestDeviceCombo->DevType != D3DDEVTYPE_HAL && pDeviceInfo->DevType == D3DDEVTYPE_HAL ||
                    pDeviceCombo->DevType == D3DDEVTYPE_HAL && pBestDeviceCombo->AdapterFormat != adapterDesktopDisplayMode.Format && bAdapterMatchesDesktop ||
                    pDeviceCombo->DevType == D3DDEVTYPE_HAL && bAdapterMatchesDesktop && bAdapterMatchesBB )
                {
                    bestAdapterDesktopDisplayMode = adapterDesktopDisplayMode;
                    pBestAdapterInfo = pAdapterInfo;
                    pBestDeviceInfo = pDeviceInfo;
                    pBestDeviceCombo = pDeviceCombo;
                    if (pDeviceInfo->DevType == D3DDEVTYPE_HAL && bAdapterMatchesDesktop && bAdapterMatchesBB)
                    {
                        // This fullscreen device combo looks great -- take it
                        goto EndFullscreenDeviceComboSearch;
                    }
                    // Otherwise keep looking for a better fullscreen device combo
                }
            }
        }
    }
EndFullscreenDeviceComboSearch:
    if (pBestDeviceCombo == NULL)
        return false;

    // Need to find a display mode on the best adapter that uses pBestDeviceCombo->AdapterFormat
    // and is as close to bestAdapterDesktopDisplayMode's res as possible
    bestDisplayMode.Width = 0;
    bestDisplayMode.Height = 0;
    bestDisplayMode.Format = D3DFMT_UNKNOWN;
    bestDisplayMode.RefreshRate = 0;
    for( UINT idm = 0; idm < pBestAdapterInfo->pDisplayModeList->GetArrayCount(); idm++ )
    {
        D3DDISPLAYMODE* pdm = &(pBestAdapterInfo->pDisplayModeList->Get(idm));
        if( pdm->Format != pBestDeviceCombo->AdapterFormat )
            continue;
        if( pdm->Width == bestAdapterDesktopDisplayMode.Width &&
            pdm->Height == bestAdapterDesktopDisplayMode.Height && 
            pdm->RefreshRate == bestAdapterDesktopDisplayMode.RefreshRate )
        {
            // found a perfect match, so stop
            bestDisplayMode = *pdm;
            break;
        }
        else if( pdm->Width == bestAdapterDesktopDisplayMode.Width &&
                 pdm->Height == bestAdapterDesktopDisplayMode.Height && 
                 pdm->RefreshRate > bestDisplayMode.RefreshRate )
        {
            // refresh rate doesn't match, but width/height match, so keep this
            // and keep looking
            bestDisplayMode = *pdm;
        }
        else if( pdm->Width == bestAdapterDesktopDisplayMode.Width )
        {
            // width matches, so keep this and keep looking
            bestDisplayMode = *pdm;
        }
        else if( bestDisplayMode.Width == 0 )
        {
            // we don't have anything better yet, so keep this and keep looking
            bestDisplayMode = *pdm;
        }
    }

    m_d3dSettings.pFullscreen_AdapterInfo = pBestAdapterInfo;
    m_d3dSettings.pFullscreen_DeviceInfo = pBestDeviceInfo;
    m_d3dSettings.pFullscreen_DeviceCombo = pBestDeviceCombo;
    m_d3dSettings.IsWindowed = false;
    m_d3dSettings.Fullscreen_DisplayMode = bestDisplayMode;
    if (m_d3dEnumeration.AppUsesDepthBuffer)
	{
		m_d3dSettings.Fullscreen_DepthStencilBufferFormat = pBestDeviceCombo->pDepthStencilFormatList->Get(0);
		D3DFORMAT depthStencilFmt = D3DFMT_D24X8;
		for (int n=0; n<(int)pBestDeviceCombo->pDepthStencilFormatList->GetArrayCount(); n++)
		{
			D3DFORMAT dSFTest = pBestDeviceCombo->pDepthStencilFormatList->Get(n);
			if (dSFTest == depthStencilFmt)
			{
				m_d3dSettings.Fullscreen_DepthStencilBufferFormat = dSFTest;
				break;
			}
		}
	}
    m_d3dSettings.Fullscreen_MultisampleType = pBestDeviceCombo->pMultiSampleTypeList->Get(0);
    m_d3dSettings.Fullscreen_MultisampleQuality = 0;
    m_d3dSettings.Fullscreen_VertexProcessingType = pBestDeviceCombo->pVertexProcessingTypeList->Get(0);
    m_d3dSettings.Fullscreen_PresentInterval = D3DPRESENT_INTERVAL_DEFAULT;
    return true;
}




//-----------------------------------------------------------------------------
// Name: ChooseInitialD3DSettings()
// Desc: 
//-----------------------------------------------------------------------------
HRESULT D3DSettingsHelper::ChooseInitialD3DSettings()
{
    bool bFoundFullscreen = FindBestFullscreenMode( false, false );
    bool bFoundWindowed = FindBestWindowedMode( false, false );

    if( m_bStartFullscreen && bFoundFullscreen )
        m_d3dSettings.IsWindowed = false;
    if( !bFoundWindowed && bFoundFullscreen )
        m_d3dSettings.IsWindowed = false;

    if( !bFoundFullscreen && !bFoundWindowed )
        return 0x82000003;

    return S_OK;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
岛国一区二区在线观看| 玉足女爽爽91| 3atv一区二区三区| 欧美影片第一页| 色丁香久综合在线久综合在线观看| 欧美色手机在线观看| 国产丝袜美腿一区二区三区| 欧美伦理视频网站| 欧美专区在线观看一区| 色婷婷狠狠综合| 欧美视频一区二区三区在线观看| 91国内精品野花午夜精品| 91丨九色porny丨蝌蚪| 欧洲一区二区三区免费视频| 在线观看日韩电影| 91精选在线观看| 精品日韩在线观看| 久久久久久久久久久电影| 日韩亚洲国产中文字幕欧美| 精品久久久久久久人人人人传媒| 欧美一级久久久久久久大片| 欧美tk丨vk视频| 久久精品夜夜夜夜久久| 国产精品久久久久aaaa樱花| 一区av在线播放| 秋霞午夜av一区二区三区| 免费欧美日韩国产三级电影| 国产在线精品一区二区三区不卡 | 午夜在线成人av| 日本欧美加勒比视频| 国产麻豆成人传媒免费观看| 丁香桃色午夜亚洲一区二区三区| 成人午夜视频免费看| 在线观看日韩电影| 久久尤物电影视频在线观看| 国产精品久久久久久久久久免费看| 一区av在线播放| 狠狠色综合日日| 91国产成人在线| 久久精品一区四区| 亚洲图片欧美视频| 国产成人在线视频免费播放| 欧美视频一二三区| 精品女同一区二区| 亚洲国产精品自拍| 成人免费黄色大片| 日韩午夜激情免费电影| 亚洲欧美日韩综合aⅴ视频| 麻豆精品新av中文字幕| 成人国产精品视频| 精品国产亚洲在线| 亚洲观看高清完整版在线观看| 国产69精品久久777的优势| 欧美人成免费网站| 亚洲欧美日本在线| 国产精品一区久久久久| 欧美精品自拍偷拍动漫精品| 亚洲视频 欧洲视频| 国产一区二区三区电影在线观看| 欧洲中文字幕精品| 国产精品视频九色porn| 国内不卡的二区三区中文字幕 | 欧美精品九九99久久| 亚洲欧洲国产日本综合| 国产精品一区二区不卡| 日韩一区二区免费在线观看| 亚洲成人一区二区在线观看| 91麻豆蜜桃一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋| 国产在线不卡一区| 日韩欧美的一区二区| 毛片av一区二区| 日韩欧美一区在线| 香蕉久久夜色精品国产使用方法 | 欧美精品电影在线播放| 亚洲综合视频在线观看| 在线视频一区二区免费| 亚洲欧美日韩一区二区三区在线观看| 高清在线不卡av| 国产亚洲欧洲997久久综合| 韩国av一区二区三区在线观看 | 91美女视频网站| 国产精品成人一区二区艾草| 成人黄色a**站在线观看| 国产精品午夜在线观看| av不卡在线观看| 亚洲免费视频中文字幕| 欧美性高清videossexo| 日韩综合在线视频| 精品欧美一区二区三区精品久久| 久久99热狠狠色一区二区| 精品国产在天天线2019| 成人在线综合网站| 最新国产精品久久精品| 欧美群妇大交群中文字幕| 性感美女久久精品| 久久综合99re88久久爱| 成人黄页毛片网站| 亚洲一线二线三线久久久| 欧美日韩电影在线播放| 美脚の诱脚舐め脚责91| 亚洲国产精品成人综合色在线婷婷 | 日韩av一级电影| 精品少妇一区二区三区视频免付费| 九一久久久久久| 国产精品天美传媒| 欧美日韩第一区日日骚| 极品销魂美女一区二区三区| 日韩理论片中文av| 欧美精品高清视频| 成人美女在线观看| 五月婷婷欧美视频| 久久久久九九视频| 欧美亚一区二区| 国产一区二区三区久久久| 亚洲一区二区四区蜜桃| 久久嫩草精品久久久久| 在线看国产一区| 国产在线播放一区| 午夜伊人狠狠久久| 国产精品卡一卡二| 日韩欧美色电影| 色香色香欲天天天影视综合网| 麻豆视频观看网址久久| 一区二区三区在线视频免费| 欧美成人a视频| 欧美无砖砖区免费| 色综合视频在线观看| 国产精品888| 青青草成人在线观看| 亚洲人成在线播放网站岛国| 欧美精品一区二区三区久久久| 色婷婷综合五月| 成人午夜大片免费观看| 精品在线一区二区| 日韩精品国产精品| 亚洲免费三区一区二区| 国产拍揄自揄精品视频麻豆| 91精品国产91久久久久久一区二区| 97国产精品videossex| 国产精品99久久久久久有的能看| 偷拍自拍另类欧美| 亚洲高清视频在线| 亚洲免费视频成人| 亚洲精品自拍动漫在线| 中文字幕欧美一区| 国产精品免费网站在线观看| 久久亚洲精精品中文字幕早川悠里| 欧美一区二区三区小说| 91麻豆精品国产91久久久久久久久 | 成人a区在线观看| 国产精品一区二区三区99| 久久国产欧美日韩精品| 日韩av在线发布| 蜜臀久久久久久久| 免费欧美高清视频| 日韩精品乱码av一区二区| 日本不卡高清视频| 日本少妇一区二区| 美女mm1313爽爽久久久蜜臀| 久久福利视频一区二区| 国产在线不卡一区| 成人精品视频一区| av在线这里只有精品| 色94色欧美sute亚洲线路一ni | 一区二区三区欧美视频| 亚洲麻豆国产自偷在线| 亚洲一区二区三区四区在线免费观看 | 成人高清视频免费观看| 99精品视频在线观看| 日本电影欧美片| 欧美日韩精品高清| 制服丝袜亚洲精品中文字幕| 欧美va亚洲va国产综合| 久久久99久久精品欧美| 一色屋精品亚洲香蕉网站| 亚洲一区二区三区小说| 乱一区二区av| 成人一区二区三区视频| 91成人在线免费观看| 欧美一级艳片视频免费观看| 26uuu国产一区二区三区 | 一本大道综合伊人精品热热| 欧美亚洲国产一卡| 精品国产伦一区二区三区观看体验 | 国产精品自在欧美一区| 成人18视频日本| 欧美日韩国产影片| 337p日本欧洲亚洲大胆色噜噜| 国产精品系列在线| 亚洲影院免费观看| 国产精选一区二区三区| 色婷婷激情综合| 26uuu色噜噜精品一区| 亚洲免费色视频| 精品综合久久久久久8888| 91老司机福利 在线| 精品人在线二区三区| 亚洲免费成人av| 韩国女主播一区二区三区|