博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DirectX9 里HLSL的语义Semantics
阅读量:5023 次
发布时间:2019-06-12

本文共 756 字,大约阅读时间需要 2 分钟。

Semantics究竟是什么呢?简单来说,它是描述shader中变量的原数据,用来表示某个变量的语义。

 

Semantics有什么用呢?Shader程序使用Semantics作为标记,实现数据从CPU到GPU的绑定。

对于构建复杂Effect系统来说,Semantics作为DirectX / XNA和shader之间传输数据的纽带,有相当重要的作用。

 

在Semantics出现之前,shader程序员常常直接使用寄存器名来绑定数据。这样做有两个缺点,首先,编译器无法对代码进行优化,其次,维护移植起来也相当不方便。

Semantics隐藏了寄存器的复杂性,所有JCQ的分配都由编译器来为你处理,同时,对外提供了一个统一的接口。

 

DX和HLSL的连接,HLSL和编译器-寄存器的连接。

 

语法:

  

   [ Modifiers] ParameterType ParameterName [ : Semantic] = [ Initializers]

       比如:

       float4x4 WorldMatrix : WORLD;

 

  冒号前面的部分,声明了一个变量myWorldMatrix,你也许希望用它来表示世界坐标变换。但是,编译器对此一无所知,只会把它当作一个普通的float4x4变量来对待。然而,添加了冒号以及标准Semantics WORLD之后,无论变量叫什么名字,编译器都会知道这个变量将被当作坐标变换矩阵来使用。注意,Semantics本身并不区分大小写,只是习惯上用大写表示。

 

语义:shader的明确含义的变量,含义包括位置啊,颜色啊等,这个东西作为shader对外(向上directx,向下编译器)的连接

转载于:https://www.cnblogs.com/yiii/p/5434040.html

你可能感兴趣的文章
【转】ButterKnife基本使用--不错
查看>>
【转】VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”...
查看>>
函数中关于const关键字使用的注意事项
查看>>
微信架构(转)
查看>>
Web项目中的路径问题
查看>>
js随机数的取整
查看>>
关于解析漏洞
查看>>
十大经典预测算法(六)---集成学习(模型融合算法)
查看>>
用php做一个简单的注册用户功能
查看>>
一款基于css3的3D图片翻页切换特效
查看>>
Feign使用Hystrix无效原因及解决方法
查看>>
Sizeof与Strlen的区别与联系
查看>>
hadoop2.2.0_hbase0.96_zookeeper3.4.5全分布式安装文档下载
查看>>
Flutter 贝塞尔曲线切割
查看>>
golang 的编译安装以及supervisord部署
查看>>
easyui源码翻译1.32--Dialog(对话框窗口)
查看>>
阿里架构师,讲述基于微服务的软件架构模式
查看>>
Eclipse导入maven项目时,Pom.xml文件报错处理方法
查看>>
01、JAVA开发准备
查看>>
asp.net mvc 错误处理 - 自定义报错处理,生成错误日志
查看>>