初學DX開發,之前在做簡單幾何體,今天添加光照用了網上流傳較多的LightHelper.fx
然而在個人的VS、PS中直接#include "LightHelper.fx"
卻報錯,網上搜了下也沒找到解決方法
後來對比代碼後發現,需要將原先
D3DCompileFromFile(filePath, nullptr, 0, entry, shaderModel,
shaderFlags, 0, buffer, &errorBlob);
改爲
D3DCompileFromFile(filePath, nullptr, D3D_COMPILE_STANDARD_FILE_INCLUDE, entry, shaderModel,
shaderFlags, 0, buffer, &errorBlob);
即D3D_COMPILE_STANDARD_FILE_INCLUDE
,該字段用於決定如何處理包含文件,若爲0則當fx中遇到include將報錯,而設爲D3D_COMPILE_STANDARD_FILE_INCLUDE
則會按照當前着色器代碼的相對路徑搜索對應的頭文件幷包含進來