我正在构建一个包含许多小纹理的OpenGL应用程序。我估计我会有几百个 任何特定时刻屏幕上的纹理。
有人可以推荐将所有这些纹理存储在内存中的最佳做法,以避免潜在的性能问题吗?
我也有兴趣了解OpenGL如何管理纹理。 OpenGL会尝试将它们存储到GPU内存中吗?如果是这样,我可以依靠多少GPU内存?如果没有,OpenGL多久会将纹理从应用程序内存传递到GPU,当发生这种情况时我应该担心延迟吗?
我正在使用OpenGL 3.3。我打算只使用现代功能,即没有立即模式的东西。
答案 0 :(得分:8)
GL_COMPRESSED_RGBA
的调用提供glTexImage2D
之类的内容,有关详细信息,请参阅man页面。当然,与往常一样,您最好的选择是在接近预期用例的情况下自行测试这些内容。 OpenGL提供了大量的保证,但很多都会因具体的实现而有所不同。