首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在opengl (大于MAX_TEXTURE_SIZE)的大图像中创建纹理

如何在opengl (大于MAX_TEXTURE_SIZE)的大图像中创建纹理
EN

Stack Overflow用户
提问于 2013-08-29 15:09:26
回答 1查看 3.9K关注 0票数 1

我发现opengl所能支持的最大纹理大小是8192,但是我正在处理的图像是16997x15931。正如您在这个链接中所看到的,我已经完成了类COpenGLControl,并为自己的使用定制了它,以处理一个较小的7697x7309映像,并为它激活了不同的导航任务。

在OpenGL中的2D纹理顶部呈现一个勾勒出的红色矩形

但是现在在最后的工作阶段,我决定改变应用纹理的部分,使它能够处理大于8192大小的图像。

问题:

  • 在我的opengl中有可能吗?
  • 我应该研究什么概念的地图,多重纹理?
  • 它会扩展代码的性能吗?

现在,我的程序只使用271 MB的ram来显示这个小图像(7697x7309),我将向它添加一个任务(用于图像处理过滤进程),我已经尽了全力优化代码,但是它使用了376 MB的ram来处理(7697x7309)映像(代码已经作为控制台应用程序编写,将与该项目相结合)。因此,我认为最终的项目将消耗高达700 MB的内存来获取接近7000x7000大小的图像。显然,对于更大的图像(16997x15931 ),拉姆的使用将更高!

因此,我正在寻找一个概念来处理比更大的图像,并优化程序的性能。

更多问题:

  • 为了实现上述目标,我应该在OpenGL中学习什么概念?
  • 解释一下你建议的概念?

我也在游戏发展上问过这个问题,但是决定在这里重复这个问题,也许它会有更多的观众。一旦我得到答案,我将删除这两个网站的问题。所以不要担心多个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-29 18:02:15

我会尽量总结我对原来问题的意见。

  • 了解正确的opengl版本:也许您可以加载一些现代扩展,甚至可以使用最新版本的opengl。
    • 如果有可能,您可以查看稀疏纹理(Mega纹理):纹理纹理

  • 为了减少内存,可以使用一些纹理压缩:
    • 如何:在OpenGL中加载DDS文件。

  • 另一个简单的想法:你可以分割巨大的纹理,创建4个较小的纹理(从16kx16k变成4个8kx8k),并以某种方式呈现四个方块。
  • 也许你可以用OpenCL或CUDA来做这项工作?
  • 关于 mipmap :它是输入纹理的较小版本的集合,mipmap提高了过滤的性能和最终质量,但是对于具有完整mipmap链的纹理,还需要再多33%的内存。在你的情况下,它们可能会很有帮助。例如,当你从很远的地方看墙时,你不需要使用完整的(大的)纹理.只要一小版就够了。地图上的g-truc

一般来说,有很多选项,但这取决于您的经验,什么是更简单和最快的实现。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18514672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档