指示權杖
指令權杖會通知驅動程式要執行的特定作業,並且由下列位組成:
位
[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) 。
評論
如需可在指令權杖 0 到 15 位中指定之作業的詳細資訊,請參閱最新 DirectX SDK 檔中的圖元著色器參考和頂點著色器參考。
DirectX3D 執行時間從應用程式接收著色器程式碼之後,執行時間會在將程式碼傳遞至驅動程式之前驗證程式代碼。 一般而言,執行時間會使用 「D3DSIO_」 前置片語譯工具指令,以建立作業程式碼。 例如,下列組合器指令會對應至核心模式作業:
組合器指令 | 核心模式作業 |
---|---|
新增 |
D3DSIO_ADD |
mov |
D3DSIO_MOV |
sub |
D3DSIO_SUB |
tex |
D3DSIO_TEX |
texcoord |
D3DSIO_TEXCOORD |
請注意,在所有頂點著色器版本中, 子 組合器指令會實作為D3DSIO_ADD作業,並將來源修飾詞 (位 27:24) 設為否定 (0x1) 。
tex 和texcoord指令適用于圖元著色器 1_0 到 1_3 版;每個指令都有一個與其相關聯的目的地參數。
texld和texcrd指令是圖元著色器 1_4 版和更新版本的新功能;每個指令都有與其相關聯的目的地和來源參數。
執行時間會將 tex 和texld組合器指令轉換為D3DSIO_TEX核心模式作業。 執行時間會將 texcoord 和 texcrd 組合器指令轉換為D3DSIO_TEXCOORD核心模式作業。 驅動程式會先驗證著色器程式碼的圖元著色器版本,然後據以處理指示。 例如,如果驅動程式使用D3DSIO_TEX作業來確認它收到 1_4 版圖元著色器程式碼,驅動程式會判斷目的地和來源參數是否遵循指示權杖。
需求
可在 Windows Vista 和更新版本的 Windows 作業系統中使用。