Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 指没有glGetUniformLocation的制服_C++_Opengl_Glsl_Opengl 3_Opengl 4 - Fatal编程技术网

C++ 指没有glGetUniformLocation的制服

C++ 指没有glGetUniformLocation的制服,c++,opengl,glsl,opengl-3,opengl-4,C++,Opengl,Glsl,Opengl 3,Opengl 4,在我的着色器中,我喜欢使用如下语法: vec3 aPos中的布局(位置=0) 这样我就可以只使用glvertexattributepointer中的index0等,省去了调用glgetAttributeLocation的工作量。我想对uniform值也这样做,但如果我这样做了 layout (location = 2) uniform float offset; 我的顶点着色器无法编译。是否有任何方法可以实现相同的行为而不使用glGetUniformLocation?允许您使用该语法指定着色

在我的着色器中,我喜欢使用如下语法:

vec3 aPos中的布局(位置=0)

这样我就可以只使用
glvertexattributepointer
中的index
0
等,省去了调用
glgetAttributeLocation
的工作量。我想对
uniform
值也这样做,但如果我这样做了

layout (location = 2) uniform float offset;


我的顶点着色器无法编译。是否有任何方法可以实现相同的行为而不使用
glGetUniformLocation

允许您使用该语法指定着色器中的统一位置。因此,您的着色器
#版本需要为430,或者您需要激活着色器中的扩展才能使用此语法。

允许您使用该语法指定着色器中的统一位置。因此,您的着色器
#版本需要为430,或者您需要激活着色器中的扩展才能使用此语法。

哦,我明白了!如果我想以旧硬件为目标,那么制服是否必须使用
glGetUniformLocation
?一般来说,GPU(即使是集成的GPU)不支持4.3有多旧或有多坏?@mememe:这不是真正的硬件功能;这纯粹是API的改变。因此,扩展的可用性完全取决于驱动程序的更新程度。你想支持本身没有的硬件吗?哦,我明白了!如果我想以旧硬件为目标,那么制服是否必须使用
glGetUniformLocation
?一般来说,GPU(即使是集成的GPU)不支持4.3有多旧或有多坏?@mememe:这不是真正的硬件功能;这纯粹是API的改变。因此,扩展的可用性完全取决于驱动程序的更新程度。你想支持本身没有的硬件吗?你考虑过使用UBO而不是普通制服吗?我还不完全熟悉它们,它们在这里有什么好处?你可以使用
std140
布局,这样你就不必查询任何东西了。您还可以通过更新频率更有效地对制服进行分组,并且您还可以对不同的着色器使用相同的UBO,而不必为每个着色器分别更新制服您考虑过使用UBO而不是普通制服吗?我还不完全熟悉它们,他们在这里有什么好处?您可以使用
std140
布局,这样您就不必查询任何东西了。您还可以通过更新频率更有效地对制服进行分组,还可以对不同的着色器使用相同的UBO,而不必为每个着色器分别更新制服