原创 GLEW配置

下載地址:GLEW binaries是已經編譯好的版本 zip的是可以自己編譯的 將其下載後解壓,文件結構爲: build文件夾下有VS的解決方案: 圖中vc2012爲VS2013的解決方案 我們可以通過打開這個解決方案,然

原创 GLFW配置

下載地址:GLFW 下載32位版本 解壓後的文件結構爲: 將include中的GLFW文件夾拷貝到VS安裝目錄下的VC/include中 若使用VS2013,則將lib-vc2013中的lib文件拷貝到VS2013安裝目錄下的V

原创 法線貼圖與位移貼圖

法線貼圖是一副紋理圖,只是紋理圖上的點保存的不是RGB數據,我們是將壓縮過的x,y,z軸座標保存到red,greed,blue分量中,這個xyz座標定義了一個法線方向 因此法線貼圖的每個像素都保存了一個法線向量。下圖顯示了一個形象的nor

原创 c++實時變量的作用域

c++中我們經常定義實時變量,如: for(int i = 0; i < 10; i++) { //.... } 這裏就定義了一個實時變量i,作用域爲整個for循環 那麼這麼一段代碼呢: while((char c = c

原创 Ambient Occlusion

在以往的光照模型中,我們沒有考慮間接光 以往的環境光照模型爲:A=La∗ma La 表示物體接受到的間接光的總量 ma 表示物體的材質,指定了射入環境光的反射和吸收的數量 並且認爲光線從各個方向均勻的入射到物體表面 但這

原创 構造與銷燬順序

現在我們來看看c++在構造函數時的構造順序 代碼如下: #include <iostream> class A { public: A() { printf("創建A\n"); }

原创 DirectX 11 Particle System With StreamOut

編寫DirectX 11 應用程序時,我們通常是將數據發送到GPU,然後在GPU中對數據進行計算,處理,渲染出圖像 但當我們需要從GPU中獲得數據該怎麼辦,SteamOut,顧名思義,可以將GPU中的數據流輸出到CPU中 在設計粒子系統

原创 GeometricToolsEngine分析之HLSLDefiner

該類是對於D3D11_SHADER_MACRO的封裝。 typedef struct _D3D_SHADER_MACRO { LPCSTR Name; LPCSTR Definition; } D3D_SHADER_MACRO,

原创 DirectX 錯誤總結

寫公告板的時候,GeometryShader中寫了這樣一段代碼 cbuffer MatrixBuffer { float4x4 gViewProj; float3 gEyePosW; }; cbuffer cbFixed {

原创 char* a 與 char a[] 以及常量指針,指針常量

常量指針與指針常量 常量指針 :指向常量值的指針,指針本身值可變,但是指針所指向的內容不可更改 指針常量:指針值是一個常量,即指針值不可變,但指針所指向的內容可以變 如: int a = 9; int const * ptr

原创 筆記----DX11.0轉爲DX11.2

在DX11.2中已經移除了D3DX,xnamath等文件 數學庫由DirectXMath,D3DX由DirectXTK,DirectXTex代替 DirectXTex:點擊打開鏈接 DirectXTK:點擊打開鏈接 以下列舉

原创 部署到win8上的openframeworks

微軟發佈了一套用於部署到win8上的openframeworks庫,可以用於編寫universal程序~ 於是迫不及待的想要試一試~ 於是用example/gl/textureScreengrabExample的代碼: void ofA

原创 CubeMap

當我們實現天空盒,天空球的時候經常會用到這個技術 當我們要得到某點p的顏色值時,從天空盒的中心指向某點p的射線和天空盒相交,相交點採樣的紋理值就是p點的顏色值 在HLSL中,我們使用TextureCube來保存這種紋理 當我們想

原创 HLSL注意事項

Visual Studio可以新建.hlsl文件 如新建VertexShader 在上圖中我們還會看到有HLSL標頭文件,該文件用於放公用的自定義函數 如: 標頭文件的後綴名是.hlsli 查看其屬性會發現該文件不參與生成

原创 IASetVertexBuffer , IASetIndexBuffer

void IASetVertexBuffers( [in] UINT StartSlot, [in] UINT NumBuffers, [in] ID3D11Buffer *const *ppVertexBuffers,