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

戰魂小筑

討論群:309800774 知乎關注:http://zhihu.com/people/sunicdavy 開源項目:https://github.com/davyxu

   :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  257 隨筆 :: 0 文章 :: 506 評論 :: 0 Trackbacks

最近使用材質節點生成HLSL代碼并開始編譯,也順手開始搭建一個正規的Shader包含及編譯流程,所以用到了D3DXCompileShader及ID3DXInclude

ID3DXInclude的使用方法在OGRE 1.65(或者類似的版本)的OgreD3D9HLSLProgram.cpp中有源代碼可供參考

        STDMETHOD(Open)(D3DXINCLUDE_TYPE IncludeType,
            LPCSTR pFileName,
            LPCVOID pParentData,
            LPCVOID *ppData,
            UINT *pByteLen
            )

此函數發生在代碼中有#include XXX時, FileName就是XXX

ppData需要由用戶提供FileName對應的源碼內容,ANSI格式

pByteLen是代碼長度

STDMETHOD(Close)(LPCVOID pData)

此函數的pData既是Open中提供的ppData, 用戶可以用于自行釋放內存等操作

 

本來按照正常流程, HLSL代碼應該可以正常編譯,我的HLSL功能大概描述:

Material.hlsl 提供基礎光照模型函數

Material_Generated.hlsl 由材質節點生成的代碼,包含Main入口, #include "Material.hlsl"

結果D3DXCompileShader報了一個莫名其妙的錯誤,找不到Main入口. 找了很久都沒發現代碼有什么問題. 于是開始回看OGRE代碼,發現了大俠們的一句救命留言:

// copy into separate c-string
// Note - must NOT copy the null terminator, otherwise this will terminate
// the entire program string!
馬上查閱我的代碼,為LoadFileToString函數添加一個參數,是否添加終結符0
    bool LoadFileToString( const char* FileName, AString& Content, bool TerminateString )
    {
        wchar Buffer[MAX_PATH];
        FileStream TFile;
        if ( !TFile.Open(StringConverter::AnsiToUnicode( Buffer, MAX_PATH, FileName), FAM_Read ) )
        {
            return false;
        }
 
        dword FileSize = TFile.GetSize();
 
        Content.resize( FileSize + (TerminateString ? 1: 0) );
        TFile.ReadBuffer( (void*)Content.data(), FileSize * sizeof( char ) );
 
        if ( TerminateString )
            Content[FileSize] = 0;
 
        return true;
    }

D3DXCompileShader的Source 是需要終結的源碼, 但是在ID3DXInclude的實現類Open函數中,返回給ppData的,堅決不能有終止符0.

 

總結:

   HLSL的代碼編譯過程是依賴#include將不同的文件碎片組合到一起后才開始解析,因此用戶提供的字符串尾部帶有終結符, 編譯器是沒有理由為你檢查數據的正確性的.去掉包含終結符才是正確的做法

posted on 2010-06-18 17:01 戰魂小筑 閱讀(1706) 評論(0)  編輯 收藏 引用 所屬分類: 渲染 Shader 引擎
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲第一天堂av| 亚洲尤物在线| 亚洲精品乱码久久久久久黑人| 国产精品毛片高清在线完整版| 国产欧美一级| 在线视频一区观看| 中日韩视频在线观看| 黑人巨大精品欧美一区二区小视频 | 亚洲精品女人| 亚洲午夜精品| 亚洲精品中文字幕在线| 在线精品在线| 中国亚洲黄色| 久热爱精品视频线路一| 91久久久久| 亚洲一区综合| 欧美一区二区精品久久911| 亚洲欧美国产精品专区久久| 欧美一级片一区| 亚洲一区二区三区四区五区黄| 一本色道久久综合亚洲精品按摩| 欧美一级专区| 亚洲人成网站影音先锋播放| 亚洲欧美不卡| 欧美日韩视频| 亚洲精品日韩在线| 久久精品一区蜜桃臀影院| 亚洲伦理在线观看| 免费久久99精品国产| 国产手机视频一区二区| 亚洲视频一区二区免费在线观看| 另类图片国产| 欧美亚洲专区| 国产亚洲制服色| 久久久久久久999精品视频| 亚洲午夜国产成人av电影男同| 久久一日本道色综合久久| 国产精品亚洲а∨天堂免在线| 亚洲专区在线| 亚洲欧美日韩精品久久久久| 国产精品成人一区二区三区吃奶 | 久久精品日韩欧美| 国产精品视频一二| 亚洲欧美日产图| 欧美一区二区女人| 精品1区2区| 亚洲国产日韩欧美在线99 | 亚洲欧美日韩国产成人| 国产精品久久久久av免费| 亚洲欧美日韩另类精品一区二区三区 | 亚洲视频在线视频| 欧美日韩一区二区三区在线视频| 99精品久久久| 午夜国产精品视频免费体验区| 国产亚洲精品久久飘花| 亚洲福利视频一区二区| 欧美深夜福利| 欧美激情国产日韩| 国产精品久久久久三级| 欧美成人一区二区三区在线观看| 欧美精品三级| 毛片一区二区三区| 国产精品免费网站| 亚洲黄色av| 亚洲高清123| 欧美一区二区在线播放| 亚洲视频一区| 欧美四级剧情无删版影片| 欧美jizz19性欧美| 在线观看一区二区视频| 欧美一级淫片播放口| 亚洲一区www| 欧美日韩国产精品一卡| 欧美激情按摩| 亚洲激情偷拍| 久久综合九色综合网站| 久久精品亚洲精品| 国产美女一区二区| 亚洲欧美大片| 久久国产精品黑丝| 国产一区美女| 欧美在线影院| 六月婷婷久久| 亚洲毛片在线观看| 欧美性猛交一区二区三区精品| 亚洲人成在线观看一区二区| 久久精品国产精品亚洲| 久久久国产精品一区二区三区| 国产九色精品成人porny| 欧美在线网站| 亚洲区国产区| 久久se精品一区精品二区| 国产一区二区三区丝袜| 男男成人高潮片免费网站| 日韩视频免费看| 久久免费黄色| 亚洲欧美激情一区| 亚洲九九精品| 蜜桃av一区二区| 久久er精品视频| 欧美r片在线| 亚洲精品在线一区二区| 亚洲制服丝袜在线| 国产欧美一区二区精品性| 91久久久亚洲精品| 日韩亚洲在线| 亚洲一区尤物| 欧美成人午夜免费视在线看片 | 毛片一区二区| 91久久精品网| 久久在线视频| 亚洲欧美一区二区三区在线| 亚洲激情综合| 亚洲第一精品电影| 国产视频一区三区| 国产精品久久久久久久久久妞妞 | 亚洲天堂男人| 欧美伦理影院| 久久久久久免费| 久久久在线视频| 久久久精彩视频| 美女精品网站| 欧美日韩一本到| 国产精品美女久久久久久2018| 欧美伦理a级免费电影| 欧美日韩免费精品| 国产精品久久久一区二区三区| 国产精品美女久久久久av超清 | 亚洲一区二区高清| 亚洲一区国产精品| 久久精品色图| 亚洲激情综合| 亚洲欧美日韩综合aⅴ视频| 欧美伊久线香蕉线新在线| 卡通动漫国产精品| 欧美精品一区二区三区在线播放| 欧美色图天堂网| 亚洲国产成人久久| 一区二区三区av| 久久综合久久综合九色| 亚洲精品综合精品自拍| 午夜精品av| 欧美日韩一区二区精品| 影音先锋成人资源站| 亚洲欧美清纯在线制服| 蜜桃av综合| 午夜性色一区二区三区免费视频| 久久中文在线| 国产精品一级久久久| 亚洲欧洲一区二区天堂久久 | 国产精品日韩在线观看| 91久久精品国产91久久性色tv| 欧美亚洲一区| 亚洲小视频在线观看| 亚洲精品女av网站| 男人的天堂成人在线| 久久av二区| 国产精品www网站| 亚洲精品少妇| 亚洲小视频在线观看| 国产精品久久久久久久久免费桃花| 一区二区国产在线观看| 亚洲欧美卡通另类91av| 国产日韩av在线播放| 久久嫩草精品久久久久| 91久久久久| 一区二区三区久久| 国产视频观看一区| 美女久久一区| av72成人在线| 久久亚洲精品中文字幕冲田杏梨| 亚洲国产日韩欧美在线图片| 欧美日韩一区在线播放| 欧美专区中文字幕| 亚洲人成在线播放| 久久久久久久久久久成人| 亚洲精品1区2区| 欧美婷婷在线| 久久免费国产精品| 中文亚洲视频在线| 欧美国产一区视频在线观看| 亚洲一二三四久久| 亚洲成色777777女色窝| 欧美性猛交99久久久久99按摩| 久久精品最新地址| 亚洲一区二区三区激情| 亚洲大胆美女视频| 亚洲欧美日韩精品久久久久| 在线播放豆国产99亚洲| 欧美日韩在线一区二区三区| 久久综合伊人77777麻豆| 亚洲一区二区三区中文字幕在线| 欧美成年人视频| 久久aⅴ国产紧身牛仔裤| 一本高清dvd不卡在线观看| 中国av一区| 欧美1区2区3区| 亚洲欧美一区二区原创| 亚洲电影激情视频网站| 性娇小13――14欧美|