我得到了一个带有这些统一变量的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 :(得分:0)
我只为现有应用程序编写插件。
然后你不要。除非您可以访问插件将用于存储这些矩阵的缓冲区对象。
GlobalData
是uniform block;它代表UBO的着色器一侧。 C ++端将统一数据存储在缓冲区对象中。因此,除非您的应用程序允许您访问该缓冲区,否则您无能为力。
您可能能够绑定自己的缓冲区,但除非应用程序旨在允许您覆盖其缓冲区,否则它可能会覆盖您在渲染之前绑定的任何内容。