2016-12-16 45 views
0

我得到了一個GLSL着色器與統一的變量:GLSL統一區塊 - 如何進入?

#version 150 
layout (shared) uniform GlobalData { 
    uniform mat4 worldMatrix; 
    uniform mat4 projMatrix; 
    // ... 
}; 

如何設置從我的程序這兩個矩陣?不幸的是我不能編輯GLSL代碼,因爲我只爲現​​有的應用程序編寫插件。

我想:

glGetUniformLocation(program, "GlobalData.worldMatrix"); 
glGetUniformLocation(program, "worldMatrix"); 

既不作品。

Teh GlobalData塊有更多的其他制服,我不想改變 - 我所關心的只是worldMatrix。

我該怎麼做?

回答

0

我只爲現有應用程序編寫插件。

然後你不這樣做。除非你可以訪問插件將用來存儲這些矩陣的緩衝區對象。

GlobalDatauniform block;它代表UBO的着色器端。 C++端將統一數據存儲在緩衝區對象中。因此,除非您的應用程序允許您訪問該緩衝區,否則您無能爲力。

您可能可以綁定自己的緩衝區,但除非應用程序旨在讓您覆蓋其緩衝區,否則它可能會覆蓋您在進行渲染前綁定的任何內容。