首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL负责GPU内存碎片吗?

OpenGL负责GPU内存碎片吗?
EN

Stack Overflow用户
提问于 2018-02-13 16:39:17
回答 1查看 835关注 0票数 1

因此,基本上,每当我创建缓冲区对象时,Opengl就会在GPU上分配一些内存。

考虑场景1,其中我为两个统一变量生成了2个统一缓冲区。

现在考虑场景2,其中我创建了一个缓冲区,并将2个统一变量封装在一个接口块中。

我的理解是,对于场景1,两个独立的内存区域得到分配,而对于场景2,则分配一个大的连续内存块。如果是这样的话,那么场景1可能容易受到内存碎片的影响,如果发生这种情况,它是由OpenGL管理的,还是应该在编写性能关键代码之前记住这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-13 17:14:51

实际上我得帮你解决这个问题。它是

所以,基本上,每当我创建缓冲区对象,Opengl就会分配一些内存。

你不知道--而且假设是无效的--关于这个记忆所在的位置。你只要得到保证,它就在那里(某处),你可以利用它。

由OpenGL或其他什么管理

是。事实上,合理的OpenGL实现确实必须定期地移动数据。想想看:在现代计算机系统中,有几个应用程序确实并行地使用GPU,而进程(通常)都不关心或尊重在同一台机器上驻留的其他进程的内部工作。然而,用户(自然)期望,所有流程都将“正常工作”,而不依赖于这种情况。

GPU驱动程序在后台进行大量数据推送,在系统内存、GPU内存之间移动数据,甚至在存储设备上交换空间,而进程却没有注意到这一点。

或者在编写性能关键代码之前,我们应该记住这一点吗?

普通程序员只需简单地使用OpenGL API就可以获得最好的性能,而不会试图超越实现。每个OpenGL实现(= GPU模型+驱动程序版本的组合)都有“快速路径”,但是无法访问到关于GPU和驱动程序细节的详细信息,这些信息很难实现。

通常只有GPU制造商自己才有这方面的知识;如果你是一个AAA游戏工作室,你通常会有几个GPU供应商在快速拨号上来拜访你的办公室,做他们的巫毒术;大多数访问这个网站的人可能不知道。

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

https://stackoverflow.com/questions/48771540

复制
相关文章

相似问题

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