在OpenGL中如何在GPU上访问纹理数据?

use*_*465 5 opengl texture-mapping glteximage2d multitexturing

我不完全理解在GPU上访问纹理数据的方式.如果可能的话 - 有人能解释一下吗?

  1. 当纹理单元的数量有限时,这是否会限制我可以使用生成的纹理数量glGenTextures()并使用上传到GPU glTexImage2D()?或者它只限制可以绑定的纹理单元的数量glBindTexture()

  2. 我真正想做的是能够将我的所有纹理上传到GPU - 即使有超过可用纹理单元的数量.当需要纹理时,我只需使用它将其绑定到纹理单元glBindTexture().这可能吗?

Ine*_*ion 4

广告。1. 纹理单位等于您可以同时绑定的纹理数量。

广告。2. 这正是正确的方法 - 您可以上传任意数量的纹理,并仅绑定当前绘制调用所需的纹理。GPU 驱动程序的工作之一是自动将所需的数据(即当前绑定的纹理的纹素)分页到 GPU 和系统的 RAM 或从 GPU 和系统的 RAM 分页。