初学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
则会按照当前着色器代码的相对路径搜索对应的头文件并包含进来