2011-01-06 16 views
0

我製作了一個HLSL着色器(fx格式),並希望將枚舉/列表參數添加到其UI中 - 作爲布爾標誌列表的更好替代方案。fx/hlsl着色器的下拉UI部件

因此,而不是:

  • [X] 「使用自地圖」
  • [X] 「使用自地圖阿爾法」
  • [X] 「使用漫反射alpha」
  • [X ] 「使用鏡面阿爾法」
  • [X] 「使用正α」

具有:

  • 來源:「使用自定義地圖」]

與所有5種選擇,該指數將所選項目上的代碼級別。

「DirectX Standard Annotations and Semantics Reference」提到了ListPicker小部件,但我找不到任何示例或說明如何使用它。

的問題是:

  • 是否有可能在着色器的UI自定義下拉式窗口小部件?
  • 如何實現它?
+0

着色器沒有UI ...你確定你不是在談論DXUT? – Goz 2011-01-06 14:37:00

+0

FX着色器具有用戶參數(由用戶傳遞而不是應用程序),並且這些參數與UI控件相關聯 - 用戶可以在其中設置/調整參數值。 HLSL(FX)和CGFX是一樣的。 float3參數/控件定義: float3 g_ConstantColor < string UIName =「Constant color」; string UIWidget =「Color」; > = {1.0f,1.0f,1.0f}; flaot3參數/控制定義: 浮子g_ConstantScale < 串UIName = 「恆規模」; string UIWidget =「slider」; float UIMin = 1.0f; float UIMax = 10.0f; float UIStep = 0.25f; > = 1.0f; 等,其中之一是列表/枚舉類型。 – mslaf 2011-01-06 17:17:48

回答

2

SAS允許您設置這些參數,但它完全被着色器本身忽略。它是另一個系統的純粹元數據,當它需要時也可以使用它......它不處理UI的渲染。如果你想要一個UI,那麼你必須閱讀這個語義&註釋數據,並用它來繪製一個UI。無論是或使用識別語義/註釋結構的應用程序...