Mar*_*ark 8 opengl graphics textures
OpenGL SuperBible讨论了纹理缓冲对象,这些对象是由VBO内的数据构成的纹理.看起来使用它们有好处,但我发现的所有示例都创建了常规纹理.有没有人对何时使用其中一个有任何建议?
根据扩展注册表,纹理缓冲区只是一维的,不能进行任何过滤,必须通过访问显式纹素(通过索引)来访问,而不是标准化的[0,1]浮点纹理坐标.因此,它们并不是常规纹理的替代品,而是大型统一数组(例如,蒙皮矩阵或每个实例数据).将它们与统一缓冲区进行比较比使用常规纹理更有意义,就像这里所做的那样.
编辑:如果您想将VBO数据用于常规的,过滤的2D纹理,您将无法绕过数据副本(最好通过PBO完成).但是当你只想要对VBO数据进行普通数组访问并且属性不足以满足要求时,那么纹理缓冲区应该是首选方法.
编辑:在检查了SuperBible中的相应章节之后,我发现他们一方面提到,纹理缓冲区总是一维的并且通过离散整数纹素偏移来访问,但另一方面没有明确提到缺少过滤.在我看来,他们或多或少地将它们作为纹理宣传,只是从缓冲区中获取数据,这解释了OP的问题.但如上所述,这只是错误的比较.纹理缓冲区只是提供了一种直接访问着色器中缓冲区数据的方式,以简单数组的形式(虽然具有可调节的元素类型),而不是更多(使它们对常规纹理无用),但也不是更少(它们仍然是一个很好的功能) ).