我发现我的opengl可以支持的最大纹理尺寸是8192,但是我使用的图像是16997x15931。正如您在此链接中看到的,我已完成课程COpenGLControl并将其定制为供我自己使用,以使用较小的7697x7309图像并为其启动不同的导航任务。如何从opengl中的大图像创建纹理(大于MAX_TEXTURE_SIZE)
Render an outlined red rectangle on top a 2D texture in OpenGL
,但现在在工作的最后阶段,我决定改变,其中适用纹理的部分,使其能够处理更大的图像比大小8192
问题:
- 在我的opengl中可能吗?
- 什么概念我应该学习mipmap,多重纹理?
- 它会扩展代码的性能吗?
现在我的程序使用271 MB RAM的只是显示这个小图像(7697x7309)和我将任务添加到它(图像处理过滤过程),我用我所有的努力以优化代码,但它使用376 MB的RAM(7697x7309)图像(该代码已被编写为控制台应用程序将与此项目结合使用)。所以我认为最后的项目会在7000x7000尺寸附近使用高达700 MB的RAM。显然对于更大的图像(16997x15931),ram的使用将会更高!
所以我在寻找一个概念来处理比MAX_TEXTURE_SIZE更大的图像,同时优化了程序的性能
更多的问题:
- 我应该在OpenGL的学习理念是什么要达到上述目标吗?
- 解释一下你建议的概念吗?
我的问题的Game Developement太多,但决定在这里重复的问题也许就会有更多的观众。只要我得到答案,我会从网站上删除问题。所以不要担心多个问题。
MegaTextures呢? http://www.opengl.org/registry/specs/AMD/sparse_texture.txt和这里http://renderingpipeline.com/2012/03/partially-resident-textures-amd_sparse_texture/ – fen
我不使用现代的OpenGL和你看我在我的课堂上使用旧的WGL API,因为我已经习惯了。是否支持在不赞成的OpenGL作为[这个答案的评论说](http://stackoverflow.com/a/18478717/1245120)说的? @fen – sepideh
你能检查你的硬件支持哪些opengl版本吗?现代的opengl通过使用扩展来启用,动态加载。如果你不能使用超级纹理,那么你可以有4个纹理是从你的巨大纹理的一部分创建的。然后在应用程序中,你必须管理它们。同时寻找压缩机制,如DXT纹理和压缩(也支持通过opengl扩展) – fen