目录
一:概述:
二:相关API介绍
三:代码完整注释
一: 概述:
什么是无绑定纹理(bindless texture)?无绑定纹理是OpenGL的一项技术,旨在消除传统的纹理绑定操作。这项技术允许着色器直接访问纹理而不需要显式地将纹理绑定到某个纹理单元,从而减少了渲染管线中的开销。
在引入无绑定纹理之前,当我们想在着色器中使用纹理时,我们会将其绑定到一个纹理单元,并通过一个样本类型的统一变量(例如 sampler2D
, samplerCube
)表示该纹理单元。这个样本变量与某个纹理单元相关联,而这种关联形成了对底层纹理的间接引用。这样做有两个重要的相关副作用:
一:单个着色器可以访问的纹理数量受到OpenGL驱动程序所支持的纹理单元数量的限制。在OpenGL 4.5中,每个阶段的最低要求是16个单元。尽管一些实现支持每个阶段32个单元或更多,但这仍然是一个相对较小的数量。
二:应用程序需要在每次绘制之间花费时间进行纹理的绑定和解绑。这使得将本可以使用相同状态的绘制操作