青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 505  文章 - 1034  trackbacks - 0
<2008年2月>
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678


子曾經曰過:編程無他,唯手熟爾!

常用鏈接

留言簿(94)

隨筆分類(649)

隨筆檔案(505)

相冊

BCB

Crytek

  • crymod
  • Crytek's Offical Modding Portal

Game Industry

OGRE

other

Programmers

Qt

WOW Stuff

搜索

  •  

積分與排名

  • 積分 - 923082
  • 排名 - 14

最新隨筆

最新評論

閱讀排行榜

評論排行榜

位置Microsoft Platform SDK for Windows Server 2003 R2\Samples\Multimedia\DirectShow\Players\Texture3D9\
看名字就知道是把dshow解碼出來的數據渲染到紋理上,但是這目錄里面沒有.proj項目文件,只有Makefile,為了方便,我們根據Makefile自己創建項目文件


附加包含目錄: ..\..\BaseClasses;..\..\Common
鏈接 
         附加庫目錄:  ..\..\BaseClasses\XP32_DEBUG
         附加依賴項: d3dx9.lib d3d9.lib winmm.lib strmbasd.lib shell32.lib

這個strmbasd.lib不是安裝了platform sdk就有了,要我們自己生成,如何生成呢?

選這個(Debug)的,進Samples目錄,然后nmake,要比較長時間,出去遛個彎回來就好了

看到這樣的畫面應該就是生成好了。

特殊項目配置:
         使用多字節字符集              用unicode的話有函數鏈接的時候找不到【重劍注:因為鏈接的strmbasd.lib不是unicode的,看這個玩玩DirectShow--(4)Platform SDK生成Unicode版本的strmbasd.lib
         多線程調試(/MTd)              不用這個就一堆link2005的錯誤
截圖:

核心源碼:
        hr = g_pd3dDevice->CreateTexture(uintWidth, uintHeight, 1D3DUSAGE_DYNAMIC,
                                         D3DFMT_X8R8G8B8,D3DPOOL_DEFAULT,
                                         
&g_pTexture, NULL);


         Using Dynamic Textures

          更新texture數據的部分

HRESULT CTextureRenderer::DoRenderSample( IMediaSample * pSample )
{
    BYTE  
*pBmpBuffer, *pTxtBuffer; // Bitmap buffer, texture buffer
    LONG  lTxtPitch;                // Pitch of bitmap, texture

    BYTE  
* pbS = NULL;
    DWORD 
* pdwS = NULL;
    DWORD 
* pdwD = NULL;
    UINT row, col, dwordWidth;

    CheckPointer(pSample,E_POINTER);
    CheckPointer(g_pTexture,E_UNEXPECTED);

    
// Get the video bitmap buffer
    pSample->GetPointer( &pBmpBuffer );

    
// Lock the Texture
    D3DLOCKED_RECT d3dlr;
    
if( m_bUseDynamicTextures )
    {
        
if( FAILED(g_pTexture->LockRect(0&d3dlr, 0, D3DLOCK_DISCARD)))
            
return E_FAIL;
    }
    
else
    {
        
if (FAILED(g_pTexture->LockRect(0&d3dlr, 00)))
            
return E_FAIL;
    }
    
// Get the texture buffer & pitch
    pTxtBuffer = static_cast<byte *>(d3dlr.pBits);
    lTxtPitch 
=
 d3dlr.Pitch;


    
// Copy the bits

    
if (g_TextureFormat == D3DFMT_X8R8G8B8)
    {
        
// Instead of copying data bytewise, we use DWORD alignment here.
        
// We also unroll loop by copying 4 pixels at once.
        
//
        
// original BYTE array is [b0][g0][r0][b1][g1][r1][b2][g2][r2][b3][g3][r3]
        
//
        
// aligned DWORD array is     [b1 r0 g0 b0][g2 b2 r1 g1][r3 g3 b3 r2]
        
//
        
// We want to transform it to [ff r0 g0 b0][ff r1 g1 b1][ff r2 g2 b2][ff r3 b3 g3]
        
// below, bitwise operations do exactly this.

        dwordWidth 
= m_lVidWidth / 4// aligned width of the row, in DWORDS
                                      
// (pixel by 3 bytes over sizeof(DWORD))

        
for( row = 0; row< (UINT)m_lVidHeight; row++)
        {
            pdwS 
= ( DWORD*)pBmpBuffer;
            pdwD 
= ( DWORD*)pTxtBuffer;

            
for( col = 0; col < dwordWidth; col ++ )
            {
                pdwD[
0=  pdwS[0| 0xFF000000;
                pdwD[
1= ((pdwS[1]<<8)  | 0xFF000000| (pdwS[0]>>24);
                pdwD[
2= ((pdwS[2]<<16| 0xFF000000| (pdwS[1]>>16);
                pdwD[
3= 0xFF000000 | (pdwS[2]>>8);
                pdwD 
+=4;
                pdwS 
+=3;
            }

            
// we might have remaining (misaligned) bytes here
            pbS = (BYTE*) pdwS;
            
for( col = 0; col < (UINT)m_lVidWidth % 4; col++)
            {
                
*pdwD = 0xFF000000     |
                        (pbS[
2<< 16|
                        (pbS[
1<<  8|
                        (pbS[
0]);
                pdwD
++;
                pbS 
+= 3;
            }

            pBmpBuffer  
+= m_lVidPitch;
            pTxtBuffer 
+= lTxtPitch;
        }
// for rows
    }

    
if (g_TextureFormat == D3DFMT_A1R5G5B5)
    {
        
for(int y = 0; y < m_lVidHeight; y++ )
        {
            BYTE 
*pBmpBufferOld = pBmpBuffer;
            BYTE 
*pTxtBufferOld = pTxtBuffer;

            
for (int x = 0; x < m_lVidWidth; x++)
            {
                
*(WORD *)pTxtBuffer = (WORD)
                    (
0x8000 +
                    ((pBmpBuffer[
2& 0xF8<< 7+
                    ((pBmpBuffer[
1& 0xF8<< 2+
                    (pBmpBuffer[
0>> 3));

                pTxtBuffer 
+= 2;
                pBmpBuffer 
+= 3;
            }

            pBmpBuffer 
= pBmpBufferOld + m_lVidPitch;
            pTxtBuffer 
= pTxtBufferOld + lTxtPitch;
        }
    }

    
// Unlock the Texture
    if (FAILED(g_pTexture->UnlockRect(0)))
        
return E_FAIL;

    
return S_OK;
}


 2009-1-9 這個例子用到了platform sdk中的BaseClasses,用到引擎中的時候麻煩多多,我搞了幾天,愣是編譯不過!我日!考慮放棄dshow,用xvid

在游戲中播放過場電影

posted on 2008-12-23 00:23 七星重劍 閱讀(1881) 評論(0)  編輯 收藏 引用 所屬分類: Game GraphicsIDE -- visual c++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区影音先锋| 亚洲尤物影院| 国产亚洲美州欧州综合国| 亚洲国产一区二区三区高清| 国产精品久久一级| 亚洲区免费影片| 亚洲高清在线观看一区| 欧美一级大片在线免费观看| 亚洲香蕉成视频在线观看| 欧美国产第一页| 欧美国产高潮xxxx1819| 国产在线精品二区| 亚洲综合视频在线| 亚洲欧美在线x视频| 欧美日韩国产首页| 亚洲国产精品久久久久婷婷老年 | 亚洲欧美精品在线| 欧美日韩大片一区二区三区| 亚洲黄色一区| 亚洲精品一区中文| 欧美国产一区二区三区激情无套| 欧美高清免费| 亚洲免费久久| 欧美日韩国内自拍| 在线一区二区视频| 午夜精品久久久久久| 国产精品亚洲产品| 亚洲欧美国产高清| 欧美在线免费观看视频| 国产欧美精品日韩精品| 羞羞视频在线观看欧美| 久久久国产精彩视频美女艺术照福利 | 国产一区二区三区av电影| 午夜精品999| 久久伊伊香蕉| 在线观看日产精品| 蜜桃精品一区二区三区| 亚洲人体1000| 亚洲欧美日韩综合国产aⅴ| 国产精品人人做人人爽| 香蕉成人伊视频在线观看| 久久在线视频| 亚洲巨乳在线| 国产精品毛片a∨一区二区三区|国 | 亚洲最黄网站| 国产精品欧美一区喷水| 性亚洲最疯狂xxxx高清| 欧美jizz19hd性欧美| 日韩亚洲欧美成人一区| 国产精品第十页| 欧美在线高清视频| 亚洲成色最大综合在线| 亚洲一级片在线看| 国产原创一区二区| 欧美激情一区二区| 亚洲欧美激情视频| 亚洲盗摄视频| 午夜亚洲一区| 亚洲国产日韩在线| 国产精品v欧美精品v日本精品动漫 | 亚洲第一福利在线观看| 欧美日韩一级片在线观看| 亚洲欧美第一页| 欧美激情精品久久久久久大尺度 | 欧美日韩国产综合新一区| 午夜精品视频| 亚洲精品一二三| 久久影院午夜论| 亚洲视频在线免费观看| 亚洲第一页在线| 国产精品热久久久久夜色精品三区| 久久午夜激情| 亚洲欧美激情精品一区二区| 亚洲激情在线观看视频免费| 久久国产精品黑丝| 一区二区成人精品| 伊人成人在线| 国产欧美大片| 欧美日韩综合在线免费观看| 久久免费国产精品| 欧美一二三视频| 中文日韩欧美| 日韩午夜视频在线观看| 欧美激情第五页| 久久先锋影音| 欧美专区在线观看一区| 亚洲在线免费| 一区二区三区日韩欧美| 亚洲精品欧美日韩专区| 在线观看亚洲| 精品91视频| 国产午夜精品视频免费不卡69堂| 欧美天堂亚洲电影院在线观看| 欧美大片一区| 欧美1区2区视频| 久久全国免费视频| 欧美在线综合视频| 欧美在线一级va免费观看| 亚洲在线视频一区| 亚洲综合色视频| 亚洲一二三区视频在线观看| 亚洲毛片一区| 日韩一级精品| 一区二区三区欧美日韩| 一区二区三区三区在线| 99精品国产热久久91蜜凸| 亚洲日本欧美天堂| 亚洲精品在线看| 亚洲免费成人av| 亚洲视频大全| 亚洲欧美日韩国产| 欧美专区一区二区三区| 久久激情网站| 久久综合九色欧美综合狠狠| 蜜臀a∨国产成人精品 | 欧美日韩你懂的| 欧美日产国产成人免费图片| 欧美日韩亚洲免费| 国产精品无码专区在线观看| 国产精品无码永久免费888| 国产欧美日韩在线视频| 国产午夜精品久久久久久久| 狠狠88综合久久久久综合网| 在线日韩欧美视频| 99精品视频免费| 亚洲欧美日韩国产综合在线| 欧美有码视频| 欧美大片在线看免费观看| 亚洲高清在线观看| 一本色道久久综合亚洲精品按摩| 亚洲免费在线播放| 久久久久成人精品免费播放动漫| 蜜桃久久av一区| 欧美性感一类影片在线播放| 国产精品主播| 亚洲国产日韩精品| 亚洲无玛一区| 久久久久久电影| 亚洲人午夜精品| 香蕉av福利精品导航| 蜜桃av噜噜一区| 国产精品你懂的在线| 激情久久影院| 亚洲午夜在线观看视频在线| 久久久精品欧美丰满| 亚洲全部视频| 羞羞答答国产精品www一本| 免费成人你懂的| 国产欧美日韩综合精品二区| 亚洲欧洲午夜| 久久精视频免费在线久久完整在线看| 欧美国产精品一区| 亚洲在线一区二区| 欧美激情a∨在线视频播放| 国产精品日日摸夜夜添夜夜av| 亚洲承认在线| 久久精品99无色码中文字幕| 最新国产乱人伦偷精品免费网站| 亚洲欧美日韩精品一区二区| 欧美高清hd18日本| 国内久久精品| 性刺激综合网| 亚洲乱码视频| 美女网站久久| 国内精品久久国产| 亚洲欧美国产精品桃花| 欧美激情一区三区| 久久精品中文字幕一区| 国产精品嫩草影院一区二区| 日韩一级欧洲| 欧美国产日韩一区二区三区| 欧美一区二区私人影院日本 | 另类欧美日韩国产在线| 亚洲午夜高清视频| 欧美区一区二| 亚洲精品国精品久久99热| 久久久噜噜噜久久| 午夜亚洲性色视频| 国产精品久久久久久久午夜| 中日韩高清电影网| 亚洲激情图片小说视频| 狼人天天伊人久久| 亚洲第一中文字幕| 久久欧美肥婆一二区| 欧美在线二区| 国产一区二区三区在线观看精品 | 亚洲精品日韩精品| 欧美国产亚洲视频| 亚洲精品久久久久久一区二区 | 女人色偷偷aa久久天堂| 久久精品1区| 国产三级精品三级| 久久爱91午夜羞羞| 性欧美1819性猛交| 国产亚洲成精品久久| 久久精品九九| 欧美影视一区| 影音先锋久久精品| 亚洲电影专区| 欧美激情免费观看|