0

我有一个 OpenGL 2.1 应用程序,其中用户可以加载多个图像,这些图像的宽度和高度可以不同,作为纹理,以便在屏幕上它们各自的四边形对象上呈现。

我最初是在渲染它们之前立即预加载所有图像,但是当用户决定加载数百个,在极少数情况下加载数千个时,就会出现问题,这会导致 RAM 的使用率非常高。我还在将位图容器转换为纹理后立即取消分配,仅供参考。此外,我尝试根据要渲染到的各自四边形的大小来减小图像的大小。但这似乎只是用绷带解决问题,因为用户有可能加载更多图像并加载更多四边形对象;因此更多的内存。

Sans限制了他们可以上传多少图像,我不知道如何正确管理纹理。我还阅读了有关使用像素缓冲区对象的技术:将图像数据传输到缓冲区-> 在一个可重复使用的纹理上渲染,重复过程。但是我对如何从那里开始有点困惑,因为似乎有一个假设,即所有图像在更新纹理之前必须具有相同的大小。还有性能损失的可能性,例如在将图像作为纹理上传到 OpenGL 的过程中帧速率急剧下降。不过,我非常愿意被证明是错误的。

任何人都可以阐明这个问题或指出我正确的方向吗?

4

0 回答 0