我想知道是否有一种方法可以在顶点着色器中判断顶点属性是否启用?我知道如果禁用了顶点属性,所有值都将被视为0.0,因此我可以进行以下测试:
if (attribute == 0)
{
// Do something different to normal.
}
else
{
// Use the attribute.
}
但是,对于启用属性且将值设置为0的情况,这会带来明显的问题(它将被视为未启用)!
另一个解决方案是使用一个统一变量来表示是否使用属性,但我想知道GLSL中是否有任何内置内容可以做到这一点?
glVertexAttrib
设置为此值即可。因此,您不需要额外的布尔值。 - Christian RauglVertexAttrib
函数会设置每个顶点将要使用的值吗?例如,如果我调用了glVertexAttrib1f(3, -1.0f)
,那么位于位置3的所有顶点属性都将被设置为-1.0f? - James Bedford