• <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>

            天行健 君子當自強而不息

            創建游戲內核(5) 【接口與實現分離版】

             

            本篇是創建游戲內核(4)【接口與實現分離版】的續篇,關于該內核的細節說明請參考創建游戲內核(5),這個版本主要是按照功能劃分模塊的思想,并嚴格按照接口與實現相分離的原則來寫的,沒有用面向對象的思想來寫,沒有繼承沒有多態。大家可以對比兩個版本,比較優劣。

            接口:

            void update_world_matrix(BOOL use_billboard, D3DXMATRIX* mat_world, 
                
            const D3DXMATRIX* mat_scale, const D3DXMATRIX* mat_rotation, const D3DXMATRIX* mat_translation,
                
            const D3DXMATRIX* mat_combine1, const D3DXMATRIX* mat_combine2);
             

            實現:

            //-------------------------------------------------------------------------
            // Update world transformation matrix.
            //-------------------------------------------------------------------------
            void update_world_matrix(BOOL use_billboard, D3DXMATRIX* mat_world, 
                
            const D3DXMATRIX* mat_scale, const D3DXMATRIX* mat_rotation, const D3DXMATRIX* mat_translation,
                
            const D3DXMATRIX* mat_combine1, const D3DXMATRIX* mat_combine2)
            {
                D3DXMATRIX _mat_view, _mat_transposed;

                
            // setup billboarding matrix
                if(use_billboard)
                {
                    
            if(g_d3d_device)
                    {
                        g_d3d_device->GetTransform(D3DTS_VIEW, &_mat_view);
                        D3DXMatrixTranspose(&_mat_transposed, &_mat_view);

                        _mat_transposed._41 = _mat_transposed._42 = _mat_transposed._43 = 0.0;
                        _mat_transposed._14 = _mat_transposed._24 = _mat_transposed._34 = 0.0;
                    }
                    
            else
                        D3DXMatrixIdentity(&_mat_transposed);
                }

                
            // combine scaling and rotation matrices first
                D3DXMatrixMultiply(mat_world, mat_scale, mat_rotation);

                
            // apply billboard matrix
                if(use_billboard)
                    D3DXMatrixMultiply(mat_world, mat_world, &_mat_transposed);

                
            // combine with translation matrix
                D3DXMatrixMultiply(mat_world, mat_world, mat_translation);

                
            // combine with combined matrices (if any)

                
            if(mat_combine1)
                    D3DXMatrixMultiply(mat_world, mat_world, mat_combine1);

                
            if(mat_combine2)
                    D3DXMatrixMultiply(mat_world, mat_world, mat_combine2);
            }

            posted on 2007-10-02 22:15 lovedday 閱讀(187) 評論(0)  編輯 收藏 引用

            公告

            導航

            統計

            常用鏈接

            隨筆分類(178)

            3D游戲編程相關鏈接

            搜索

            最新評論

            久久精品国产99久久久香蕉| 欧美亚洲国产精品久久高清| 精品久久一区二区| 国产A级毛片久久久精品毛片| 久久久久久毛片免费看| 久久精品国产亚洲AV影院| 久久综合久久久| 久久精品国产亚洲av瑜伽| 亚洲综合精品香蕉久久网| 品成人欧美大片久久国产欧美| 久久婷婷五月综合国产尤物app| 69久久夜色精品国产69| 一本久道久久综合狠狠躁AV| 久久精品这里热有精品| 亚洲综合伊人久久综合| 色偷偷91久久综合噜噜噜噜| 国产亚洲欧美成人久久片 | 久久午夜无码鲁丝片| 国产午夜精品理论片久久| 久久久老熟女一区二区三区| 久久夜色精品国产噜噜亚洲a | 精品国产VA久久久久久久冰 | 2021国产精品久久精品| 久久精品国产只有精品66| 丰满少妇人妻久久久久久| 一本久久知道综合久久| 国色天香久久久久久久小说| 无码人妻少妇久久中文字幕| 久久99精品久久久久久齐齐 | 欧美噜噜久久久XXX| 偷偷做久久久久网站| 日韩十八禁一区二区久久| 久久久久久av无码免费看大片| 久久青草国产精品一区| 国产99精品久久| 久久不射电影网| 久久免费精品一区二区| a级毛片无码兔费真人久久| 久久久久国产精品麻豆AR影院| 国产亚州精品女人久久久久久| 91精品国产高清久久久久久国产嫩草|