DirectX Shader 入门学习
? ? shader,英文意思是,著色器、著色程序。
? ? Shader就是一段可以改變像素和頂點的小程序,這個Shader小程序可以為場景添加一些基本的幾何學特效。例如湖水的漣漪,它會讓特定的藍色材質發生移動、扭曲和倒映,這樣就會給人波光粼粼的感覺了。若是要將一個物體渲染成玻璃的風格,它就會讓一些材質發生透明和扭曲。
DirectX9 著色器學習1
? ? 高級著色器語言(High-level shading Language, HLSL)。
1.編寫著色器代碼
? ? ?寫在txt文本中,主程序調用讀取文本,在編譯時使用相關代碼。
2.編譯HLSL著色器
3. 調用D3DCompileShaderFromFile
? ? ? hr ?= D3DXCompileShaderFromFile(......);
HLSL語言的基本屬性:
(1)函數使用類似C++語法
(2)參數總是按值傳遞
(3)遞歸不被支持
(4)函數總是inline的
DirectX9 中的著色器包括:Vertex shader 和 Pixel shader。
首先學習頂點著色器VS,它替換了固定功能管線中的變換(Transformation)和光照(Lighting)階段。
使用頂點著色器的步驟:
1.編寫并編譯頂點著色器;
? ? ? ?(D3DXCompileShaderFromFile()返回已編譯著色器代碼的指針,作為step2的輸入)
2.創建一個IDirect3DVertexShader9接口以引用已編譯的著色器代碼上的頂點著色器;
? ? ? (CreateVertexShader((DWORD*)shader->GetBufferPoint(),&ToonShader),返回一個接口指針,作為step3的輸入)
3.用IDirect3Device9::SetVertexShader方法使用這個頂點著色器。
? ? ?(Device->SetVertexShader(ToonShader);)
4.銷毀頂點著色器
? ? ? ?(d3d::Release<IDirect3DVertexShader9 *>(ToonShader);)
DirectX 10的Geometry Shader
除了專門處理像素的Pixel Shader和專門處理多邊形頂點的Vertex Shader之外,DX10中還加入了一個Geometry shader,專門用來處理場景中的幾何圖形。Vertex Shader每一次運行只能處理一個頂點的數據,并且每次只能輸出一個頂點的結果。
Geometry shader幾何著色器工作在頂點與像素著色單元之間,當顯卡中的頂點著色單元生成頂點信息之后,就會將這些結果交給幾何著色器來構成更為復雜的幾何圖形,最后交由像素著色器來為這些幾何圖形添加各種材質。
總結
以上是生活随笔為你收集整理的DirectX Shader 入门学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++虚函数Demo - Win32 版
- 下一篇: C++ const成员Demo - Wi