【发布时间】:2013-08-30 02:28:23
【问题描述】:
我发现我的 opengl 可以支持的最大纹理大小是 8192,但我正在使用的图像是 16997x15931。正如您在此链接中看到的那样,我已经完成了 COpenGLControl 课程并对其进行了自定义,以使用较小的 7697x7309 图像并为其激活不同的导航任务。
Render an outlined red rectangle on top a 2D texture in OpenGL
但现在在工作的最后阶段,我决定更改应用纹理的部分,使其能够处理大于 8192 尺寸的图像。
问题:
- 在我的 opengl 中可以吗?
- 我应该研究什么概念mipmaps,多重纹理?
- 它会扩展代码的性能吗?
现在我的程序使用 271 MB 的内存来显示这个小图像(7697x7309),我将向它添加一个任务(用于图像处理过滤过程),我已经竭尽全力优化代码,但它为 (7697x7309) 图像使用 376 MB 的内存(代码已经编写为控制台应用程序将与此项目结合使用)。所以我认为最终的项目将使用高达 700 MB 的内存来存储接近 7000x7000 大小的图像。显然对于更大的图像(16997x15931),ram 的使用会更高!
所以我正在寻找一个概念来处理大于 MAX_TEXTURE_SIZE 的图像并优化程序的性能
更多问题:
- 我应该在 OpenGL 中学习什么概念来实现上述目标?
- 解释一下您建议的概念?
我也在Game Developement 中问过这个问题,但决定在这里重复这个问题,也许它会有更多的观众。一旦我得到答案,我将从任何一个网站上删除问题。所以不用担心多次提问。
【问题讨论】:
-
MegaTextures 怎么样? opengl.org/registry/specs/AMD/sparse_texture.txt 和这里 renderingpipeline.com/2012/03/…
-
我没有使用现代 OpenGL,你看我在课堂上使用的是旧的 WGL API,因为我已经习惯了。像the comments for this answer say 说的那样,不推荐使用的OpenGL 是否支持Mega Textures? @芬
-
你能检查一下你的硬件支持什么opengl版本吗?现代 opengl 是通过使用扩展来启用的,动态加载。如果您不能使用巨型纹理,那么您可以拥有 4 个由巨大纹理的一部分创建的纹理。然后在应用程序中,您必须管理它们。还要寻找一种压缩机制,如 DXT 纹理和压缩(也通过 opengl 扩展支持)
-
你能指导我如何检查版本吗?我正在使用窗口 7x64
标签: performance opengl mfc textures mipmaps