GeometricToolsEngine分析之HLSLDefiner

本文分析了GeometricToolsEngine中关于HLSLDefiner的实现,它封装了D3D11_SHADER_MACRO,提供方便的宏管理。通过创建宏容器并设计一系列接口如Set*(),使得在Shader中操作宏变得更加简洁。
摘要由CSDN通过智能技术生成

该类是对于D3D11_SHADER_MACRO的封装。

typedef struct _D3D_SHADER_MACRO {
  LPCSTR Name;
  LPCSTR Definition;
} D3D_SHADER_MACRO, *LPD3D_SHADER_MACRO;

shader macro是用于描述shader中的宏

用法如下:

D3D11_SHADER_MACRO Shader_Macros[] = { "zero" , "1"};
描述了一个名称为zero的宏,value为1


该类对其进行了封装,以便更好的对shader中的宏进行管理

其通过定义一个容器用于保存所有的宏

struct GTE_IMPEXP Define
{
    DefineType type;
    std::string name;
    std::string value;
};

std::vector<Define> mDefines;

并且定义了一系列的接口Set*()用于添加宏

HLSLDefiner& SetInt(std::string const& name, int value);
HLSLDefiner& SetUnsignedInt(std::string const& name, unsigned int value);
HLSLDefiner& SetFloat(std::string const& name, float value);
HLSLDefiner& SetDouble(std::string const& name, double value);
HLSLDefiner& SetString(std::string const& name, std::string const& value);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值