什么叫顶点缓存?“缓存”二字让我至今不明不白。

yrisxfyh 2010-01-27 10:22:24
学到现在,仍然对顶点缓存一知半解,这甚至直接影响了我对D3D的感性认识。
我是自学过来的,电脑知识的学习对我来说,只有书和网络,所以还请莫见怪。
这世界就是这样,充满了太多的联系性。一个问题,不单纯,一件事情不单纯。

刚刚又看了下龙书关于顶点缓存的描述:
“一个顶点缓存是一个包含顶点数据的连续内存空间”、
“顶点缓存和索引缓存可以被放置在显存中”、
“动态缓存一般放置在AGP存储区中”……

内存空间?这内存就是那张内存条?
显存?又放到了显存。。
AGP?又放到了AGP显存里。

那么问题就是“缓存”二字了,从我学C++的时候,就遇到过“buffer”一词,虽然查过,知道是等于一片内存区域。
(假如我定义一个:int a[] = {1,2,3}; 那这里可以说是开辟了一个缓存给a?如果是int a = 10; 呢?)
然而“缓存”所给我更多的只是一知半解。

我又翻了一下《深入理解计算机系统》,发现“缓存”二字,感觉就是存储空间。也就是说,缓存可以按如下方式描述:

enum 缓存 {
CPU寄存器,
芯片上的L1高速缓存,
芯片上的L2高速缓存,
内存,
显存,
AGP显存,
磁盘
};


请问,在我们学的D3D中,应该如何解释?如何理解?
...全文
860 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
顺德涛仔 2011-10-13
  • 打赏
  • 举报
回复
本人也是刚接触图形学和DirectX,有些后台缓冲区,纹理缓存也请教各位
gameice 2010-01-27
  • 打赏
  • 举报
回复
D3D来说,与显卡设备交互,那你的操作当然是在显存里运行,有了结果或是指令再通知显卡。

或许可以理解成,你老婆让你回家之后给他一个电话,告知他你回家了,如果你老婆没有特殊的要求,你不需要每走一步就告诉她,你走了一步,只要到达的时候告知即可。


可能我解释的也不是很明白。呵呵.

看你的枚举 逻辑有些乱了

实际上是内存中存在一部分操作空间叫做缓存(如果喊成缓冲内存是不是明白?),和硬盘没有关系,外部设备只保存最终数据. 比如内存操作的结果。
gameice 2010-01-27
  • 打赏
  • 举报
回复
显存 如果有独立显卡 指的是你的显卡上所带的内存 因为专供显卡自身使用 名曰显卡内存,顾名思义了,自热就不难理解了吧?

内存则指的是供给计算机全局使用的内存。

没有独立显卡的电脑, 计算机会将一部分内存划分为显示需要用的内存,以此来保证显示性能;此外如果独立显卡自带的显示内存满载,无法继续供给,那么系统会支援其一部分内存来保证显卡的工作。

缓存,临时内存空间的概念。比如你要操作一部分数据,因为你在这段应用内会频繁操作,所以直接将其暂时放在内存里,用起来更效率,方便。等用完了,你再通知设备可以释放掉了。


它属于内存储器,硬盘等属于外部存储器,内部存储器负责供给计算机一些程序的供给。比如它将临时存储与CPU的计算数据,等待与外部存储设备的交换。


其实,关于这个概念,中学和大学的计算机基础教材,已经简单提及了...........
cluner 2010-01-27
  • 打赏
  • 举报
回复
我觉得没有必要很生硬的去理解概念。当你用多了,你自然就会理解!
比如,从硬件特性上看,你可以说内存=显存,但是使用上却不能简单的划等号。

还有就是不要太把书上的概念当回事,多自己尝试才能真正理解
比如:“一个顶点缓存是一个包含顶点数据的连续内存空间”就有问题, 没有谁规定顶点缓存一定是连续的内存空间,也可能是翻译错了。

gamedragon 2010-01-27
  • 打赏
  • 举报
回复
物理上都叫内存(RAM),用处不同而已。
这个内存放到显卡上,或是给显卡用,就叫显存。AGP显存(这个说法应该讲不太专业),就是通过显卡通过GP总线访问的内存。
打个比方,橡皮被做成轮胎,它就有了另外个名字叫轮胎。
yrisxfyh 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gamedragon 的回复:]
就是内存,可以是你主板上的内存条,也可以是显卡上的显存(实际也是内存)
[/Quote]

更加迷惘了。
那显存=内存? AGP显存=内存?
gamedragon 2010-01-27
  • 打赏
  • 举报
回复
就是内存,可以是你主板上的内存条,也可以是显卡上的显存(实际也是内存)
张赐 2010-01-27
  • 打赏
  • 举报
回复
就是内存空间
yrisxfyh 2010-01-27
  • 打赏
  • 举报
回复
哦。。
gamedragon 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yrisxfyh 的回复:]
这个世界就是这样充满太多的矛盾,有人跟我说,“lz找本书好好看看吧”,“那么多基础概念都不清楚”,
现在又说“没有必要很生硬的去理解概念”,“不要太把书上的概念当回事”,
关于看书,我是仔细看了,就是当时没仔细,遇到问题的时候,也还是仔细去查了。
然而问题还是没有得到解决。我尽了很多努力,代码测试,百度查找,可仍然解决不了。
于是我到论坛来提问了。或者一边查,以便来提问了……
[/Quote]
建议看英文书,memory,buffer,还有cache,在英文里都不一样,没那么容易搞混了。国人翻译的东西,有相当一部分极不规范,基本属于误人子弟的东西。
在这里问也是一样,大家回答的时候毕竟不是写书,想到哪儿说到哪儿,说的东西不一定严密,也有口语化倾向,碰上你这样较真的反倒更容易混淆。
hyq1986 2010-01-27
  • 打赏
  • 举报
回复
实际上Buffer的意思,比我上面说得更泛一些。
yrisxfyh 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hyq1986 的回复:]
一种叫Buffer,特点是时间换空间。比如你要把一个文件复制到另一张磁盘中。因为内存不够,就得多次读源文件,读一段写一段。那么暂存部分文件的存储空间就叫Buffer。
另一种叫Cache,特点是空间换时间。比如你要反复地使用某一个文件,但反复重读文件是要花掉很多磁盘IO时间的。这时,你把这个文件通过某种机制,让它常驻内存。这样,再次使用该文件时,就免除了磁盘IO消耗。这种目的的存储空间就叫Cache。
[/Quote]

理解。
hyq1986 2010-01-27
  • 打赏
  • 举报
回复
一种叫Buffer,特点是时间换空间。比如你要把一个文件复制到另一张磁盘中。因为内存不够,就得多次读源文件,读一段写一段。那么暂存部分文件的存储空间就叫Buffer。
另一种叫Cache,特点是空间换时间。比如你要反复地使用某一个文件,但反复重读文件是要花掉很多磁盘IO时间的。这时,你把这个文件通过某种机制,让它常驻内存。这样,再次使用该文件时,就免除了磁盘IO消耗。这种目的的存储空间就叫Cache。
xingzhe2001 2010-01-27
  • 打赏
  • 举报
回复
就是对buffer的翻译吧
yrisxfyh 2010-01-27
  • 打赏
  • 举报
回复
谢谢gameice
你的一些解释让我更加清楚了一些概念与区别。

顶点缓存应该就是如同一块肉一样,谁来啃,才能啃的有效率。
不管是用内存、显存还是AGP显存来处理这个所谓的“顶点缓存”数据,都是要站在不懂的效率上讲的。

顶点缓存原始状态是在内存里的。
但是这个“顶点缓存”数据可以放到显存上来处理,也可以放到AGP显存上来处理。
不知我这种理解是否正确。
yrisxfyh 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cluner 的回复:]
我觉得没有必要很生硬的去理解概念。当你用多了,你自然就会理解!
比如,从硬件特性上看,你可以说内存=显存,但是使用上却不能简单的划等号。

还有就是不要太把书上的概念当回事,多自己尝试才能真正理解
比如:“一个顶点缓存是一个包含顶点数据的连续内存空间”就有问题, 没有谁规定顶点缓存一定是连续的内存空间,也可能是翻译错了。


[/Quote]

这个世界就是这样充满太多的矛盾,有人跟我说,“lz找本书好好看看吧”,“那么多基础概念都不清楚”,
现在又说“没有必要很生硬的去理解概念”,“不要太把书上的概念当回事”,
关于看书,我是仔细看了,就是当时没仔细,遇到问题的时候,也还是仔细去查了。
然而问题还是没有得到解决。我尽了很多努力,代码测试,百度查找,可仍然解决不了。
于是我到论坛来提问了。或者一边查,以便来提问了……

我对自己的要求从来都是谨慎小心与严禁的,有一点学习上的问题,思想上的问题,情绪上的问题,我都会经常去反醒……

我只能说,我还会再尽力。

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧