有没有办法用纯色初始化或重置 OpenGL 纹理?我可以使用最高 OpenGL 4.0 的功能,因为我想支持笔记本的 Intel HD Graphics 4000。
4 回答
如果您从它的单元/采样器对象中取消绑定纹理,它的纹理访问将全部显示为白色。所以我建议你简单地添加一个统一的颜色调制。如果您需要纯色,请取消绑定纹理并将该颜色统一设置为您想要的任何颜色。
但坦率地说,在我看来,就像您想重新实现 OpenGL 固定功能管道一样,您有大量的开关来获得您想要的效果。我们终于摆脱了它,现在你想转世这个祸根?
虽然你说你最多可以使用 GL 4.0(并且你得到了一些答案),但我仍然想指出,从 GL 4.4 开始,还有glClearTexImage()
.
与此相关的 OpenGL 扩展是ARB_clear_texture
. 据说 Intel HD 4000 支持 GL4.0,但随着更新的驱动程序,许多扩展实现了 4.1、4.2 和 4.3 级别功能的扩展。但是,我还没有找到任何声称英特尔已开始实施 4.4 级功能的消息来源。我发现的最新消息来源OpenGL feature matrix from february 2014
表明英特尔 des 尚不支持该功能。但我发现未来的驱动程序版本很可能支持此扩展。
也许您可以使用帧缓冲区。您可以将其与纹理链接并在帧缓冲区上绘制您想要的内容。如果后备在起作用,则将帧缓冲区清除为所需的颜色。
然后将帧缓冲区绘制为纹理。
您可以通过使用glTexSubImage2D将颜色数据复制到已创建的纹理中并为其提供完整的纹理尺寸来做到这一点。不同的是,这不会创建新缓冲区,而只会更新它。