0

In my OpenGL program I read from the header file to find out the geometry size and then malloc an Indice array and a Vertex array which I then pass to the VBO, is it even possible to read directly from the hard drive or is the GPUs memory linked to the computer's RAM only?

4

1 回答 1

3

GPU 不直接连接到系统 RAM。中间有一条总线,在当前一代计算机中是一条 PCI-Express 总线。ATA 存储之间有一个控制器。记忆之间没有直接的联系。

但是有DMA,它允许某些外围设备通过DMA通道直接访问系统内存。PCI-Express 上的 DMA 也可以在外围设备之间工作。从理论上讲,GPU 可以对 ATA 控制器进行 DMA。

实际上这用处不大!为什么?因为文件系统。即使有某种驱动程序支持让 GPU 直接访问存储外围设备,它仍然必须完成所有文件系统业务,这并没有达到 GPU 设计的并行程度。


唉,关于你的问题:

在我的 OpenGL 程序中,我从头文件中读取几何大小,然后 malloc 一个 Indice 数组和一个 Vertex 数组,然后将其传递给 VBO,甚至可以直接从硬盘驱动器读取还是 GPU 内存只连接到计算机的RAM?

为什么不简单地对这些文件进行内存映射?这样你就可以避免分配你第一次读入的缓冲区,并将内存映射文件指针传递给 OpenGL 确实允许驱动程序在存储驱动程序缓冲区和 GPU 之间实际执行 DMA 传输,它尽可能接近你原来的要求。当然,存储设备上的数据必须准备好适合GPU的格式,否则就没多大用处。如果它需要一些预处理,最好使用 CPU。GPU 不喜欢序列化数据。

于 2013-06-27T14:30:48.970 回答