Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Optimization 如何在GLSL代码中激活用户属性?优化(关闭)不工作_Optimization_Attributes_Glsl - Fatal编程技术网

Optimization 如何在GLSL代码中激活用户属性?优化(关闭)不工作

Optimization 如何在GLSL代码中激活用户属性?优化(关闭)不工作,optimization,attributes,glsl,Optimization,Attributes,Glsl,顶点着色器: #version 150 in vec3 MCVertex; in float pointvar; uniform mat4 MVMatrix; uniform mat4 MPMatrix; void main() { gl_Position = MPMatrix * MVMatrix * vec4(MCVertex, 1.0); } 我需要'pointvar'属性 但当我打电话时: glGetProgramiv(program, GL_ACTIVE_ATTRIBU

顶点着色器:

#version 150

in vec3 MCVertex;
in float pointvar;

uniform mat4 MVMatrix;
uniform mat4 MPMatrix;

void main()
{
    gl_Position = MPMatrix * MVMatrix * vec4(MCVertex, 1.0);
}
我需要'pointvar'属性

但当我打电话时:

glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, &numAttributes);

numAttribute = 1;
我的代码中有2个属性,numAttribute必须是2

如果我这样做,我可以激活此属性:

gl_Position = MPMatrix * MVMatrix * vec4(MCVertex + vec3(pointvar), 1.0);
然后
numAttributes=2
,是否有其他方法激活此属性?
我尝试了
#pragma优化(off)
,但没有成功。

我很确定GLSL将“擦除/忘记”代码中未使用的任何统一/属性

所有的信息

编辑:

与制服一样,属性可以是活动的,也可以是非活动的。属性 未使用或不活动;它们没有约束力


我真的不明白你为什么要激活一个你根本不用的属性。如果你使用它,它会被激活。那么问题出在哪里呢?我可以激活这个变量,如果它与gl_位置有某种联系,这就是我的意思。通过这个变量,从垂直到碎片,而不是这个变量。我尝试“在浮点角度”和“在mat2 uv_旋转”来分段搜索旋转纹理,但在获取属性位置时,我找不到“点角度”。似乎一些图形卡工作,但我不确定。我知道,这就是为什么我使用gl_Position=MPMatrix*MVMatrix*vec4(MCVertex+vec3(pointvar),1.0);激活我的属性,但我不喜欢这种方式,所以我要求另一种方式。@user1069041:没有其他方式。活动属性的要点是让编译器能够清除不使用的内容。你可以使用所有你想要的
#pragma
s,但是编译器仍然可以自由地删除任何它认为没有使用的属性。简而言之,您必须在代码中考虑到这种可能性。这很糟糕,我只需要在代码中使用点索引,但我发现gl_VertexID在某些图形卡中不起作用,所以我想将属性索引数组传递给我的着色器。。