2012-08-10 66 views
0

GLSL和CG工具包根本不足以滿足我的需求,看起來我唯一的選擇是編寫我自己的編譯器。我基本上需要一個二進制着色器結構的圖表,所以我可以從腳本自己構建它。如何構建我自己的opengl着色器編譯器?

編輯:好吧我想我正在尋找的是arb程序集的二進制結構。

+3

他們怎麼沒有足夠的? +這將是一項非常艱鉅的任務,就像*非常難* – 2012-08-10 19:53:21

+0

將您自己的着色器解析爲GLSL/Cg並使用已有的工具進行編譯。否則玩得浪費時間。 – 2012-08-10 19:56:06

+0

你在做什麼不能完成,尤其是OpenGL-OpenCL互操作?我非常想知道。 – Ani 2012-08-10 20:09:11

回答

3

如何構建我自己的opengl着色器編譯器?

你不知道。至少,不是你的意思。

OpenGL沒有定義二進制或彙編交換格式。 OpenGL本身直接將GLSL編譯成對象。即使您可以查詢二進制數據,OpenGL也不提供解釋實際的二進制數據存儲的方法。它依賴於實現。 NVIDIA和AMD將存儲不同的信息,這與英特爾存儲的信息不同。它會改變每一代硬件。等等。

您可以編寫一個編譯器,生成GLSL。但就是這樣。

如果你願意堅持使用NVIDIA,他們一直在保持ARB彙編語言的最新狀態。但顯然,任何這樣的代碼都只能用於NVIDIA。

+0

如果CG是編譯成GLSL的話?如果不是那麼CG如何工作? – SteveDeFacto 2012-08-10 20:21:19

+0

@Steve:定義「工作」? Cg可以通過以下兩種方式之一「工作」:NVIDIA特定的方式將其編譯爲NVIDIA的着色器彙編語言,該語言被編譯爲硬件特定的內部機器語言。 「跨平臺」的方式是將其編譯爲GLSL,然後使用OpenGL的常規工具進行編譯。 – 2012-08-10 20:30:00

+0

@SteveDeFacto:你從未回答過最重要的問題:關於GLSL的「不足」是什麼? – 2012-08-10 20:30:37