2013-11-24 36 views
4

我的問題是 - 如何將庫導入到OpenGL GLSL着色器中?我的意思是 - 是否有OpenGL本身支持的方式,而不是API連接字符串以將着色器代碼與庫代碼混合的外觀。如何在OpenGL中導入庫GLSL

+0

Thx爲您的問題和@ MikeMx7f答案,但在我看來,現在有適當的方式來使glsl文件moduaar一些。我也只是發佈了一個問題:http://stackoverflow.com/questions/20604221/how-to-make-glsl-shaders-modular-without-using-string-manipulation。 – Diversity

回答

5

沒有擴展名的OpenGL本身不支持這種方式。許多包裝OpenGL的引擎都添加了自己的預處理器來處理#include宏來解決這個問題,但這符合「爲了將着色器代碼與庫代碼混合而連接字符串的API的外觀」。

ARB_shading_language_include擴展提供了此功能的OpenGL版本,但可能無法在您的特定機器上使用。有關此擴展的概述,請參閱此問題:How to Using the #include in glsl support ARB_shading_language_include

1

存在沒有真正的解決方案。

但我想我知道是什麼問題:

的問題是,每個着色器是完全相關的 它的客戶端代碼:每個着色器程序,使絕對沒有 感覺沒有它的客戶端程序。

看起來像聲明性語言集成到OOP或任何 langiage。

因此,這不是GLSL的問題,它是客戶端語言的問題 例如, C++,Java(Android)到 解決這個問題。但只是我的意見。

+0

我不一定同意這一點。有一些原因可能導致您想要在許多不同的着色器之間共享代碼 - 例如,某些數學函數不是由GLSL提供的,或者您可能想要執行HSV到RGB的轉換。 –