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

            天行健 君子當(dāng)自強(qiáng)而不息

            創(chuàng)建游戲內(nèi)核(5) 【接口與實(shí)現(xiàn)分離版】

             

            本篇是創(chuàng)建游戲內(nèi)核(4)【接口與實(shí)現(xiàn)分離版】的續(xù)篇,關(guān)于該內(nèi)核的細(xì)節(jié)說(shuō)明請(qǐng)參考創(chuàng)建游戲內(nèi)核(5),這個(gè)版本主要是按照功能劃分模塊的思想,并嚴(yán)格按照接口與實(shí)現(xiàn)相分離的原則來(lái)寫的,沒有用面向?qū)ο蟮乃枷雭?lái)寫,沒有繼承沒有多態(tài)。大家可以對(duì)比兩個(gè)版本,比較優(yōu)劣。

            接口:

            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);
             

            實(shí)現(xiàn):

            //-------------------------------------------------------------------------
            // 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) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            公告

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            隨筆分類(178)

            3D游戲編程相關(guān)鏈接

            搜索

            最新評(píng)論

            亚洲国产日韩欧美久久| 欧美精品乱码99久久蜜桃| 久久国产精品久久精品国产| 久久精品无码一区二区无码| 国产91久久综合| 精品久久亚洲中文无码| 久久综合久久综合久久| 精产国品久久一二三产区区别| 久久福利资源国产精品999| 久久91亚洲人成电影网站| 伊人久久一区二区三区无码| 成人免费网站久久久| 久久久久亚洲精品日久生情| 久久久久国色AV免费看图片| 久久久无码一区二区三区| 亚洲伊人久久综合影院| 久久久噜噜噜久久中文字幕色伊伊| 无码国内精品久久人妻| 久久福利资源国产精品999| 国产精品VIDEOSSEX久久发布| 国内精品伊人久久久久av一坑 | 久久国产免费直播| 精品久久久久久无码人妻蜜桃| 久久久精品人妻一区二区三区蜜桃| 日本亚洲色大成网站WWW久久| 93精91精品国产综合久久香蕉| 久久棈精品久久久久久噜噜| 亚洲精品无码专区久久久| 久久精品国产亚洲AV忘忧草18| 欧美日韩成人精品久久久免费看| 久久WWW免费人成—看片| 亚洲综合精品香蕉久久网97| 久久久久免费精品国产| 久久99精品久久久久久| 青青热久久综合网伊人| 国产亚州精品女人久久久久久 | 精品国产乱码久久久久久呢 | 青青国产成人久久91网| 久久久综合九色合综国产| 亚洲国产精品久久久久婷婷老年 | 无码国内精品久久人妻|