在我的OpenGL程序中,我从头文件中读取以找出几何尺寸,然后malloc一个Indice数组和一个Vertex数组然后传递给VBO,它是否可以直接从硬盘读取或者是GPU内存只链接到计算机的RAM?
答案 0 :(得分: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不喜欢序列化数据。