gpt4 book ai didi

c++ - 从 .raw 文件加载 3D 字节数组

转载 作者:行者123 更新时间:2023-11-30 18:02:12 25 4
gpt4 key购买 nike

As in my previous question ,我有兴趣将卷数据集的 .raw 文件加载到字节数组中。我认为使用 3D 字节数组会使索引 X、Y、Z 坐标时变得更容易,但我不确定用于加载卷的读取大小。这个大小声明可以让我正确索引卷数据吗?

int XDIM=256, YDIM=256, ZDIM=256;
const int size = XDIM*YDIM*ZDIM;
bool LoadVolumeFromFile(const char* fileName) {

FILE *pFile = fopen(fileName,"rb");
if(NULL == pFile) {
return false;
}

GLubyte* pVolume=new GLubyte[XDIM][YDIM][ZDIM];
fread(pVolume,sizeof(GLubyte),size,pFile); // <-is this size ok?
fclose(pFile);

最佳答案

从您发布的代码来看,fread() 调用似乎是安全的,但请考虑 3D 字节数组是否是数据结构的最佳选择。

我假设您正在使用 GLubyte 进行某种渲染。当然,要进行任何渲染,您需要访问 3D 空间中定义的顶点。这将导致:

pVolume[vertIndex][vertIndex][vertIndex]  

这会不断地导致你的缓存受到打击。内存将首先布置所有 x,然后是所有 y,最后是所有 z。因此,每次从 x 跳到 y 再跳到 z 时,您可能会遇到缓存未命中并且性能非常慢。

关于c++ - 从 .raw 文件加载 3D 字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9383964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com