指令标记

指令令牌通知驱动程序要执行的特定操作,由以下位组成:

[15:00] 位 0 到 15 表示 操作代码。 D3DSIO_* 是操作代码的示例,其中 * 表示指令。 例如,以下代码片段显示了 ADD 指令

// D3DSIO_ADD d, s1, s2

[23:16] 位 16 到 23 指示与操作代码相关的特定控件。

[27:24] 对于早于 2_0 的像素和顶点着色器版本,将保留位 24 到 27,并将其设置为0x0。

对于像素和顶点着色器版本 2_0 及更高版本,位 24 到 27 指定指令的 DWORD 的大小,不包括指令标记本身 (,即构成指令的标记数(不包括指令标记) )。

[28] 对于低于 2_0 的像素和顶点着色器版本,将保留位 28 并将其设置为 0x0。

对于像素和顶点着色器版本 2_0 及更高版本,位 28 指示指令是否 (即在着色器代码末尾包含额外的谓词源标记。 如果此位设置为 0x1,则表示指令。

[29] 保留。 此值设置为 0x0。

[30] 对于早于 2_0 的像素着色器版本,位 30 是共同发行位。 如果设置为 1,请使用前面的指令执行此指令;否则,请单独执行。

对于像素着色器版本 2_0 及更高版本以及所有顶点着色器版本,将保留位 30 并将其设置为0x0。

[31] 位 31 (0x0) 为零。

备注

请参阅最新 DirectX SDK 文档中的像素着色器参考和顶点着色器参考,详细了解可在第 0 到 15 位指令标记中指定的操作。

DirectX3D 运行时从应用程序接收着色器代码后,运行时先验证代码,然后再将代码传递给驱动程序。 通常,运行时使用“D3DSIO_”为汇编程序指令添加前缀,以创建操作代码。 例如,以下汇编程序指令对应于内核模式操作:

汇编程序指令 内核模式操作

add

D3DSIO_ADD

mov

D3DSIO_MOV

sub

D3DSIO_SUB

tex

D3DSIO_TEX

texcoord

D3DSIO_TEXCOORD

请注意,在所有顶点着色器版本中, 汇编程序指令都是作为D3DSIO_ADD操作实现的,源修饰符 (位为 27:24,) 第二个源设置为否定 (0x1) 。

textexcoord 指令适用于像素着色器版本 1_0 到 1_3;每个指令都有一个与之关联的目标参数

texldtexcrd 指令是像素着色器版本 1_4 及更高版本的新增功能;每个指令都具有关联的目标和源参数

运行时将 textexld 汇编程序指令转换为D3DSIO_TEX内核模式操作。 运行时将 texcoordtexcrd 汇编程序指令转换为D3DSIO_TEXCOORD内核模式操作。 驱动程序首先验证着色器代码的像素着色器版本,然后相应地处理指令。 例如,如果驱动程序使用D3DSIO_TEX操作验证它是否收到了版本 1_4 像素着色器代码,则驱动程序将确定目标参数和源参数遵循指令标记。

要求

在 Windows Vista 和更高版本的 Windows 操作系统中可用。