如何在GLSL中判断活动纹理是否为纹理ID 0?

Ena*_*ane 5 opengl textures lighting glsl

我的模型资产没有纹理,我厌倦了将它们渲染为没有光照的黑色.这是因为如果纹理id 0被绑定,我问采样器它告诉我它的黑色.后来导致0*照明使整个物体变黑而没有照明.理想情况下,我希望它有颜色,有效和点亮(如果我们不将它乘以0,就会发生这种情况)

我已经考虑过使用一个uniform标志并为每个对象切换它,但如果我们稍后需要部分纹理化资源,我希望有一个更简单的更高性能方式.

我也有绑定白色纹理推白色像素并将其设置为包裹,但这看起来像"Chi Ting".

注意.有效纹理可能会返回黑色,因此我们不能忽略黑色纹理读取.好吧,我们可以,但它看起来不会很好.目前我们没有使用任何缓冲区对象,只是使用glBegin() glEnd()显示列表的已弃用方法.

任何其他想法将不胜感激.

Pio*_*zmo 6

使用空白纹理.它将与使用制服一样快,您不必处理额外的情况.

如果您真的担心速度,请将您的纹理合并为一个,留下小的白色区域以获得无纹理的部分.改变texCoords比改变纹理或制服要快得多.