我的模型资源没有纹理,我厌倦了在没有照明的情况下将它们渲染为黑色。这是因为如果纹理 id 0 被绑定(bind)并且我询问采样器它告诉我它是黑色的。后来导致 0 * 照明,使整个对象在没有照明的情况下变黑。理想情况下,我希望它有颜色、 Material 和光照(如果我们不将其乘以 0,就会发生这种情况)
我考虑过使用 uniform
标志并针对每个对象切换它,但如果我们稍后需要部分纹理的资源,我希望有一种更简单、更高性能的方法。
我也曾绑定(bind)过白色纹理,例如插入白色像素并将其设置为换行,但这看起来像“Chi Ting”。
注意。有效的纹理可能会返回黑色,因此我们不能忽略黑色纹理读取。好吧,我们可以,但看起来不太好。目前我们没有使用任何缓冲区对象,仅使用已弃用的带有显示列表的 glBegin()
glEnd()
方法。
任何其他想法将不胜感激。
最佳答案
使用空的白色纹理。它会像使用制服一样快,而且您不必处理额外的情况。
如果您真的担心速度,请将纹理合并为一个,为无纹理的部分留下一小块白色区域。更改 texCoords 比更改纹理或制服快得多。
关于opengl - 在 GLSL 中如何判断事件纹理是否为纹理 id 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6174289/