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

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

?? shadowvolume.cpp

?? VC中使用C#作為腳本引擎編程
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
    DXUTSetCallbackMsgProc( MsgProc );
    DXUTSetCallbackKeyboard( KeyboardProc );
    DXUTSetCallbackMouse( MouseProc );
    DXUTSetCallbackFrameRender( OnFrameRender );
    DXUTSetCallbackFrameMove( OnFrameMove );

    // This sample requires a stencil buffer. See the callback function for details.
    CGrowableArray<D3DFORMAT>* pDSFormats = DXUTGetEnumeration()->GetPossibleDepthStencilFormatList();
    pDSFormats->RemoveAll();
    pDSFormats->Add( D3DFMT_D24S8 );
    pDSFormats->Add( D3DFMT_D24X4S4 );
    pDSFormats->Add( D3DFMT_D15S1 );
    pDSFormats->Add( D3DFMT_D24FS8 );

    // Show the cursor and clip it when in full screen
    DXUTSetCursorSettings( true, true );

    InitApp();

    // Initialize the Scripting engines application domain
    InitializeScriptEngine();

    // Initialize the scaling and translation for the background meshes
    // Hardcode the matrices since we only have two.
    D3DXMATRIXA16 m;
    D3DXMatrixTranslation( &g_mWorldBack[0], 0.0f, 2.0f, 0.0f );
    D3DXMatrixScaling( &g_mWorldBack[1], 0.3f, 0.3f, 0.3f );
    D3DXMatrixTranslation( &m, 0.0f, 1.5f, 0.0f );
    D3DXMatrixMultiply( &g_mWorldBack[1], &g_mWorldBack[1], &m );

    // Initialize DXUT and create the desired Win32 window and Direct3D 
    // device for the application. Calling each of these functions is optional, but they
    // allow you to set several options which control the behavior of the framework.
    DXUTInit( true, true, true ); // Parse the command line, handle the default hotkeys, and show msgboxes
    DXUTCreateWindow( L"Scripted ShadowVolume" );
    DXUTCreateDevice( D3DADAPTER_DEFAULT, true, 640, 480, IsDeviceAcceptable, ModifyDeviceSettings );

    // Pass control to DXUT for handling the message pump and 
    // dispatching render calls. DXUT will call your FrameMove 
    // and FrameRender callback when there is idle time between handling window messages.
    DXUTMainLoop();

    // Perform any application-level cleanup here. Direct3D device resources are released within the
    // appropriate callback functions and therefore don't require any cleanup code here.

    return DXUTGetExitCode();
}


//--------------------------------------------------------------------------------------
// Initialize the app 
//--------------------------------------------------------------------------------------
void InitApp()
{
    // Initialize dialogs
    g_SettingsDlg.Init( &g_DialogResourceManager );
    g_HUD.Init( &g_DialogResourceManager );
    g_SampleUI.Init( &g_DialogResourceManager );

    g_HUD.SetCallback( OnGUIEvent ); int iY = 10; 
    g_HUD.AddButton( IDC_TOGGLEFULLSCREEN, L"Toggle full screen", 35, iY, 125, 22 );
    g_HUD.AddButton( IDC_TOGGLEREF, L"Toggle REF (F3)", 35, iY += 24, 125, 22 );
    g_HUD.AddButton( IDC_CHANGEDEVICE, L"Change device (F2)", 35, iY += 24, 125, 22, VK_F2 );

    g_SampleUI.SetCallback( OnGUIEvent ); iY = 10;
    g_SampleUI.AddComboBox( IDC_CHANGESCRIPT, 0, iY += 24, 190, 22, 0, false );
    g_SampleUI.GetComboBox( IDC_CHANGESCRIPT )->SetDropHeight( 80 );
    g_SampleUI.GetComboBox( IDC_CHANGESCRIPT )->AddItem( L"Not Using Scripts", NULL );
    g_SampleUI.GetComboBox( IDC_CHANGESCRIPT )->AddItem( L"Script #1", L"script1.cs" );
    g_SampleUI.GetComboBox( IDC_CHANGESCRIPT )->AddItem( L"Script #2", L"script2.cs" );
    g_SampleUI.GetComboBox( IDC_CHANGESCRIPT )->AddItem( L"Bad Guy Hacker Script", L"unsecure.cs" );

    // Initialize cameras
    g_Camera.SetRotateButtons( true, false, false );
    g_MCamera.SetButtonMasks( MOUSE_RIGHT_BUTTON, 0, 0 );
    g_LCamera.SetButtonMasks( MOUSE_MIDDLE_BUTTON, 0, 0 );

    // Initialize the lights
    for( int L = 0; L < MAX_NUM_LIGHTS; ++L )
    {
        D3DXMATRIXA16 m;
        D3DXVECTOR4 v;
        D3DXMatrixScaling( &g_aLights[L].m_mWorld, 0.1f, 0.1f, 0.1f );
        D3DXMatrixTranslation( &m, g_LightInit[L].Position.x,
                                   g_LightInit[L].Position.y,
                                   g_LightInit[L].Position.z );
        D3DXMatrixMultiply( &g_aLights[L].m_mWorld, &g_aLights[L].m_mWorld, &m );
        g_aLights[L].m_Position = g_LightInit[L].Position;
        g_aLights[L].m_Color = g_LightInit[L].Color;
    }
}


//--------------------------------------------------------------------------------------
// Returns true if a particular depth-stencil format can be created and used with
// an adapter format and backbuffer format combination.
BOOL IsDepthFormatOk( D3DFORMAT DepthFormat,
                      D3DFORMAT AdapterFormat,
                      D3DFORMAT BackBufferFormat )
{
    // Verify that the depth format exists
    HRESULT hr = DXUTGetD3DObject()->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                                        D3DDEVTYPE_HAL,
                                                        AdapterFormat,
                                                        D3DUSAGE_DEPTHSTENCIL,
                                                        D3DRTYPE_SURFACE,
                                                        DepthFormat );
    if( FAILED( hr ) ) return FALSE;

    // Verify that the backbuffer format is valid
    hr = DXUTGetD3DObject()->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                                D3DDEVTYPE_HAL,
                                                AdapterFormat,
                                                D3DUSAGE_RENDERTARGET,
                                                D3DRTYPE_SURFACE,
                                                BackBufferFormat );
    if( FAILED( hr ) ) return FALSE;

    // Verify that the depth format is compatible
    hr = DXUTGetD3DObject()->CheckDepthStencilMatch( D3DADAPTER_DEFAULT,
                                                     D3DDEVTYPE_HAL,
                                                     AdapterFormat,
                                                     BackBufferFormat,
                                                     DepthFormat );

    return SUCCEEDED(hr);
}


//--------------------------------------------------------------------------------------
// Called during device initialization, this code checks the device for some 
// minimum set of capabilities, and rejects those that don't pass by returning false.
//--------------------------------------------------------------------------------------
bool CALLBACK IsDeviceAcceptable( D3DCAPS9* pCaps, D3DFORMAT AdapterFormat, 
                                  D3DFORMAT BackBufferFormat, bool bWindowed, void* pUserContext )
{
    // Skip backbuffer formats that don't support alpha blending
    IDirect3D9* pD3D = DXUTGetD3DObject(); 
    if( FAILED( pD3D->CheckDeviceFormat( pCaps->AdapterOrdinal, pCaps->DeviceType,
                    AdapterFormat, D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING, 
                    D3DRTYPE_TEXTURE, BackBufferFormat ) ) )
        return false;

    // Must support pixel shader 1.1
    if( pCaps->PixelShaderVersion < D3DPS_VERSION( 1, 1 ) )
        return false;

    // Must support stencil buffer
    if( !IsDepthFormatOk( D3DFMT_D24S8,
                          AdapterFormat,
                          BackBufferFormat ) &&
        !IsDepthFormatOk( D3DFMT_D24X4S4,
                          AdapterFormat,
                          BackBufferFormat ) &&
        !IsDepthFormatOk( D3DFMT_D15S1,
                          AdapterFormat,
                          BackBufferFormat ) &&
        !IsDepthFormatOk( D3DFMT_D24FS8,
                          AdapterFormat,
                          BackBufferFormat ) )
        return false;

    return true;
}


//--------------------------------------------------------------------------------------
// This callback function is called immediately before a device is created to allow the 
// application to modify the device settings. The supplied pDeviceSettings parameter 
// contains the settings that the framework has selected for the new device, and the 
// application can make any desired changes directly to this structure.  Note however that 
// DXUT will not correct invalid device settings so care must be taken 
// to return valid device settings, otherwise IDirect3D9::CreateDevice() will fail.  
//--------------------------------------------------------------------------------------
bool CALLBACK ModifyDeviceSettings( DXUTDeviceSettings* pDeviceSettings, const D3DCAPS9* pCaps, void* pUserContext )
{
    // If device doesn't support HW T&L or doesn't support 1.1 vertex shaders in HW 
    // then switch to SWVP.
    if( (pCaps->DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) == 0 ||
         pCaps->VertexShaderVersion < D3DVS_VERSION(1,1) )
    {
        pDeviceSettings->BehaviorFlags = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
    }

    // Debugging vertex shaders requires either REF or software vertex processing 
    // and debugging pixel shaders requires REF.  
#ifdef DEBUG_VS
    if( pDeviceSettings->DeviceType != D3DDEVTYPE_REF )
    {
        pDeviceSettings->BehaviorFlags &= ~D3DCREATE_HARDWARE_VERTEXPROCESSING;
        pDeviceSettings->BehaviorFlags &= ~D3DCREATE_PUREDEVICE;                            
        pDeviceSettings->BehaviorFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING;
    }
#endif
#ifdef DEBUG_PS
    pDeviceSettings->DeviceType = D3DDEVTYPE_REF;
#endif

    // This sample requires a stencil buffer.
    if( IsDepthFormatOk( D3DFMT_D24S8,
                         pDeviceSettings->AdapterFormat,
                         pDeviceSettings->pp.BackBufferFormat ) )
        pDeviceSettings->pp.AutoDepthStencilFormat = D3DFMT_D24S8;
    else
    if( IsDepthFormatOk( D3DFMT_D24X4S4,
                         pDeviceSettings->AdapterFormat,
                         pDeviceSettings->pp.BackBufferFormat ) )
        pDeviceSettings->pp.AutoDepthStencilFormat = D3DFMT_D24X4S4;
    else
    if( IsDepthFormatOk( D3DFMT_D24FS8,
                         pDeviceSettings->AdapterFormat,
                         pDeviceSettings->pp.BackBufferFormat ) )
        pDeviceSettings->pp.AutoDepthStencilFormat = D3DFMT_D24FS8;
    else
    if( IsDepthFormatOk( D3DFMT_D15S1,
                         pDeviceSettings->AdapterFormat,
                         pDeviceSettings->pp.BackBufferFormat ) )
        pDeviceSettings->pp.AutoDepthStencilFormat = D3DFMT_D15S1;

    // For the first device created if its a REF device, optionally display a warning dialog box
    static bool s_bFirstTime = true;
    if( s_bFirstTime )
    {
        s_bFirstTime = false;
        if( pDeviceSettings->DeviceType == D3DDEVTYPE_REF )
            DXUTDisplaySwitchingToREFWarning();
    }

    return true;
}


// Compute a matrix that scales Mesh to a specified size and centers around origin
void ComputeMeshScaling( CDXUTMesh &Mesh, D3DXMATRIX *pmScalingCenter )
{
    LPVOID pVerts = NULL;
    D3DXMatrixIdentity( pmScalingCenter );
    if( SUCCEEDED( Mesh.GetMesh()->LockVertexBuffer( 0, &pVerts ) ) )
    {
        D3DXVECTOR3 vCtr;
        float fRadius;
        if( SUCCEEDED( D3DXComputeBoundingSphere( (const D3DXVECTOR3*)pVerts,
                                                  Mesh.GetMesh()->GetNumVertices(),
                                                  Mesh.GetMesh()->GetNumBytesPerVertex(),
                                                  &vCtr, &fRadius ) ) )
        {
            D3DXMatrixTranslation( pmScalingCenter, -vCtr.x, -vCtr.y, -vCtr.z );
            D3DXMATRIXA16 m;
            D3DXMatrixScaling( &m, 1.0f / fRadius,
                                   1.0f / fRadius,
                                   1.0f / fRadius );
            D3DXMatrixMultiply( pmScalingCenter, pmScalingCenter, &m );
        }
        Mesh.GetMesh()->UnlockVertexBuffer();
    }
}


//--------------------------------------------------------------------------------------
// This callback function will be called immediately after the Direct3D device has been 
// created, which will happen during application initialization and windowed/full screen 
// toggles. This is the best location to create D3DPOOL_MANAGED resources since these 
// resources need to be reloaded whenever the device is destroyed. Resources created  
// here should be released in the OnDestroyDevice callback. 
//--------------------------------------------------------------------------------------
HRESULT CALLBACK OnCreateDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext )
{
    HRESULT hr;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品不卡在线视频| 九色综合狠狠综合久久| 国产亚洲女人久久久久毛片| 5858s免费视频成人| 欧美欧美欧美欧美首页| 91国产成人在线| 欧美在线免费播放| 欧美少妇性性性| 欧美精品一二三| 这里只有精品电影| 欧美一激情一区二区三区| 正在播放一区二区| 日韩欧美激情一区| 久久久蜜桃精品| 国产欧美一区二区三区在线老狼| 久久人人超碰精品| 国产精品网站一区| 亚洲欧洲日本在线| 亚洲精品视频自拍| 亚洲成人黄色小说| 日本成人超碰在线观看| 精品综合免费视频观看| 国产成人免费在线观看不卡| 国产激情一区二区三区四区| 丁香一区二区三区| 91毛片在线观看| 欧美女孩性生活视频| 欧美成人猛片aaaaaaa| 国产亚洲成年网址在线观看| 亚洲欧洲www| 亚洲国产综合在线| 强制捆绑调教一区二区| 国产麻豆成人精品| 99久免费精品视频在线观看| 91精品福利视频| 欧美一区二区在线观看| 久久青草国产手机看片福利盒子 | 99久久久久久| 欧美日精品一区视频| 精品久久人人做人人爰| 国产精品福利av| 亚洲成人午夜电影| 国产一区二区三区黄视频| 91伊人久久大香线蕉| 6080日韩午夜伦伦午夜伦| 日本一区二区三区dvd视频在线| 中文字幕在线视频一区| 亚瑟在线精品视频| 国产一区二区电影| 日本精品一级二级| 26uuu色噜噜精品一区二区| 亚洲欧美视频一区| 久久99精品久久久久久久久久久久 | 欧美丰满一区二区免费视频| 久久久国产精品不卡| 亚洲欧美另类久久久精品| 日韩av午夜在线观看| 国产不卡免费视频| 欧美高清视频一二三区| 中文字幕乱码日本亚洲一区二区| 亚洲大型综合色站| 成人三级伦理片| 日韩欧美一级二级三级| 日韩美女视频一区| 国产最新精品免费| 在线播放91灌醉迷j高跟美女| 国产精品视频九色porn| 日本不卡在线视频| 欧美影院一区二区三区| 久久精品日韩一区二区三区| 亚洲成人7777| www.66久久| 337p粉嫩大胆色噜噜噜噜亚洲 | 99riav一区二区三区| 日韩网站在线看片你懂的| 一区二区三区在线免费观看| 国产一区二区三区av电影 | 亚洲韩国一区二区三区| youjizz久久| 久久久国产精品不卡| 免费看欧美美女黄的网站| 欧洲日韩一区二区三区| 中文字幕在线一区免费| 国产99久久久国产精品潘金网站| 欧美一区二区三区小说| 午夜久久久久久久久久一区二区| 99精品桃花视频在线观看| 国产婷婷色一区二区三区四区| 免费在线看成人av| 7777精品伊人久久久大香线蕉超级流畅| 一区精品在线播放| av在线不卡免费看| 国产精品日韩成人| 国产成人午夜视频| 久久久不卡影院| 韩国v欧美v日本v亚洲v| 日韩欧美黄色影院| 精品一区二区三区视频在线观看 | 午夜久久福利影院| 欧美日韩综合一区| 亚洲高清一区二区三区| 欧美日韩久久久一区| 亚洲国产成人精品视频| 色偷偷一区二区三区| 一区二区三区中文字幕精品精品| 91论坛在线播放| 亚洲欧美另类小说| 色成年激情久久综合| 亚洲靠逼com| 91久久香蕉国产日韩欧美9色| 亚洲欧美一区二区三区极速播放 | 91福利在线播放| 亚洲黄色性网站| 欧美日韩中文国产| 日韩1区2区日韩1区2区| 精品日韩在线观看| 国产精品资源在线| 国产精品二三区| 91传媒视频在线播放| 午夜精品视频一区| 精品奇米国产一区二区三区| 老司机免费视频一区二区| 国产精品视频一区二区三区不卡| 成人手机电影网| 亚洲最新视频在线播放| 欧美日韩国产首页在线观看| 丝袜亚洲另类欧美综合| 精品国偷自产国产一区| 国产精品一区二区在线看| 亚洲国产精品黑人久久久| 91在线你懂得| 亚洲第一搞黄网站| 欧美大片在线观看一区| 风间由美中文字幕在线看视频国产欧美 | 一本到不卡精品视频在线观看| 亚洲综合视频在线观看| 日韩免费在线观看| 成人精品gif动图一区| 亚洲激情中文1区| 91精品欧美一区二区三区综合在| 久久99久久久欧美国产| 国产精品国产a级| 欧美久久免费观看| 国产美女视频91| 亚洲靠逼com| 欧美成人官网二区| 99久久精品免费精品国产| 亚洲sss视频在线视频| 精品福利二区三区| 91天堂素人约啪| 免费成人结看片| 亚洲私人影院在线观看| 91精品午夜视频| 91在线视频网址| 蜜桃视频在线观看一区二区| 国产精品欧美经典| 欧美老年两性高潮| 成人免费高清在线| 日韩综合一区二区| 中文字幕一区二区三区乱码在线 | 图片区小说区区亚洲影院| 国产午夜精品美女毛片视频| 欧美日韩在线观看一区二区| 成人午夜免费电影| 三级影片在线观看欧美日韩一区二区| 国产日韩欧美精品电影三级在线| 欧美性色欧美a在线播放| 国产ts人妖一区二区| 午夜精品久久久久久久久久 | 男人的j进女人的j一区| 国产精品久久久久7777按摩 | 一区二区三区精品| 国产色综合久久| 日韩视频在线你懂得| 色偷偷88欧美精品久久久| 国产在线看一区| 日韩精品国产精品| 一区二区三区**美女毛片| 欧美国产精品久久| 2020国产精品| 91精品国产综合久久久久久漫画 | 欧美午夜精品久久久久久超碰| 韩国av一区二区三区四区| 亚洲成年人影院| 亚洲精品高清在线| 国产精品另类一区| 久久久亚洲欧洲日产国码αv| 制服丝袜日韩国产| 欧美午夜视频网站| 91福利视频网站| 91在线porny国产在线看| 成人精品免费视频| 国产精品资源网站| 激情综合色播激情啊| 蜜臀精品久久久久久蜜臀| 三级不卡在线观看| 日韩电影在线免费看| 亚洲18色成人| 亚洲国产精品久久久久婷婷884 | 青青草精品视频|