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