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

            實時陰影繪制技術研究

            C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
              48 Posts :: 20 Stories :: 57 Comments :: 0 Trackbacks

            Using CG Runtime Library

            • 因為 Cg runtime 是運行進行編譯和執(zhí)行的接口,所以首先強調預編譯的話,要編譯好多版本,而且對將來的硬件改變不能擴展,沒有使用 cg runtime 來得好
            • 執(zhí)行過程前文介紹過了

            • 可以通過一個 cg 文件使用 CG _SOURCE 來創(chuàng)建 CGProgram ,也可以通過一個 cg 程序使用 CG_OBJECT 來創(chuàng)建一個 CGProgram
            • CGProgram :所有的 cg 設置都是圍繞 CGProgram 展開的,目的就是給繪制設置正確的參數(shù)狀態(tài)。
              • CGbool cgIsProgramCompiled(CGprogram program);
              • cgCompileProgram(CGprogram program);
              • CGprogram cgCopyProgram(CGprogram program);
              • CGprogram cgGetFirstProgram(CGcontext context);

            CGprogram cgGetNextProgram(CGprogram program);但不能保證取出來的順序

            • const char* cgGetLastListing(CGcontext context);獲得最后一個 cgCreateProgram 的結果
            • CGcontext cgGetProgramContext(CGprogram program);

            CGprofile cgGetProgramProfile(CGprogram program);

            CGprofile cgGetProfile(const char* profileString);

            const char* cgGetProfileString(CGprofile profile);

            • const char* cgGetProgramString(CGprogram program,CGenum stringType);
            • CGParameter :關于參數(shù)的函數(shù)很多,可以順次取得參數(shù),也可以通過名稱樹(或者叫命名空間)的形式來綁定參數(shù),并用來設置參數(shù)。
              • CGparameter cgGetFirstParameter(CGprogram program,CGenum namespace);

            CGparameter cgGetNextParameter(CGparameter parameter);

            • cgGetFirstStructParameter() along with cgGetNextParameter():
            • int cgGetArrayDimension(CGparameter parameter);

            int cgGetArraySize(CGparameter parameter, int dimension);

            CGparameter cgGetArrayParameter(CGparameter parameter,int index);

            CGparameter cgGetNamedParameter(CGprogram program,const char* name);

            • CGprogram cgGetParameterProgram(CGparameter parameter);
            • CGenum cgGetParameterVariability(CGparameter parameter);
            • CGenum cgGetParameterDirection(CGparameter parameter);
            • CGtype cgGetParameterType(CGparameter parameter);
            • CGtype cgGetType(const char* typeString);

            const char* cgGetTypeString(CGtype type);

            • const char* cgGetParameterName(CGparameter parameter);
            • const char* cgGetParameterSemantic(CGparameter parameter);
            • CGresource cgGetParameterResource(CGparameter parameter);

            CGresource cgGetResource(const char* resourceString);

            const char* cgGetResourceString(CGresource resource);

            CGresource cgGetParameterBaseResource(CGparameter parameter);

            unsigned long cgGetParameterResourceIndex(CGparameter parameter);

            const double* cgGetParameterValues(CGparameter parameter,CGenum valueType, int* numberOfValuesReturned);

            • CGError :可以使用回調機制處理錯誤,像 glGetError 那樣獲得最后的錯誤,并有各種錯誤的枚舉。
              • CGerror error = cgGetError();

            const char* errorString = cgGetErrorString(error);

            • void MyErrorCallback() {

            const char* errorString = cgGetErrorString(cgGetError());

            }

            cgSetErrorCallback(MyErrorCallback);

            • 上邊算是核心吧,下邊展示一下總體關系圖。

            • 我的理解:

            0,因為openGL最終使用的是program,所以一切都為了控制Program。

            1,可以由file直接生成program,但這種方式不好控制,

            只能一個一個的設置parameter的方式去控制參數(shù),

            對于具有State的fx更是無能為力。

            2,可以由file生成effect,然后通過對于各個Technique的各個Pass的各個State

            的設置和改變來控制Effect,再由effect生成Program。

            3,一種很好的解決狀態(tài)問題的方法就是按照FX封裝State,然后按照State進行排序,

            并使用CallBack函數(shù)的方式一次性的設置當前Program需要的State。

            ?

            現(xiàn)在還不清楚的是 fx 文件中的 Technique Pass 以及各種 State 狀態(tài)是怎么運作,設置到 Program 里邊的。

            posted on 2006-04-21 01:29 苦行僧 閱讀(1487) 評論(0)  編輯 收藏 引用 所屬分類: graphic
            久久婷婷成人综合色综合| 91久久精一区二区三区大全| 国产精品久久久久免费a∨| 亚洲狠狠婷婷综合久久久久 | 久久免费大片| 综合久久给合久久狠狠狠97色 | 亚洲中文字幕久久精品无码喷水| AAA级久久久精品无码片| 久久中文字幕视频、最近更新 | 久久精品亚洲欧美日韩久久| 久久天天躁狠狠躁夜夜96流白浆| 色婷婷久久久SWAG精品| 国产成人精品久久一区二区三区av | 久久久青草青青国产亚洲免观| 狠狠色丁香婷婷久久综合不卡| 国产69精品久久久久9999APGF| 香港aa三级久久三级老师2021国产三级精品三级在 | 久久亚洲精品无码VA大香大香| 国产精品伊人久久伊人电影| 精品久久久无码人妻中文字幕豆芽| 人妻中文久久久久| 97久久精品午夜一区二区| 久久强奷乱码老熟女网站 | 国产成人综合久久综合| 无码AV波多野结衣久久| 国产精品99久久久精品无码| 久久久精品国产| 久久久精品无码专区不卡| 97精品伊人久久大香线蕉app| 国产精品对白刺激久久久| 久久久亚洲欧洲日产国码是AV| 久久中文字幕人妻熟av女| 久久久久亚洲AV综合波多野结衣| 亚洲精品97久久中文字幕无码| 久久综合九色欧美综合狠狠 | 亚洲精品乱码久久久久久蜜桃不卡 | 伊人久久大香线蕉av一区| 97香蕉久久夜色精品国产 | 国产成人精品久久亚洲| 精品久久久久国产免费| 久久久久无码中|