我正在使用openGL创建一个图像查看器,我遇到了需要加载非常大(> 50MB)图像才能查看的情况。我正在将图像作为纹理加载并将它们显示到GL_QUAD,这对于较小的图像效果很好,但在大图像上加载失败并得到一个空白矩形。到目前为止,我已经实现了一个非常丑陋的黑客,它使用另一个程序将图像转换为可以加载的更小,更低分辨率的版本,但我正在寻找更优雅的解决方案。我发现openGL有一个texture compression feature,但我无法让它工作。当我打电话
glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ARB, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits());
我收到编译器错误“ GL_COMPRESSED_RGBA_ARB 未声明”。我究竟做错了什么?我有遗失的图书馆吗?更一般地说,这是解决我问题的可行方法吗?
我在Windows Vista机器上使用Qt Creator,配有NVIDIA Quadro FX 1700显卡。
答案 0 :(得分:2)
在我自己的GFX卡上,opengl纹理的最大分辨率是8192x8192,如果你的图像大于50MB,那么它的分辨率非常高...... 检查http://www.opengl.org/resources/faq/technical/texture.htm,它描述了如何找到最大纹理大小。
答案 1 :(得分:1)
首先,我要问这些大图像的分辨率是多少?其次,要使用诸如GL_COMPRESSED_RGBA_ARB之类的定义,您需要下载并使用GLEW之类的东西,它在GL api中比标准的MS-Dev安装更现代化。