Opengl 如何判断活动纹理是否为GLSL中的纹理id 0?

Opengl 如何判断活动纹理是否为GLSL中的纹理id 0?,opengl,glsl,textures,lighting,Opengl,Glsl,Textures,Lighting,我有未设置纹理的模型资源,我厌倦了在没有照明的情况下将它们渲染为黑色。这是因为如果纹理id 0被绑定,我问采样器它告诉我它是黑色的。稍后将导致0*照明,使整个对象在没有照明的情况下变为黑色。理想情况下,我希望它着色、材质和照明(如果我们不将其乘以0,就会发生这种情况) 我曾考虑过使用统一标志并对每个对象进行切换,但如果以后需要部分纹理化的资源,我希望使用一种更简单、性能更高的方法 我也曾想过绑定一个白色纹理,比如推一个白色像素,然后将其设置为包裹,但这看起来像是“Chi-Ting” 注意。有效的

我有未设置纹理的模型资源,我厌倦了在没有照明的情况下将它们渲染为黑色。这是因为如果纹理id 0被绑定,我问采样器它告诉我它是黑色的。稍后将导致0*照明,使整个对象在没有照明的情况下变为黑色。理想情况下,我希望它着色、材质和照明(如果我们不将其乘以0,就会发生这种情况)

我曾考虑过使用
统一
标志并对每个对象进行切换,但如果以后需要部分纹理化的资源,我希望使用一种更简单、性能更高的方法

我也曾想过绑定一个白色纹理,比如推一个白色像素,然后将其设置为包裹,但这看起来像是“Chi-Ting”

注意。有效的纹理可能会返回黑色,因此我们不能忽略黑色纹理读取。嗯,我们可以,但看起来不太好。目前我们没有使用任何缓冲区对象,只使用了不推荐的带有显示列表的
glBegin()
glEnd()
方法


任何其他想法都将不胜感激。

在我自己学习openGL的尝试中,我按照您的建议使用了布尔统一

使用纹理或具有固定颜色是每个模型对象的属性,这是有意义的;因此,通过统一设置每个对象的着色器上的此属性似乎是合乎逻辑的,不涉及“欺骗”


如果它让您感觉更好,您可以将纹理(如果有)作为对象的属性,并根据其存在或不存在来设置制服,而不是通过使用纹理属性和纹理/非纹理标志来复制信息。

使用空白色纹理。这将和穿制服一样快,而且你不必处理额外的案件


如果你真的担心速度,把你的纹理组合成一个,留下一个小的白色区域给没有纹理的部分。更换texCoords比更换纹理或制服快得多。

chi ting有什么问题,这不是物理,而是计算机图形?使用1x1白色纹理是最简单的方法。