如何建立ID3DInclude的例項

2021-07-15 08:08:32 字數 1139 閱讀 3378

這篇文章翻譯部落格主人。

在此表示感謝。

為了程式設計師研究生入學申請,我最近正在寫乙個關於directx api的簡單的框架,這個框架可以使得direct xapi更容易使用。由於實時地形生成程式執行在gpu上因此和shader息息相關。

為了使得事情輕鬆愉快,我想要盡可能的將程式與shader抽離開。在某些時候,我會需要在shader中引入多個標頭檔案。為了使得shader檔案在程式執行時編譯,我必須例項化id3dinclude介面。我在網上找了許多資料,後來發現一篇關於adam sawicki非常好的文章,這篇文章幫助我許多,但是這種例項化id3dinclude做法依賴於作者本人所寫的框架。因此我稍加改動,寫下了不依賴於特定框架的例項化id3diclude 介面的方法:

標頭檔案class cshaderinclude : public id3dinclude

hresult __stdcall open(d3d_include_type includetype, lpcstr pfilename, lpcvoid pparentdata, lpcvoid *ppdata, uint *pbytes);

hresult __stdcall close(lpcvoid pdata);

private:

std::string m_shaderdir;

std::string m_systemdir;

};原始檔

const char* gsystemdir = "..\shader";

hresult __stdcall cshaderinclude::open(d3d_include_type includetype, lpcstr pfilename, lpcvoid pparentdata, lpcvoid *ppdata, uint *pbytes)

std::ifstream includefile(finalpath.c_str(), std::ios::in|std::ios::binary|std::ios::ate);

if (includefile.is_open()) else

return s_ok;

}catch(std::exception& e)

}hresult __stdcall cshaderinclude::close(lpcvoid pdata)

oracle中如何建立表的自增ID 通過序列

1 什麼是序列呢?序列是一資料庫物件,利用它可生成唯一的整數。一般使用序列自動地生成主碼值。乙個序列的值是由特別的oracle程式自動生成,因而序列避免了在運用層實現序列而引起的效能瓶頸。oracle序列允許同時生成多個序列號,而每乙個序列號是唯一的。當乙個序列號生成時,序列是遞增,獨立於事務的提交...

ID3DXMesh介面 建立自己的立方體網格

首先建立乙個 id3dxmesh 介面。id3dxmesh 介面的說明可以引數龍書。這裡主要是用 來講解 define vertex fvf d3dfvf xyz d3dfvf tex1 hr d3dxcreatemeshfvf 12,24,d3dxmesh managed,vertex fvf,m...

sqlite3如何建立自動增長字段

1 如何建立自動增長字段?簡短回答 宣告為 integer primary key 的列將會自動增長。長一點的答案 如果你宣告表的一列為 integer primary key,那麼,每當你在該列上插入一null值時,null自動被轉換為乙個比該列中最大值大1的乙個整數,如果表是空的,將會是1。如果...