• <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++博客 首頁 新隨筆 聯系 聚合 管理
              48 Posts :: 20 Stories :: 57 Comments :: 0 Trackbacks
            流水帳,隨手記下:
            • 直到現在我才明白,CGCGCGFXCGFXCG是一種語言,CGFX是一套編程模型,而我們要做的是封裝cgFX,有了CGFX就有更強的一種表達,可以對不同的Profile指定配置,可以設定openGL state
            • 對于D3D的繪制方式而言,是根據名字得到Technique的句柄,然后每次繪制Mesh前設定生效的Technique,在遍歷該Technique下的所有Pass,逐一進行繪制;
            • 那么對于OpenGL來說,我們只知道在CreateProgram的時候指定一個入口函數,那對于具有多個Technique的情況我們還不知道怎么進行切換,是用兩個Program表示呢,還是調用什么參數可以切換?
            • 但是不管怎么表示,從概念上是應該允許像D3D那樣指定的,即在某一個Mesh繪制前指定用某一個Effect的某一個Technique,甚至Pass
            • 后來查到在cg1.2發布的cg_tookit里邊提供了CgFx的很好的支持,能夠想D3D Effect格式那樣ICgFxEffect->setTechnique(),有pass->begin(),pass->end()這種方法,但是不知道為什么到cg1.4把這些東西去掉了。在cgReleaseNote里邊寫到:
              • Complete rewrite of CgFX, including an API integrated with the Cg runtime API, support for extensible, cross-platform graphics state management, and support for unsized arrays and interfaces.
            ??? 就是說重寫了,跟以前不一樣兒了,后邊給了對于使用CgFx庫的說明:
            • Applications and effects that used previous versions of CgFX will require modification.Applications that use CgFX will have to be modified to use the new CgFX API. If the supplied OpenGL state manager for CgFX is used, the effect files themselves must be modified. The effects must be changed to use OpenGL state assignments, rather than the D3D state assignments supported in prior versions of CgFX. A subsequent release of Cg will provide D3D and cross-platform state managers for CgFX.
            • CgFX has been redesigned and re-implemented. As noted above, existing applications that use CgFX must be modified if the new API is to be used. In addition, if you wish to use the supplied “native” OpenGL state manager, which assumes that OpenGL-style state names and vales are used in effects, existing effects must be modified to use OpenGL-style states. See the “Introduction to CgFX” chapter in the Cg Users Manual for more details. If you have questions or problems related to porting existing CgFX applications, please contact NVIDIA developer relations.
            太惡心了,就是說原來如果你用了很好實現的CgFx,現在對不起,不能用了。所以我看到的早期的使用cg1.2的nebula2都封裝了CGFX,但是到了1.4不知道為什么,發布的CG_tookit里邊卻去掉了這個CGFX的運行庫。nebula2新的版本也去掉了CGFX,只剩下D3DShader的支持。
            上邊這段話最后說如果有問題,聯系Nvidia developer relations。我想一想也沒有辦法了,去問wj大牛都不知道怎么回事兒,那只好去問一下了,結果到了nvidia developer網站上也差不到可以直接問誰,還填了一張表注冊了一個用戶,現在還沒有被批下來。最后實在等不及了,去論壇上問吧。下面幾個地址,沒準兒有熟知cg的人可以答復一下.

            http://www.gamedev.net/community/forums/topic.asp?topic_id=389475

            ?

            http://www.smth.org/bbscon.php?bid=50&id=43518

            ?

            http://www.smth.org/bbscon.php?bid=197&id=50169

            ?

            http://forums.nvidia.com/index.php?showtopic=13875


            再看看Nvidia到底怎么說的:
            • Cg1.1里邊關于cgFX說:

            CgFX beta support for DirectX 8, DirectX 9, and OpenGL

            • Cg1.2里邊關于cgFX說:

            Cg Effects Explained document?

            CgFX beta support for DirectX 8, DirectX 9, and OpenGL

            • Cg1.4.1里邊關于cgFX說:

            Complete rewrite of CgFX, including an API integrated with the Cg runtime API, support for extensible, cross-platform graphics state management, and support for unsized arrays and interfaces.

            • Cg1.5beta里邊關于cgFX說:

            Cg 1.3 and 1.4 style Effects files supported



            • 又考察了openGL2.0GLSL,發現對于繪制的描述感覺跟CG1.4FX的運行庫也差不多,又因為不熟悉,還是回頭看cgFX吧。
            • 裝了cg1.2看原來的文檔,學習筆記如下:
            • cgFX主要提供了三點好處:
              • 不同硬件得以配置(technique,profile)
              • 多遍繪制的描述(pass)
              • 表達了環境信息(state)
            • cgFXmicrosoft FX2.0DirectX9.0Effect格式相似
            • cgFX既可以在openGL又可以在D3D上運行,便于以后擴展
            • 主要方法接口:
            • CgFXCreateEffect,CgFXCreateEffectFromFileA,CgFXCreateEffectCompiler,CgFXCreateEffectCompilerFromFileA
            • CgFXSetDevice,CgFXFreeDevice
            • CGFXHANDLE GetTechnique(UINT index);CGFXHANDLE GetTechniqueByName(LPCSTR name);
            • CGFXHANDLE GetPass(CGFXHANDLE technique, UINT index);CGFXHANDLE GetPassByName(CGFXHANDLE technique, LPCSTR name);
            • CGFXHANDLE GetParameter(CGFXHANDLE parent, UINT index);
            • CGFXHANDLE GetParameterByName(CGFXHANDLE parent, LPCSTR name);
            • CGFXHANDLE GetParameterBySemantic(CGFXHANDLE parent, LPCSTR name);
            • CGFXHANDLE GetParameterElement(CGFXHANDLE parent, UINT element);
            • HRESULT FindNextValidTechnique(CGFXHANDLE hTechnique,CGFXHANDLE *pTechnique);
            • HRESULT SetTechnique(CGFXHANDLE pTechnique);CGFXHANDLE GetCurrentTechnique();
            • HRESULT Begin(UINT* pPasses, DWORD Flags);HRESULT Pass(UINT passNum);HRESULT End();
            • HRESULT CloneEffect(ICgFXEffect** ppNewEffect);
            • HRESULT GetDevice(LPVOID* ppDevice);
            • HRESULT OnLostDevice();
            • HRESULT OnResetDevice();
            • 主要接口:
            • ICgFXBaseEffect
            • ICgFXEffect
            • ICgFXEffectCompiler
            posted on 2006-04-25 23:41 苦行僧 閱讀(1446) 評論(0)  編輯 收藏 引用 所屬分類: graphic
            亚洲AⅤ优女AV综合久久久| 97久久香蕉国产线看观看| 草草久久久无码国产专区| 久久综合狠狠色综合伊人| 品成人欧美大片久久国产欧美...| 国产亚洲色婷婷久久99精品91| 久久久久黑人强伦姧人妻| 国产精品久久婷婷六月丁香| 久久亚洲AV成人出白浆无码国产 | 女人香蕉久久**毛片精品| 国产91久久综合| 三上悠亚久久精品| 国产综合免费精品久久久| 亚洲女久久久噜噜噜熟女| 久久精品国产亚洲一区二区三区| 久久婷婷成人综合色综合| 日韩欧美亚洲国产精品字幕久久久| 精品免费久久久久久久| 精品国产日韩久久亚洲| 国产69精品久久久久9999| 69国产成人综合久久精品| 久久精品国产亚洲AV香蕉| 久久av高潮av无码av喷吹| 国产精品一区二区久久不卡| 亚洲精品乱码久久久久久按摩| 久久久噜噜噜久久| 精品综合久久久久久88小说 | 久久无码高潮喷水| 久久精品亚洲福利| 精品无码人妻久久久久久| 伊人色综合久久| 一本久久a久久精品综合夜夜| 久久精品国产久精国产果冻传媒| 色偷偷88欧美精品久久久| 久久国产成人午夜AV影院| 久久综合久久综合久久综合| 996久久国产精品线观看| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 久久亚洲精品无码aⅴ大香| 久久久久一级精品亚洲国产成人综合AV区| 精品久久久久久亚洲|