引言

這個寒假學DirectX11的時候用的書是《Introduction to 3D Game Programming with DirectX 11》,里面關(guān)于Shader的部分全都是用的Effects框架。用起來當然沒什么問題,但我還是想把相關(guān)問題搞清楚,也就是這個框架是如何把HLSL中的各種Shader Object與應用程序中的接口聯(lián)系起來的。比如:

effect->GetVariableByName("WVP")->AsMatrix()->SetMatrix((float*)&WVP);

其中effect是一個ID3DX11Effect*。假設對應的HLSL中的代碼是

cbuffer cbPerObject
{    float4x4 worldMat;    float4x4 WVP;
};

那么這行C++代碼意思就是設置Shader中WVP的值。類似的,通過Effects框架可以方便地設置Shader Resource(Buffer、Texture等)、Sampler State等。如果不使用Effects框架,又該如何設置這些變量呢?

ID3D11DeviceC

網(wǎng)友評論