我想知道 GL_TEXTURE_2D 在着色器中是否处于活动状态。
我将颜色绑定到着色器以及活动纹理(如果设置了 GL_TEXTURE_2D)并且需要将这两者结合起来。
因此,如果绑定了纹理,则混合颜色和纹理(sampler2D * color),如果没有绑定纹理,则使用颜色。
或者我应该采取另一种方式来解决这个问题?
'GL_TEXTURE_2D 处于活动状态'或'GL_TEXTURE_2D 已设置'的意思还不太清楚。
请注意以下事项:
glEnable(GL_TEXTURE_2D)
对您的(片段)着色器没有影响。它将您刚刚通过使用片段着色器替换的管道的固定功能部分参数化。textureSize(sampler, 0).x > 0
它来检测与sampler关联的有效纹理的存在,但这可能会导致未定义的行为。textureQueryLevels(gsampler2D sampler)
没有与sampler关联的纹理,则返回 0 。你应该采取另一种方式吗?我是这么认为的:与其在着色器中做出决定,不如简单地绑定一个 1x1 像素的“白色”纹理并无条件地对该纹理进行采样并将结果与 color相乘,这显然会返回1.0 * color
。这也将更便携、更快。