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

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

?? bumpearth.cpp

?? VC++視頻開發實例集錦(包括“遠程視頻監控”"語音識別系統"等13個經典例子)
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
        m_pd3dDevice->SetTexture(D3DDMAPSAMPLER,  m_pDispMapTexture);

        D3DXMATRIX m;
        D3DXMatrixMultiply(&m, &m_matWorld, &m_matView);
        D3DXMatrixMultiplyTranspose(&m, &m, &m_matProj);
        m_pd3dDevice->SetVertexShaderConstantF(0, (float*)&m, 4);

        float c[4] = {0.15f,0,0,0};
        m_pd3dDevice->SetVertexShaderConstantF(4, c, 1);

        m_pd3dDevice->SetNPatchMode(4);

        m_pd3dDevice->SetVertexDeclaration( m_pDispMapVertexDecl );
        if( m_bBumpMapOn && m_bEnvMapOn )
        {
            m_pd3dDevice->SetVertexShader( m_pDispMapBumpShader );
        }
        else
        {
            m_pd3dDevice->SetVertexShader( m_pDispMapShader );
        }
    }
    else
    {
        m_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 1 );
        m_pd3dDevice->SetFVF( BUMPVERTEX::FVF );
    }
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );

    if( m_bBumpMapOn && m_bEnvMapOn )
    {
        m_pd3dDevice->SetTexture( 1, m_psBumpMap );
        m_pd3dDevice->SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, 1 );
        if( m_BumpMapFormat == D3DFMT_V8U8 )
            m_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_BUMPENVMAP );
        else
            m_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_BUMPENVMAPLUMINANCE );
        m_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_TEXTURE );
        m_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_CURRENT );
        m_pd3dDevice->SetTextureStageState( 1, D3DTSS_BUMPENVMAT00, F2DW(0.5f) );
        m_pd3dDevice->SetTextureStageState( 1, D3DTSS_BUMPENVMAT01, F2DW(0.0f) );
        m_pd3dDevice->SetTextureStageState( 1, D3DTSS_BUMPENVMAT10, F2DW(0.0f) );
        m_pd3dDevice->SetTextureStageState( 1, D3DTSS_BUMPENVMAT11, F2DW(0.5f) );
        m_pd3dDevice->SetTextureStageState( 1, D3DTSS_BUMPENVLSCALE, F2DW(4.0f) );
        m_pd3dDevice->SetTextureStageState( 1, D3DTSS_BUMPENVLOFFSET, F2DW(0.0f) );

        if( m_bEnvMapOn )
        {
            m_pd3dDevice->SetTexture( 2, m_pEnvMapTexture );
            if( !m_bDispMapOn )
                m_pd3dDevice->SetTextureStageState( 2, D3DTSS_TEXCOORDINDEX, 0 );
            m_pd3dDevice->SetTextureStageState( 2, D3DTSS_COLOROP, D3DTOP_ADD );
            m_pd3dDevice->SetTextureStageState( 2, D3DTSS_COLORARG1, D3DTA_TEXTURE );
            m_pd3dDevice->SetTextureStageState( 2, D3DTSS_COLORARG2, D3DTA_CURRENT );
        }
        else
            m_pd3dDevice->SetTextureStageState( 2, D3DTSS_COLOROP, D3DTOP_DISABLE );
    }
    else
    {
        if( m_bEnvMapOn )
        {
            m_pd3dDevice->SetTexture( 1, m_pEnvMapTexture );
            if( !m_bDispMapOn )
                m_pd3dDevice->SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, 0 );
            m_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_ADD );
            m_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_TEXTURE );
            m_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_CURRENT );
        }
        else
            m_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_DISABLE );

        m_pd3dDevice->SetTextureStageState( 2, D3DTSS_COLOROP, D3DTOP_DISABLE );
    }

    m_pd3dDevice->SetStreamSource( 0, m_pEarthVB, 0, sizeof(BUMPVERTEX) );

    DWORD dwNumPasses;
    HRESULT hr;
    hr = m_pd3dDevice->ValidateDevice( &dwNumPasses );
    if ( ( D3D_OK == hr) || ( D3DERR_DEVICELOST == hr ) )
    {
        m_bDeviceValidationFailed = FALSE;
    }
    else
    {
        m_bDeviceValidationFailed = TRUE;
    }

    m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, m_dwNumSphereVertices-2 );

    if ( m_bDispMapOn )
    {
        m_pd3dDevice->SetNPatchMode(0);
        m_pd3dDevice->SetVertexShader( NULL );
    }

    m_pd3dDevice->SetTexture( 0, NULL );
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 0 );
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_DISABLE );
    m_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_DISABLE );
    m_pd3dDevice->SetTextureStageState( 1, D3DTSS_ALPHAOP, D3DTOP_DISABLE );
    m_pd3dDevice->SetTextureStageState( 2, D3DTSS_COLOROP, D3DTOP_DISABLE );
    m_pd3dDevice->SetTextureStageState( 2, D3DTSS_ALPHAOP, D3DTOP_DISABLE );

    m_pFont->DrawText( 2,  0, D3DCOLOR_ARGB(255,255,255,0), m_strFrameStats );
    m_pFont->DrawText( 2, 20, D3DCOLOR_ARGB(255,255,255,0), m_strDeviceStats );

    if( m_bDeviceValidationFailed )
    {
        m_pFont->DrawText( 2, 40, D3DCOLOR_ARGB(255,255,0,0),
            _T("Warning: Device validation failed.  Rendering may not look right.") );
    }

    m_pd3dDevice->EndScene();

    return S_OK;
}




//-----------------------------------------------------------------------------
// Name: InitBumpMap()
// Desc: 
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::InitBumpMap()
{
    LPDIRECT3DTEXTURE9 psBumpSrc = m_pEarthBumpTexture;
    D3DSURFACE_DESC    d3dsd;
    D3DLOCKED_RECT     d3dlr;

    psBumpSrc->GetLevelDesc( 0, &d3dsd );
    if( FAILED( m_pd3dDevice->CreateTexture( d3dsd.Width, d3dsd.Height, 1, 0,
        m_BumpMapFormat, D3DPOOL_MANAGED, &m_psBumpMap, NULL ) ) )
    {
        return E_FAIL;
    }

    psBumpSrc->LockRect( 0, &d3dlr, 0, 0 );
    DWORD dwSrcPitch = (DWORD)d3dlr.Pitch;
    BYTE* pSrcTopRow = (BYTE*)d3dlr.pBits;
    BYTE* pSrcCurRow = pSrcTopRow;
    BYTE* pSrcBotRow = pSrcTopRow + (dwSrcPitch * (d3dsd.Height - 1) );

    m_psBumpMap->LockRect( 0, &d3dlr, 0, 0 );
    DWORD dwDstPitch = (DWORD)d3dlr.Pitch;
    BYTE* pDstTopRow = (BYTE*)d3dlr.pBits;
    BYTE* pDstCurRow = pDstTopRow;

    for( DWORD y=0; y<d3dsd.Height; y++ )
    {
        BYTE* pSrcB0; 
        BYTE* pSrcB1; 
        BYTE* pSrcB2; 
        BYTE* pDstT; 

        pSrcB0 = pSrcCurRow;

        if( y == d3dsd.Height - 1)
            pSrcB1 = pSrcTopRow;
        else
            pSrcB1 = pSrcCurRow + dwSrcPitch;

        if( y == 0 )
            pSrcB2 = pSrcBotRow;
        else
            pSrcB2 = pSrcCurRow - dwSrcPitch;

        pDstT = pDstCurRow;

        for( DWORD x=0; x<d3dsd.Width; x++ )
        {
            LONG v00; 
            LONG v01; 
            LONG vM1; 
            LONG v10; 
            LONG v1M; 

            v00 = *(pSrcB0+0);

            if( x == d3dsd.Width - 1 )
                v01 = *(pSrcCurRow);
            else
                v01 = *(pSrcB0+4);

            if( x == 0 )
                vM1 = *(pSrcCurRow + (4 * (d3dsd.Width - 1)));
            else
                vM1 = *(pSrcB0-4);
            v10 = *(pSrcB1+0);
            v1M = *(pSrcB2+0);

            LONG iDu = (vM1-v01); 
            LONG iDv = (v1M-v10); 

            WORD uL = ( v00>1 ) ? 63 : 127;

            switch( m_BumpMapFormat )
            {
                case D3DFMT_V8U8:
                    *pDstT++ = (BYTE)iDu;
                    *pDstT++ = (BYTE)iDv;
                    break;

                case D3DFMT_L6V5U5:
                    *(WORD*)pDstT  = (WORD)( ( (iDu>>3) & 0x1f ) <<  0 );
                    *(WORD*)pDstT |= (WORD)( ( (iDv>>3) & 0x1f ) <<  5 );
                    *(WORD*)pDstT |= (WORD)( ( ( uL>>2) & 0x3f ) << 10 );
                    pDstT += 2;
                    break;

                case D3DFMT_X8L8V8U8:
                    *pDstT++ = (BYTE)iDu;
                    *pDstT++ = (BYTE)iDv;
                    *pDstT++ = (BYTE)uL;
                    *pDstT++ = (BYTE)0L;
                    break;
            }

            pSrcB0+=4;
            pSrcB1+=4;
            pSrcB2+=4;
        }

        pSrcCurRow += dwSrcPitch;
        pDstCurRow += dwDstPitch;
    }

    m_psBumpMap->UnlockRect(0);
    psBumpSrc->UnlockRect(0);

    return S_OK;
}


//-----------------------------------------------------------------------------
// Name: InitDeviceObjects()
// Desc: 
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::InitDeviceObjects()
{
    m_pFont->InitDeviceObjects( m_pd3dDevice );

    if( FAILED( m_pSkyBox->Create( m_pd3dDevice, _T("lobby_skybox.x") ) ) )
        return D3DAPPERR_MEDIANOTFOUND;
    if( FAILED( D3DUtil_CreateTexture( m_pd3dDevice, _T("Block.bmp"),
                                       &m_pBlockTexture, D3DFMT_R5G6B5 ) ) )
        return D3DAPPERR_MEDIANOTFOUND;
    if( FAILED( D3DUtil_CreateTexture( m_pd3dDevice, _T("Earth.bmp"),
                                       &m_pEarthTexture, D3DFMT_R5G6B5 ) ) )
        return D3DAPPERR_MEDIANOTFOUND;
    if( FAILED( D3DUtil_CreateTexture( m_pd3dDevice, _T("Earthbump.bmp"),
                                       &m_pEarthBumpTexture, D3DFMT_A8R8G8B8 ) ) )
        return D3DAPPERR_MEDIANOTFOUND;

    if( FAILED( D3DUtil_CreateTexture( m_pd3dDevice, _T("EarthEnvMap.bmp"),
                                       &m_pEnvMapTexture, D3DFMT_R5G6B5 ) ) )
        return D3DAPPERR_MEDIANOTFOUND;

    D3DFORMAT adapterFormat = m_d3dSettings.DisplayMode().Format;
    BOOL bCanDoV8U8   = SUCCEEDED( m_pD3D->CheckDeviceFormat( m_d3dCaps.AdapterOrdinal,
                                   m_d3dCaps.DeviceType, adapterFormat,
                                   0, D3DRTYPE_TEXTURE,
                                   D3DFMT_V8U8 ) ) &&
                        (m_d3dCaps.TextureOpCaps & D3DTEXOPCAPS_BUMPENVMAP );

    BOOL bCanDoL6V5U5 = SUCCEEDED( m_pD3D->CheckDeviceFormat( m_d3dCaps.AdapterOrdinal,
                                   m_d3dCaps.DeviceType, adapterFormat,
                                   0, D3DRTYPE_TEXTURE,
                                   D3DFMT_L6V5U5 ) ) &&
                        (m_d3dCaps.TextureOpCaps & D3DTEXOPCAPS_BUMPENVMAPLUMINANCE );

    BOOL bCanDoL8V8U8 = SUCCEEDED( m_pD3D->CheckDeviceFormat( m_d3dCaps.AdapterOrdinal,
                                   m_d3dCaps.DeviceType, adapterFormat,
                                   0, D3DRTYPE_TEXTURE,
                                   D3DFMT_X8L8V8U8 ) ) &&
                        (m_d3dCaps.TextureOpCaps & D3DTEXOPCAPS_BUMPENVMAPLUMINANCE );

    if( bCanDoV8U8 )        m_BumpMapFormat = D3DFMT_V8U8;
    else if( bCanDoL6V5U5 ) m_BumpMapFormat = D3DFMT_L6V5U5;
    else if( bCanDoL8V8U8 ) m_BumpMapFormat = D3DFMT_X8L8V8U8;
    else                    return E_FAIL;

    m_bCanDoDispMap = ( (m_pd3dDevice->GetSoftwareVertexProcessing() == FALSE) && 
                        (m_d3dCaps.DevCaps2 & D3DDEVCAPS2_DMAPNPATCH ) &&
                        m_d3dCaps.VertexShaderVersion >= D3DVS_VERSION(1,1) &&
                        SUCCEEDED( m_pD3D->CheckDeviceFormat( m_d3dCaps.AdapterOrdinal,
                                                            m_d3dCaps.DeviceType,
                                                            adapterFormat,
                                                            D3DUSAGE_DMAP,
                                                            D3DRTYPE_TEXTURE,
                                                            D3DFMT_L8 ) ) );

    if( !m_bCanDoDispMap )
        m_bDispMapOn = false;

    HMENU hMenu = GetMenu( m_hWnd );
    EnableMenuItem( hMenu, IDM_U8V8,   bCanDoV8U8   ? MF_ENABLED : MF_GRAYED );
    EnableMenuItem( hMenu, IDM_U5V5L6, bCanDoL6V5U5 ? MF_ENABLED : MF_GRAYED );
    EnableMenuItem( hMenu, IDM_U8V8L8, bCanDoL8V8U8 ? MF_ENABLED : MF_GRAYED );
    EnableMenuItem( hMenu, IDM_DISPMAPTOGGLE, m_bCanDoDispMap? MF_ENABLED : MF_GRAYED );
    SetMenuStates();

    if( FAILED( CreateEarthVertexBuffer() ) )
        return E_FAIL;

    if( FAILED( InitBumpMap() ) )
        return E_FAIL;

    if( m_bCanDoDispMap )
    {
        HRESULT hr;
        TCHAR strPath[MAX_PATH];

        if( FAILED( hr = DXUtil_FindMediaFileCb( strPath, sizeof(strPath), TEXT("Earthbump.bmp") ) ) )
            return hr;

        hr = D3DXCreateTextureFromFileEx( m_pd3dDevice,
                                          strPath,
                                          D3DX_DEFAULT,         
                                          D3DX_DEFAULT,         
                                          D3DX_DEFAULT,         
                                          D3DUSAGE_DMAP,
                                          D3DFMT_L8,
                                          D3DPOOL_MANAGED,
                                          D3DX_DEFAULT,         
                                          D3DX_DEFAULT,         
                                          0,                    
                                          NULL,                 
                                          NULL,                 
                                          &m_pDispMapTexture );
        if( FAILED(hr) )
            return D3DAPPERR_MEDIANOTFOUND;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美羞羞免费网站| 亚洲电影在线播放| 亚洲一区免费在线观看| 国内一区二区视频| 欧美亚洲综合在线| 国产精品家庭影院| 狠狠色丁香九九婷婷综合五月| 色婷婷综合久久久久中文一区二区 | 91麻豆精东视频| 久久久亚洲午夜电影| 美女国产一区二区三区| 在线免费av一区| 最新不卡av在线| 99久久精品国产一区| 国产日韩精品视频一区| 久久99精品视频| 日韩精品资源二区在线| 日本在线不卡视频| 91精品国产综合久久福利 | 麻豆精品在线看| 欧美日韩激情在线| 亚洲精品免费在线观看| 99久久99久久精品免费看蜜桃| 久久免费美女视频| 精品一区二区三区免费观看| 56国语精品自产拍在线观看| 亚洲国产一区二区三区| 精品视频免费在线| 亚洲高清中文字幕| 欧美色手机在线观看| 一区二区三区视频在线看| 色综合久久久久综合| 亚洲伦在线观看| 色婷婷激情综合| 亚洲国产精品尤物yw在线观看| 欧美亚州韩日在线看免费版国语版| 亚洲女人小视频在线观看| 欧美亚一区二区| 日韩 欧美一区二区三区| 欧美一区二区三区男人的天堂| 日本vs亚洲vs韩国一区三区| 日韩一区二区三区精品视频| 久久国产综合精品| 2021久久国产精品不只是精品| 国产精品1024| 亚洲婷婷在线视频| 欧美日韩在线免费视频| 免费观看30秒视频久久| 欧美精品一区二区三区蜜桃| 成人午夜私人影院| 亚洲一区在线观看免费观看电影高清| 欧美视频一区二区三区在线观看| 天天色天天操综合| 久久久亚洲精华液精华液精华液| 成人h动漫精品一区二区| 亚洲最大的成人av| 欧美一级片免费看| 成人动漫视频在线| 无码av免费一区二区三区试看 | 日日骚欧美日韩| 2023国产精品视频| 91首页免费视频| 麻豆精品国产传媒mv男同 | 三级不卡在线观看| 国产亚洲精品资源在线26u| 一本色道a无线码一区v| 看电影不卡的网站| 亚洲人成亚洲人成在线观看图片| 在线播放一区二区三区| 国产99久久久精品| 五月天丁香久久| 综合久久国产九一剧情麻豆| 欧美一区二区女人| 99riav一区二区三区| 美女视频一区在线观看| 亚洲男人的天堂av| 久久久无码精品亚洲日韩按摩| 一本久久a久久免费精品不卡| 久久福利资源站| 亚洲小少妇裸体bbw| 欧美国产一区二区| 日韩欧美的一区二区| 色视频一区二区| 风流少妇一区二区| 婷婷开心激情综合| 亚洲视频一区二区在线观看| 久久嫩草精品久久久久| 欧美一区二区国产| 在线免费观看视频一区| 成人国产亚洲欧美成人综合网| 热久久免费视频| 亚洲成人先锋电影| 亚洲一区二区三区四区五区黄| 国产精品久久久久影院色老大| 精品国产伦一区二区三区观看体验| 精品视频一区三区九区| 91免费版在线| eeuss影院一区二区三区| 国产一区二区三区四| 麻豆一区二区三| 免费精品视频在线| 男人操女人的视频在线观看欧美| 亚洲国产aⅴ成人精品无吗| 亚洲另类中文字| 亚洲欧美精品午睡沙发| 亚洲精品ww久久久久久p站| 国产精品久久久久久久裸模 | 欧美mv和日韩mv的网站| 91精品国产综合久久久久久久 | 国产一区二区三区美女| 极品尤物av久久免费看| 久久国产福利国产秒拍| 精油按摩中文字幕久久| 久久se精品一区精品二区| 麻豆91免费看| 久久精品国产精品亚洲精品| 喷水一区二区三区| 激情综合网av| 国产福利91精品| 成人激情免费视频| 成人av集中营| 一本在线高清不卡dvd| 在线视频观看一区| 91超碰这里只有精品国产| 欧美理论电影在线| 欧美电影精品一区二区| 久久久91精品国产一区二区精品| 国产欧美一区二区三区在线老狼| 国产精品美女久久久久aⅴ| 亚洲日本在线a| 亚洲1区2区3区4区| 麻豆国产精品777777在线| 国产一区二区三区高清播放| 不卡一区二区三区四区| 欧美午夜影院一区| 日韩午夜在线观看视频| 国产亚洲短视频| 亚洲精品视频免费观看| 天涯成人国产亚洲精品一区av| 精品一区二区免费视频| 成人av第一页| 欧美美女直播网站| 国产日产欧美一区二区三区 | 国产精品女人毛片| 亚洲永久免费av| 国精产品一区一区三区mba桃花| 国产成人8x视频一区二区| 在线视频你懂得一区二区三区| 日韩一级高清毛片| 亚洲人精品午夜| 经典三级视频一区| 日本韩国精品在线| 亚洲精品一区二区三区四区高清| 亚洲同性gay激情无套| 蜜桃一区二区三区在线观看| 91在线观看一区二区| 欧美一区二区在线观看| 自拍偷拍国产亚洲| 美女一区二区视频| 欧美视频在线一区| 国产精品美女久久久久高潮| 麻豆久久久久久久| 欧美综合欧美视频| 欧美国产精品一区二区三区| 日韩福利电影在线观看| 色婷婷久久综合| 国产精品私人影院| 精品一区二区三区免费观看| 欧美视频一区在线| 亚洲欧美色综合| 粉嫩aⅴ一区二区三区四区| 欧美一区二区啪啪| 亚洲第一搞黄网站| 欧洲一区二区三区免费视频| 国产视频一区二区在线观看| 日本亚洲天堂网| 欧美日韩国产免费一区二区 | 国产精品五月天| 韩国一区二区视频| 欧美一级夜夜爽| 午夜影院久久久| 欧美最猛黑人xxxxx猛交| 国产精品美女视频| 成人免费福利片| 欧美国产成人在线| 国产成人av影院| 国产午夜亚洲精品午夜鲁丝片| 精品制服美女久久| 日韩美一区二区三区| 看电视剧不卡顿的网站| 91麻豆精品国产91久久久久久久久| 一区二区在线电影| 色狠狠一区二区三区香蕉| 成人免费小视频| 91在线观看高清| 最新中文字幕一区二区三区| 99久久精品国产一区二区三区| 国产精品国产三级国产aⅴ无密码| 粉嫩av一区二区三区粉嫩| 国产女人18毛片水真多成人如厕 |