As in my previous question, Я заинтересован в загрузке .raw файла массива томов в массив байтов. Я думаю, что использование трехмерного байтового массива упростит индексирование координат X, Y, Z, но я не уверен в размере чтения, который должен использовать для загрузки тома. Будет ли это объявление размера позволять мне правильно индексировать данные тома?Загрузка трехмерного байтового массива из .raw-файла
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);
Строго говоря, ваш пример кода - это C++, а не C (поскольку он использует 'new'). Этот размер будет считывать достаточное количество байтов из файла, чтобы заполнить * pVolume, если в файле достаточно данных. Но я мог бы объявить его как 'size = sizeof (GLubyte [XDIM] [YDIM] [ZDIM])' на всякий случай, если вы когда-либо измените тип данных 16, 32, n-бит. –