XNA HLSL排除纹理?

我正在通过HLSL教程,我有照明和纹理设置。 在我的着色器中,我使用了一个纹理,但是如果我把这个variables留空,它会给我一个错误。 我的一半模型有纹理,另一半没有,有没有办法“跳过”没有它们的模型的纹理部分,并将其设置为不需要完全分离着色器的模型只涉及照明?

而且,当我问这个问题时,是否已经饱和并且规范了同样的事情?

谢谢

你将不得不使用两个单独的着色器来实现这一点。 可能最好的方法是添加预处理器指令,以便在定义某个符号时删除纹理代码,即:

#if USE_TEXTURES //texturing sctuff here #endif 

这样可以更轻松地维护会影响着色器的更改。

没有办法“跳过”纹理,但是如果你不想做两个单独的着色器,你可以简单地创建一个1×1的白色纹理,并将其用于所有的非纹理模型。