007-008 Direct3D与HLSL.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
007-008 Direct3D与HLSL

2006 《网络游戏客户端编程-高级开发应用》 专业教程 理论讲解部分 Ver 3.1 2.3 HLSL中的释义 2.3.1 释义的概念   释义(对应的英文单词是annotation,可以翻译为注释、评注等)是HLSL中一种特殊的语法。释义与注释只是一字之差,但是功能特点完全不同:   (1)在HLSL中,注释是以“//”或者“/* */”来标注的,而释义则是以“ ”来标注的。   (2)释义的作用也和注释不一样,注释是写给写代码的或读代码的人看的,用于帮助理解程序,注释内容在代码被编译成目标代码之后就不再存在了。但是释义就不同了,释义会被编译器特殊处理并且保存起来。   (3)释义不能和注释一样像写文本似的随便写,释义只能是由变量和值组成。 2.3 HLSL中的释义 2.3.1 释义的概念 释义和语义的区别:   语义只能是在变量后面添加,只能针对变量,并且只能是一个字符串。而释义则不但可以加在变量之后,而且还可以加在函数之后、采样之后、technique和pass等之后。很明显,释义的使用范围比语义要广泛,不过他们在功能上并不冲突。 2.3 HLSL中的释义 2.3.1 释义的概念 float4 mLightColor : LIGHTCOLOR //释义本灯光的名称为Main Light string strLightName = “Main Light”; = { 1.0f, 1.0f, 1.0f, 1.0f }; 上例中的释义有一句注释,然后就用string关键字定义了一个名为strLightName的变量,并赋值为“Main Light”。在释义段里只能定义变量和使用注释,不能随便地写其他内容。 2.3 HLSL中的释义 2.3.1 释义的概念 float mLightIntensity : LIGHTINTENSITY //释义本灯光的名称为Main Light string strLightName = “Main Light”; //定义值的范围 float fMinValue = 0.0f; float fMaxValue = 1.0f; = 0.35f; 释义应该被放置在变量名称之后,如果变量有语义定义,则释义要放在语义之后,但是在变量的初值之前。释义中的每一组变量定义都需要用“;”隔开。 2.3 HLSL中的释义 2.3.1 释义的概念 再来看一个更全面的例子 float4x4 mWorldViewProj : WORLDVIEWPROJECTION; float BlurWidth string UIName = Blur width; string UIWidget = slider; float UIMin = 0.0f; float UIMax = 10.0f; float UIStep = 0.5f; = 2.0f; 2.3 HLSL中的释义 2.3.1 释义的概念 float4 vs_main(float4 position : POSITION) : POSITION string description = “VertexShader主函数”; { return mul(position, mWorldViewProj); } technique bloom float4 TargetColor = { 0, 0, 0, 0 }; bool ClearTarget = true; { 2.3 HLSL中的释义 2.3.1 释义的概念 pass p0 string Object = “Sphere”; float ScaleRate = 3.0f; { VertexShader = compile vs_2_0 vs_main(); PixelShader = NULL; } } 2.3 HLSL中的释义 2.3.1 释义的概念 通过前面这些例子,总结一下释义的特点: (1)释义可以用在变量、采样、函数、technique、pass后面; (2)释义范围内只能是定义变量和编写注释,不能写其他的内容。 释义的目的是辅助定义,用于告知主程序如何处理相关内容。相对于语义来说可以提供更多的信息。并且释义由主程序自行处理,编译器只是负责收集的工作。 2.3 HLSL中的释义 2.3.2获取释义信息   知道了释义及其特点之后,该如何使用这些内容呢?   其实释义中的每一条记录都是一个变量的定义,不会有别的内容,因此每一

您可能关注的文档

文档评论(0)

yurixiang1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档